system master race

This commit is contained in:
tildearrow 2022-02-23 21:53:07 -05:00
parent 957c2b84b6
commit ccfed873e8
3 changed files with 28 additions and 4 deletions

View File

@ -219,6 +219,10 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
addWarning("Master System FM expansion is not emulated yet. wait for 0.6!");
}
if (ds.system[0]==DIV_SYSTEM_NES_VRC7) {
addWarning("Konami VRC7 is not emulated yet. wait for 0.6!");
}
logI("reading pattern matrix (%d)...\n",ds.ordersLen);
for (int i=0; i<getChannelCount(ds.system[0]); i++) {
for (int j=0; j<ds.ordersLen; j++) {
@ -265,7 +269,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
ins->type=DIV_INS_PCE;
ins->std.volMacroHeight=31;
}
if (ds.system[0]==DIV_SYSTEM_SMS_OPLL) {
if ((ds.system[0]==DIV_SYSTEM_SMS_OPLL || ds.system[0]==DIV_SYSTEM_NES_VRC7) && ins->type==DIV_INS_FM) {
ins->type=DIV_INS_OPLL;
}
@ -320,7 +324,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
ins->fm.op[j].vib=reader.readC();
ins->fm.op[j].ws=reader.readC();
} else {
if (ds.system[0]==DIV_SYSTEM_SMS_OPLL) {
if (ds.system[0]==DIV_SYSTEM_SMS_OPLL || ds.system[0]==DIV_SYSTEM_NES_VRC7) {
if (j==0) {
ins->fm.opllPreset=reader.readC();
} else {
@ -331,7 +335,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
}
}
if (ds.version>0x03) {
if (ds.system[0]==DIV_SYSTEM_SMS_OPLL) {
if (ds.system[0]==DIV_SYSTEM_SMS_OPLL || ds.system[0]==DIV_SYSTEM_NES_VRC7) {
ins->fm.op[j].ksr=reader.readC();
ins->fm.op[j].vib=reader.readC();
ins->fm.op[j].ksl=reader.readC();
@ -672,6 +676,11 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
ds.system[0]=DIV_SYSTEM_SMS;
ds.system[1]=DIV_SYSTEM_OPLL;
}
if (ds.system[0]==DIV_SYSTEM_NES_VRC7) {
ds.systemLen=2;
ds.system[0]=DIV_SYSTEM_NES;
ds.system[1]=DIV_SYSTEM_VRC7;
}
if (active) quitDispatch();
isBusy.lock();

View File

@ -41,6 +41,7 @@ enum DivSystem {
DIV_SYSTEM_GB,
DIV_SYSTEM_PCE,
DIV_SYSTEM_NES,
DIV_SYSTEM_NES_VRC7, // ** COMPOUND SYSTEM - DO NOT USE! **
DIV_SYSTEM_C64_6581,
DIV_SYSTEM_C64_8580,
DIV_SYSTEM_ARCADE, // ** COMPOUND SYSTEM - DO NOT USE! **

View File

@ -44,6 +44,8 @@ DivSystem DivEngine::systemFromFile(unsigned char val) {
return DIV_SYSTEM_GENESIS_EXT;
case 0x43:
return DIV_SYSTEM_SMS_OPLL;
case 0x46:
return DIV_SYSTEM_NES_VRC7;
case 0x47:
return DIV_SYSTEM_C64_6581;
case 0x49:
@ -163,6 +165,8 @@ unsigned char DivEngine::systemToFile(DivSystem val) {
return 0x42;
case DIV_SYSTEM_SMS_OPLL:
return 0x43;
case DIV_SYSTEM_NES_VRC7:
return 0x46;
case DIV_SYSTEM_C64_6581:
return 0x47;
case DIV_SYSTEM_YM2610_EXT:
@ -283,7 +287,9 @@ int DivEngine::getChannelCount(DivSystem sys) {
case DIV_SYSTEM_GENESIS_EXT:
case DIV_SYSTEM_YM2610:
case DIV_SYSTEM_SMS_OPLL:
return 13;
return 13;
case DIV_SYSTEM_NES_VRC7:
return 11;
case DIV_SYSTEM_YM2610_EXT:
return 16;
// Furnace-specific systems
@ -524,6 +530,8 @@ const char* DivEngine::getSystemName(DivSystem sys) {
return "PC Engine/TurboGrafx-16";
case DIV_SYSTEM_NES:
return "NES";
case DIV_SYSTEM_NES_VRC7:
return "NES + Konami VRC7";
case DIV_SYSTEM_C64_6581:
return "Commodore 64 with 6581";
case DIV_SYSTEM_C64_8580:
@ -645,6 +653,8 @@ const char* DivEngine::getSystemChips(DivSystem sys) {
return "Hudson Soft HuC6280";
case DIV_SYSTEM_NES:
return "Ricoh 2A03";
case DIV_SYSTEM_NES_VRC7:
return "Ricoh 2A03 + Konami VRC7";
case DIV_SYSTEM_C64_6581:
return "SID 6581";
case DIV_SYSTEM_C64_8580:
@ -1007,6 +1017,7 @@ const char* DivEngine::getChannelName(int chan) {
return chanNames[3][dispatchChanOfChan[chan]];
break;
case DIV_SYSTEM_SMS_OPLL: // this is flattened to SMS + OPLL.
case DIV_SYSTEM_NES_VRC7: // this is flattened to NES + VRC7.
return "??";
break;
case DIV_SYSTEM_GB:
@ -1142,6 +1153,7 @@ const char* DivEngine::getChannelShortName(int chan) {
return chanShortNames[3][dispatchChanOfChan[chan]];
break;
case DIV_SYSTEM_SMS_OPLL: // this is flattened to SMS + OPLL.
case DIV_SYSTEM_NES_VRC7: // this is flattened to NES + VRC7.
return "??";
break;
case DIV_SYSTEM_GB:
@ -1275,6 +1287,7 @@ int DivEngine::getChannelType(int chan) {
return chanTypes[3][dispatchChanOfChan[chan]];
break;
case DIV_SYSTEM_SMS_OPLL: // this is flattened to SMS + OPLL.
case DIV_SYSTEM_NES_VRC7: // this is flattened to NES + VRC7.
return 0;
break;
case DIV_SYSTEM_GB:
@ -1408,6 +1421,7 @@ DivInstrumentType DivEngine::getPreferInsType(int chan) {
return chanPrefType[3][dispatchChanOfChan[chan]];
break;
case DIV_SYSTEM_SMS_OPLL: // this is flattened to SMS + OPLL.
case DIV_SYSTEM_NES_VRC7: // this is flattened to NES + VRC7.
return DIV_INS_OPLL;
break;
case DIV_SYSTEM_GB: