add chipType change detect

This commit is contained in:
Eknous-P 2023-07-18 22:30:22 +04:00
parent 6daf9b3d18
commit 407f916311
3 changed files with 76 additions and 13 deletions

View File

@ -512,7 +512,7 @@ void FurnaceGUI::drawChanOsc() {
break; break;
} }
case 'p': { case 'p': {
text+=FurnaceGUI::getSystemPartNumber(e->sysOfChan[ch]); text+=FurnaceGUI::getSystemPartNumber(e->sysOfChan[ch], e->song.systemFlags[e->dispatchOfChan[ch]]);
break; break;
} }
case 'S': { case 'S': {

View File

@ -2287,7 +2287,7 @@ class FurnaceGUI {
bool quitRender(); bool quitRender();
const char* getSystemName(DivSystem which); const char* getSystemName(DivSystem which);
const char* getSystemPartNumber(DivSystem sys); const char* getSystemPartNumber(DivSystem sys, DivConfig& flags);
public: public:
void editStr(String* which); void editStr(String* which);

View File

@ -19,14 +19,38 @@
#include "gui.h" #include "gui.h"
const char* FurnaceGUI::getSystemPartNumber(DivSystem sys) { const char* FurnaceGUI::getSystemPartNumber(DivSystem sys, DivConfig& flags) {
switch (sys) { switch (sys) {
case DIV_SYSTEM_YMU759: case DIV_SYSTEM_YMU759:
return "YMU759"; return "YMU759";
break; break;
case DIV_SYSTEM_SMS: case DIV_SYSTEM_SMS:{
int chipType=flags.getInt("chipType",0);
if (chipType==4) {
return "SN76489A";
} else if (chipType==5) {
return "SN76496";
} else if (chipType==6) {
return "8496";
} else if (chipType==7) {
return "PSSJ";//not part number
} else if (chipType==8) {
return "SN94624";
} else if (chipType==9) {
return "SN76494";
} else {
return "SN76489"; return "SN76489";
}
break; break;
}
case DIV_SYSTEM_PCE:{
int chipType=flags.getInt("chipType",0);
if (chipType==1) {
return "HuC6280A";
} else {
return "HuC6280";
}
}
case DIV_SYSTEM_NES: case DIV_SYSTEM_NES:
return "2A03"; return "2A03";
break; break;
@ -40,9 +64,19 @@ const char* FurnaceGUI::getSystemPartNumber(DivSystem sys) {
case DIV_SYSTEM_Y8950_DRUMS: case DIV_SYSTEM_Y8950_DRUMS:
return "Y8950"; return "Y8950";
break; break;
case DIV_SYSTEM_AY8910: case DIV_SYSTEM_AY8910:{
return "AY8910"; int chipType=flags.getInt("chipType",0);
if (chipType==1) {
return "YM2149(F)";
} else if (chipType==2) {
return "5B";
} else if (chipType==3) {
return "AY-3-8914";
} else {
return "AY-3-8910";
}
break; break;
}
case DIV_SYSTEM_AMIGA: case DIV_SYSTEM_AMIGA:
return "Amiga"; return "Amiga";
break; break;
@ -53,9 +87,22 @@ const char* FurnaceGUI::getSystemPartNumber(DivSystem sys) {
case DIV_SYSTEM_YM2612_CSM: case DIV_SYSTEM_YM2612_CSM:
case DIV_SYSTEM_YM2612_DUALPCM: case DIV_SYSTEM_YM2612_DUALPCM:
case DIV_SYSTEM_YM2612_DUALPCM_EXT: case DIV_SYSTEM_YM2612_DUALPCM_EXT:
case DIV_SYSTEM_YM2612_EXT: case DIV_SYSTEM_YM2612_EXT:{
int chipType=0;
if (flags.has("chipType")) {
chipType=flags.getInt("chipType",0);
} else {
chipType=flags.getBool("ladderEffect",0)?1:0;
}
if (chipType==0) {
return "YM3438";
} else if (chipType==2) {
return "YMF276";
} else {
return "YM2612"; return "YM2612";
}
break; break;
}
case DIV_SYSTEM_TIA: case DIV_SYSTEM_TIA:
return "TIA"; return "TIA";
break; break;
@ -94,9 +141,19 @@ const char* FurnaceGUI::getSystemPartNumber(DivSystem sys) {
return "YM2608"; return "YM2608";
break; break;
case DIV_SYSTEM_OPL: case DIV_SYSTEM_OPL:
case DIV_SYSTEM_OPL_DRUMS: case DIV_SYSTEM_OPL_DRUMS:{
return "YM3526"; int patchSet=flags.getInt("patchSet",0);
if (patchSet==1) {
return "YMF281";
} else if (patchSet==2) {
return "YM2423";
} else if (patchSet==3) {
return "VRC7";
} else {
return "YM2413";
}
break; break;
}
case DIV_SYSTEM_OPL2: case DIV_SYSTEM_OPL2:
case DIV_SYSTEM_OPL2_DRUMS: case DIV_SYSTEM_OPL2_DRUMS:
return "YM3812"; return "YM3812";
@ -112,9 +169,15 @@ const char* FurnaceGUI::getSystemPartNumber(DivSystem sys) {
case DIV_SYSTEM_MULTIPCM: case DIV_SYSTEM_MULTIPCM:
return "MultiPCM"; return "MultiPCM";
break; break;
case DIV_SYSTEM_RF5C68: case DIV_SYSTEM_RF5C68:{
int chipType=flags.getInt("chipType",0);
if (chipType==1) {
return "RF5C164";
} else {
return "RF5C68"; return "RF5C68";
}
break; break;
}
case DIV_SYSTEM_OPZ: case DIV_SYSTEM_OPZ:
return "YM2414"; return "YM2414";
break; break;