release 0.6pre0

This commit is contained in:
tildearrow 2022-04-01 04:45:06 -05:00
parent 4b436ef1fc
commit f7566455c2
36 changed files with 366 additions and 142 deletions

View file

@ -55,7 +55,7 @@ bool DivEngine::loadConf() {
logI("creating default config.\n");
return saveConf();
}
logI("loading config.\n");
logI("peepoHappy\n");
while (!feof(f)) {
String key="";
String value="";

View file

@ -114,6 +114,8 @@ const char* DivEngine::getEffectDesc(unsigned char effect, int chan) {
return "F9xx: Single tick volume slide down";
case 0xfa:
return "FAxx: Fast volume slide (0y: down; x0: up)";
case 0xfe:
return "FExx: Quit Furnace";
case 0xff:
return "FFxx: Stop song";
default:
@ -656,6 +658,10 @@ bool DivEngine::addSystem(DivSystem which) {
renderSamples();
reset();
BUSY_END;
if (which==DIV_SYSTEM_KONTAKT_5) {
lastError="Kontakt not installed or detected!\nPlease use the \"Set plugin path\" option in the Configure System menu first.";
return false;
}
return true;
}
@ -3006,7 +3012,7 @@ bool DivEngine::init() {
bool DivEngine::quit() {
deinitAudioBackend();
quitDispatch();
logI("saving config.\n");
logI("peepoLeave\n");
saveConf();
active=false;
delete[] oscBuf[0];

View file

@ -42,8 +42,8 @@
#define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock();
#define BUSY_END isBusy.unlock(); softLocked=false;
#define DIV_VERSION "dev74"
#define DIV_ENGINE_VERSION 74
#define DIV_VERSION "0.6pre0"
#define DIV_ENGINE_VERSION 75
// for imports
#define DIV_VERSION_MOD 0xff01

View file

@ -1788,6 +1788,16 @@ bool DivEngine::load(unsigned char* f, size_t slen) {
}
SafeWriter* DivEngine::saveFur(bool notPrimary) {
if (!notPrimary) {
for (int i=0; i<song.systemLen; i++) {
if (song.system[i]==DIV_SYSTEM_HDA || song.system[i]==DIV_SYSTEM_KONTAKT_5) {
logE("you're funny!\n");
lastError="The save option lets you down, runs around and deserts you.";
return NULL;
}
}
}
saveLock.lock();
int insPtr[256];
int wavePtr[256];

View file

@ -1060,10 +1060,11 @@ void DivEngine::processRow(int i, bool afterDelay) {
}
break;
case 0x00: // arpeggio
/*
chan[i].arp=effectVal;
if (chan[i].arp==0 && song.arp0Reset) {
chan[i].resetArp=true;
}
}*/
break;
case 0x0c: // retrigger
if (effectVal!=0) {
@ -1206,6 +1207,9 @@ void DivEngine::processRow(int i, bool afterDelay) {
chan[i].volSpeed=0;
}
break;
case 0xfe: // quit program
abort();
break;
case 0xff: // stop song
freelance=false;

View file

@ -94,7 +94,9 @@ enum DivSystem {
DIV_SYSTEM_YM2610B_EXT,
DIV_SYSTEM_SEGAPCM_COMPAT,
DIV_SYSTEM_X1_010,
DIV_SYSTEM_BUBSYS_WSG
DIV_SYSTEM_BUBSYS_WSG,
DIV_SYSTEM_HDA,
DIV_SYSTEM_KONTAKT_5
};
struct DivSong {

View file

@ -145,6 +145,10 @@ DivSystem DivEngine::systemFromFile(unsigned char val) {
return DIV_SYSTEM_YM2610B_EXT;
case 0xe0:
return DIV_SYSTEM_QSOUND;
case 0xfe:
return DIV_SYSTEM_HDA;
case 0xff:
return DIV_SYSTEM_KONTAKT_5;
}
return DIV_SYSTEM_NULL;
}
@ -274,6 +278,10 @@ unsigned char DivEngine::systemToFile(DivSystem val) {
return 0xde;
case DIV_SYSTEM_QSOUND:
return 0xe0;
case DIV_SYSTEM_HDA:
return 0xfe;
case DIV_SYSTEM_KONTAKT_5:
return 0xff;
case DIV_SYSTEM_NULL:
return 0;
@ -400,6 +408,10 @@ int DivEngine::getChannelCount(DivSystem sys) {
return 17;
case DIV_SYSTEM_BUBSYS_WSG:
return 2;
case DIV_SYSTEM_HDA:
return 1;
case DIV_SYSTEM_KONTAKT_5:
return 16;
}
return 0;
}
@ -683,6 +695,10 @@ const char* DivEngine::getSystemName(DivSystem sys) {
return "Seta/Allumer X1-010";
case DIV_SYSTEM_BUBSYS_WSG:
return "Konami Bubble System WSG";
case DIV_SYSTEM_HDA:
return "Realtek HD Audio";
case DIV_SYSTEM_KONTAKT_5:
return "Kontakt 5";
}
return "Unknown";
}
@ -814,6 +830,10 @@ const char* DivEngine::getSystemChips(DivSystem sys) {
return "Seta/Allumer X1-010";
case DIV_SYSTEM_BUBSYS_WSG:
return "Konami Bubble System WSG";
case DIV_SYSTEM_HDA:
return "Realtek HD Audio";
case DIV_SYSTEM_KONTAKT_5:
return "Chip? What chip?";
}
return "Unknown";
}
@ -1180,6 +1200,8 @@ const char* DivEngine::getChannelName(int chan) {
case DIV_SYSTEM_SEGAPCM:
case DIV_SYSTEM_SEGAPCM_COMPAT:
case DIV_SYSTEM_X1_010:
case DIV_SYSTEM_HDA:
case DIV_SYSTEM_KONTAKT_5:
return chanNames[28][dispatchChanOfChan[chan]];
break;
case DIV_SYSTEM_PCSPKR:
@ -1324,6 +1346,8 @@ const char* DivEngine::getChannelShortName(int chan) {
case DIV_SYSTEM_SEGAPCM:
case DIV_SYSTEM_SEGAPCM_COMPAT:
case DIV_SYSTEM_X1_010:
case DIV_SYSTEM_HDA:
case DIV_SYSTEM_KONTAKT_5:
return chanShortNames[28][dispatchChanOfChan[chan]];
break;
case DIV_SYSTEM_PCSPKR:
@ -1464,6 +1488,8 @@ int DivEngine::getChannelType(int chan) {
case DIV_SYSTEM_SEGAPCM:
case DIV_SYSTEM_SEGAPCM_COMPAT:
case DIV_SYSTEM_QSOUND:
case DIV_SYSTEM_HDA:
case DIV_SYSTEM_KONTAKT_5:
return chanTypes[28][dispatchChanOfChan[chan]];
break;
case DIV_SYSTEM_PCSPKR:
@ -1605,6 +1631,8 @@ DivInstrumentType DivEngine::getPreferInsType(int chan) {
case DIV_SYSTEM_SEGAPCM:
case DIV_SYSTEM_SEGAPCM_COMPAT:
case DIV_SYSTEM_QSOUND:
case DIV_SYSTEM_HDA:
case DIV_SYSTEM_KONTAKT_5:
return chanPrefType[28][dispatchChanOfChan[chan]];
break;
case DIV_SYSTEM_PCSPKR: