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!"); 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); logI("reading pattern matrix (%d)...\n",ds.ordersLen);
for (int i=0; i<getChannelCount(ds.system[0]); i++) { for (int i=0; i<getChannelCount(ds.system[0]); i++) {
for (int j=0; j<ds.ordersLen; j++) { 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->type=DIV_INS_PCE;
ins->std.volMacroHeight=31; 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; 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].vib=reader.readC();
ins->fm.op[j].ws=reader.readC(); ins->fm.op[j].ws=reader.readC();
} else { } 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) { if (j==0) {
ins->fm.opllPreset=reader.readC(); ins->fm.opllPreset=reader.readC();
} else { } else {
@ -331,7 +335,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
} }
} }
if (ds.version>0x03) { 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].ksr=reader.readC();
ins->fm.op[j].vib=reader.readC(); ins->fm.op[j].vib=reader.readC();
ins->fm.op[j].ksl=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[0]=DIV_SYSTEM_SMS;
ds.system[1]=DIV_SYSTEM_OPLL; 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(); if (active) quitDispatch();
isBusy.lock(); isBusy.lock();

View file

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