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_END isBusy.unlock(); softLocked=false;
#define DIV_VERSION "dev127"
#define DIV_ENGINE_VERSION 127
#define DIV_VERSION "dev128"
#define DIV_ENGINE_VERSION 128
// for imports
#define DIV_VERSION_MOD 0xff01
#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
ds.systemFlags[0].set("enoughAlready",true);
if (ds.system[0]==DIV_SYSTEM_GB) {
ds.systemFlags[0].set("enoughAlready",true);
}
logI("reading module data...");
if (ds.version>0x0c) {
@ -966,6 +968,11 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
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));
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();
BUSY_BEGIN_SOFT;
saveLock.lock();

View File

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

View File

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

View File

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

View File

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

View File

@ -80,6 +80,14 @@ bool FurnaceGUIFileDialog::openLoad(String header, std::vector<String> filter, c
if (opened) return false;
saving=false;
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());
if (sysDialog) {
#ifdef USE_NFD
@ -145,6 +153,14 @@ bool FurnaceGUIFileDialog::openSave(String header, std::vector<String> filter, c
if (opened) return false;
saving=true;
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());
if (sysDialog) {
#ifdef USE_NFD