From 1fcf72b912e9d54909ffa15e42bd291ed076964f Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Wed, 12 Jul 2023 14:17:08 +0400 Subject: [PATCH 1/6] chip short name for per-chan scope --- src/gui/chanOsc.cpp | 211 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 809f214b7..00fedefda 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -41,6 +41,212 @@ const char* chanOscRefs[]={ "Note Trigger" }; +const char* getSystemShortName(DivSystem sys){ + switch (sys) { + case DIV_SYSTEM_YMU759: + return "YMU759"; + break; + case DIV_SYSTEM_SMS: + return "SN76489"; + break; + case DIV_SYSTEM_GB: + return "Game Boy"; + break; + case DIV_SYSTEM_PCE: + return "PC Engine"; + break; + case DIV_SYSTEM_NES: + return "2A03"; + break; + case DIV_SYSTEM_C64_6581: + return "MOS 6581"; + break; + case DIV_SYSTEM_C64_8580: + return "MOS 8580"; + break; + case DIV_SYSTEM_Y8950: case DIV_SYSTEM_Y8950_DRUMS: + return "Y8950"; + break; + case DIV_SYSTEM_AY8910: + return "AY8910"; + break; + case DIV_SYSTEM_AMIGA: + return "Amiga"; + break; + case DIV_SYSTEM_YM2151: + return "YM2151"; + break; + case DIV_SYSTEM_YM2612: case DIV_SYSTEM_YM2612_CSM: case DIV_SYSTEM_YM2612_DUALPCM: case DIV_SYSTEM_YM2612_DUALPCM_EXT: case DIV_SYSTEM_YM2612_EXT: + return "YM2612"; + break; + case DIV_SYSTEM_TIA: + return "TIA"; + break; + case DIV_SYSTEM_SAA1099: + return "SAA1099"; + break; + case DIV_SYSTEM_AY8930: + return "AY8930"; + break; + case DIV_SYSTEM_VIC20: + return "VIC-20"; + break; + case DIV_SYSTEM_PET: + return "PET"; + break; + case DIV_SYSTEM_SNES: + return "SNES"; + break; + case DIV_SYSTEM_VRC6: + return "VRC6"; + break; + case DIV_SYSTEM_FDS: + return "FDS"; + break; + case DIV_SYSTEM_MMC5: + return "MMC5"; + break; + case DIV_SYSTEM_N163: + return "N163"; + break; + case DIV_SYSTEM_YM2203: case DIV_SYSTEM_YM2203_EXT: case DIV_SYSTEM_YM2203_CSM: + return "YM2203"; + break; + case DIV_SYSTEM_YM2608: case DIV_SYSTEM_YM2608_CSM: case DIV_SYSTEM_YM2608_EXT: + return "YM2608"; + break; + case DIV_SYSTEM_OPL: case DIV_SYSTEM_OPL_DRUMS: + return "YM3526"; + break; + case DIV_SYSTEM_OPL2: case DIV_SYSTEM_OPL2_DRUMS: + return "YM3812"; + break; + case DIV_SYSTEM_OPL3: case DIV_SYSTEM_OPL3_DRUMS: + return "YMF262"; + break; + case DIV_SYSTEM_OPL4: case DIV_SYSTEM_OPL4_DRUMS: + return "OPL4"; + break; + case DIV_SYSTEM_MULTIPCM: + return "MultiPCM"; + break; + case DIV_SYSTEM_PCSPKR: + return "PC Speaker"; + break; + case DIV_SYSTEM_POKEY: + return "POKEY"; + break; + case DIV_SYSTEM_RF5C68: + return "RF5C68"; + break; + case DIV_SYSTEM_SWAN: + return "WonderSwan"; + break; + case DIV_SYSTEM_OPZ: + return "YM2414"; + break; + case DIV_SYSTEM_POKEMINI: + return "Pokémon Mini"; + break; + case DIV_SYSTEM_SEGAPCM: case DIV_SYSTEM_SEGAPCM_COMPAT: + return "SegaPCM"; + break; + case DIV_SYSTEM_VBOY: + return "Virtual Boy"; + break; + case DIV_SYSTEM_VRC7: + return "VRC7"; + break; + case DIV_SYSTEM_YM2610B: case DIV_SYSTEM_YM2610B_CSM: case DIV_SYSTEM_YM2610B_EXT: + return "YM2610B"; + break; + case DIV_SYSTEM_SFX_BEEPER: case DIV_SYSTEM_SFX_BEEPER_QUADTONE: + return "ZXS Beeper"; + break; + case DIV_SYSTEM_SCC: + return "SCC"; + break; + case DIV_SYSTEM_YM2610: case DIV_SYSTEM_YM2610_CSM: case DIV_SYSTEM_YM2610_EXT: case DIV_SYSTEM_YM2610_FULL: case DIV_SYSTEM_YM2610_FULL_EXT: + return "YM2610"; + break; + case DIV_SYSTEM_OPLL: case DIV_SYSTEM_OPLL_DRUMS: + return "YM2413"; + break; + case DIV_SYSTEM_LYNX: + return "Lynx"; + break; + case DIV_SYSTEM_QSOUND: + return "QSound"; + break; + case DIV_SYSTEM_VERA: + return "VERA"; + break; + case DIV_SYSTEM_X1_010: + return "X1-010"; + break; + case DIV_SYSTEM_BUBSYS_WSG: + return "Konami WSG"; + break; + case DIV_SYSTEM_ES5506: + return "ES5506"; + break; + case DIV_SYSTEM_SCC_PLUS: + return "SCC+"; + break; + case DIV_SYSTEM_SOUND_UNIT: + return "TSU"; + break; + case DIV_SYSTEM_MSM6295: + return "MSM6295"; + break; + case DIV_SYSTEM_MSM6258: + return "MSM6258"; + break; + case DIV_SYSTEM_YMZ280B: + return "YMZ280B"; + break; + case DIV_SYSTEM_NAMCO: + return "Namco WSG"; + break; + case DIV_SYSTEM_NAMCO_15XX: + return "C15"; + break; + case DIV_SYSTEM_NAMCO_CUS30: + return "C30"; + break; + case DIV_SYSTEM_MSM5232: + return "MSM5232"; + break; + case DIV_SYSTEM_T6W28: + return "T6W28"; + break; + case DIV_SYSTEM_K007232: + return "K007232"; + break; + case DIV_SYSTEM_GA20: + return "GA20"; + break; + case DIV_SYSTEM_PCM_DAC: + return "DAC"; + break; + case DIV_SYSTEM_PONG: + return "Pong"; + break; + case DIV_SYSTEM_DUMMY: + return "Dummy"; + break; + case DIV_SYSTEM_SM8521: + return "SM8521"; + break; + case DIV_SYSTEM_PV1000: + return "PV-1000"; + break; + default: + return ""; + break; + } +} + float FurnaceGUI::computeGradPos(int type, int chan) { switch (type) { case GUI_OSCREF_NONE: @@ -308,6 +514,7 @@ void FurnaceGUI::drawChanOsc() { "- %I: instrument number (decimal)\n" "- %x: instrument number (hex)\n" "- %s: chip name\n" + "- %p: chip short name\n" "- %S: chip ID\n" "- %v: volume (decimal)\n" "- %V: volume (percentage)\n" @@ -510,6 +717,10 @@ void FurnaceGUI::drawChanOsc() { text+=e->getSystemName(e->sysOfChan[ch]); break; } + case 'p': { + text+=getSystemShortName(e->sysOfChan[ch]); + break; + } case 'S': { text+=fmt::sprintf("%d",e->dispatchOfChan[ch]); break; From 30c41942a465ab9287e4517fa14dc32c695690b0 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sun, 16 Jul 2023 11:48:36 +0400 Subject: [PATCH 2/6] move to separate file + regular name on default --- CMakeLists.txt | 1 + src/gui/chanOsc.cpp | 208 +----------------------------------- src/gui/gui.h | 1 + src/gui/sysPartNumber.cpp | 215 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 218 insertions(+), 207 deletions(-) create mode 100644 src/gui/sysPartNumber.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index caee04a7a..f78140ee8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -695,6 +695,7 @@ src/gui/subSongs.cpp src/gui/sysConf.cpp src/gui/sysEx.cpp src/gui/sysManager.cpp +src/gui/sysPartNumber.cpp src/gui/sysPicker.cpp src/gui/tutorial.cpp src/gui/util.cpp diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 00fedefda..39d6764e4 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -41,212 +41,6 @@ const char* chanOscRefs[]={ "Note Trigger" }; -const char* getSystemShortName(DivSystem sys){ - switch (sys) { - case DIV_SYSTEM_YMU759: - return "YMU759"; - break; - case DIV_SYSTEM_SMS: - return "SN76489"; - break; - case DIV_SYSTEM_GB: - return "Game Boy"; - break; - case DIV_SYSTEM_PCE: - return "PC Engine"; - break; - case DIV_SYSTEM_NES: - return "2A03"; - break; - case DIV_SYSTEM_C64_6581: - return "MOS 6581"; - break; - case DIV_SYSTEM_C64_8580: - return "MOS 8580"; - break; - case DIV_SYSTEM_Y8950: case DIV_SYSTEM_Y8950_DRUMS: - return "Y8950"; - break; - case DIV_SYSTEM_AY8910: - return "AY8910"; - break; - case DIV_SYSTEM_AMIGA: - return "Amiga"; - break; - case DIV_SYSTEM_YM2151: - return "YM2151"; - break; - case DIV_SYSTEM_YM2612: case DIV_SYSTEM_YM2612_CSM: case DIV_SYSTEM_YM2612_DUALPCM: case DIV_SYSTEM_YM2612_DUALPCM_EXT: case DIV_SYSTEM_YM2612_EXT: - return "YM2612"; - break; - case DIV_SYSTEM_TIA: - return "TIA"; - break; - case DIV_SYSTEM_SAA1099: - return "SAA1099"; - break; - case DIV_SYSTEM_AY8930: - return "AY8930"; - break; - case DIV_SYSTEM_VIC20: - return "VIC-20"; - break; - case DIV_SYSTEM_PET: - return "PET"; - break; - case DIV_SYSTEM_SNES: - return "SNES"; - break; - case DIV_SYSTEM_VRC6: - return "VRC6"; - break; - case DIV_SYSTEM_FDS: - return "FDS"; - break; - case DIV_SYSTEM_MMC5: - return "MMC5"; - break; - case DIV_SYSTEM_N163: - return "N163"; - break; - case DIV_SYSTEM_YM2203: case DIV_SYSTEM_YM2203_EXT: case DIV_SYSTEM_YM2203_CSM: - return "YM2203"; - break; - case DIV_SYSTEM_YM2608: case DIV_SYSTEM_YM2608_CSM: case DIV_SYSTEM_YM2608_EXT: - return "YM2608"; - break; - case DIV_SYSTEM_OPL: case DIV_SYSTEM_OPL_DRUMS: - return "YM3526"; - break; - case DIV_SYSTEM_OPL2: case DIV_SYSTEM_OPL2_DRUMS: - return "YM3812"; - break; - case DIV_SYSTEM_OPL3: case DIV_SYSTEM_OPL3_DRUMS: - return "YMF262"; - break; - case DIV_SYSTEM_OPL4: case DIV_SYSTEM_OPL4_DRUMS: - return "OPL4"; - break; - case DIV_SYSTEM_MULTIPCM: - return "MultiPCM"; - break; - case DIV_SYSTEM_PCSPKR: - return "PC Speaker"; - break; - case DIV_SYSTEM_POKEY: - return "POKEY"; - break; - case DIV_SYSTEM_RF5C68: - return "RF5C68"; - break; - case DIV_SYSTEM_SWAN: - return "WonderSwan"; - break; - case DIV_SYSTEM_OPZ: - return "YM2414"; - break; - case DIV_SYSTEM_POKEMINI: - return "Pokémon Mini"; - break; - case DIV_SYSTEM_SEGAPCM: case DIV_SYSTEM_SEGAPCM_COMPAT: - return "SegaPCM"; - break; - case DIV_SYSTEM_VBOY: - return "Virtual Boy"; - break; - case DIV_SYSTEM_VRC7: - return "VRC7"; - break; - case DIV_SYSTEM_YM2610B: case DIV_SYSTEM_YM2610B_CSM: case DIV_SYSTEM_YM2610B_EXT: - return "YM2610B"; - break; - case DIV_SYSTEM_SFX_BEEPER: case DIV_SYSTEM_SFX_BEEPER_QUADTONE: - return "ZXS Beeper"; - break; - case DIV_SYSTEM_SCC: - return "SCC"; - break; - case DIV_SYSTEM_YM2610: case DIV_SYSTEM_YM2610_CSM: case DIV_SYSTEM_YM2610_EXT: case DIV_SYSTEM_YM2610_FULL: case DIV_SYSTEM_YM2610_FULL_EXT: - return "YM2610"; - break; - case DIV_SYSTEM_OPLL: case DIV_SYSTEM_OPLL_DRUMS: - return "YM2413"; - break; - case DIV_SYSTEM_LYNX: - return "Lynx"; - break; - case DIV_SYSTEM_QSOUND: - return "QSound"; - break; - case DIV_SYSTEM_VERA: - return "VERA"; - break; - case DIV_SYSTEM_X1_010: - return "X1-010"; - break; - case DIV_SYSTEM_BUBSYS_WSG: - return "Konami WSG"; - break; - case DIV_SYSTEM_ES5506: - return "ES5506"; - break; - case DIV_SYSTEM_SCC_PLUS: - return "SCC+"; - break; - case DIV_SYSTEM_SOUND_UNIT: - return "TSU"; - break; - case DIV_SYSTEM_MSM6295: - return "MSM6295"; - break; - case DIV_SYSTEM_MSM6258: - return "MSM6258"; - break; - case DIV_SYSTEM_YMZ280B: - return "YMZ280B"; - break; - case DIV_SYSTEM_NAMCO: - return "Namco WSG"; - break; - case DIV_SYSTEM_NAMCO_15XX: - return "C15"; - break; - case DIV_SYSTEM_NAMCO_CUS30: - return "C30"; - break; - case DIV_SYSTEM_MSM5232: - return "MSM5232"; - break; - case DIV_SYSTEM_T6W28: - return "T6W28"; - break; - case DIV_SYSTEM_K007232: - return "K007232"; - break; - case DIV_SYSTEM_GA20: - return "GA20"; - break; - case DIV_SYSTEM_PCM_DAC: - return "DAC"; - break; - case DIV_SYSTEM_PONG: - return "Pong"; - break; - case DIV_SYSTEM_DUMMY: - return "Dummy"; - break; - case DIV_SYSTEM_SM8521: - return "SM8521"; - break; - case DIV_SYSTEM_PV1000: - return "PV-1000"; - break; - default: - return ""; - break; - } -} - float FurnaceGUI::computeGradPos(int type, int chan) { switch (type) { case GUI_OSCREF_NONE: @@ -718,7 +512,7 @@ void FurnaceGUI::drawChanOsc() { break; } case 'p': { - text+=getSystemShortName(e->sysOfChan[ch]); + text+=FurnaceGUI::getSystemPartNumber(e->sysOfChan[ch]); break; } case 'S': { diff --git a/src/gui/gui.h b/src/gui/gui.h index 83c5a380a..409b1ea19 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -2285,6 +2285,7 @@ class FurnaceGUI { bool quitRender(); const char* getSystemName(DivSystem which); + const char* getSystemPartNumber(DivSystem sys); public: void editStr(String* which); diff --git a/src/gui/sysPartNumber.cpp b/src/gui/sysPartNumber.cpp new file mode 100644 index 000000000..35acaa601 --- /dev/null +++ b/src/gui/sysPartNumber.cpp @@ -0,0 +1,215 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2023 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "gui.h" + +const char* FurnaceGUI::getSystemPartNumber(DivSystem sys) { + switch (sys) { + case DIV_SYSTEM_YMU759: + return "YMU759"; + break; + case DIV_SYSTEM_SMS: + return "SN76489"; + break; + case DIV_SYSTEM_NES: + return "2A03"; + break; + case DIV_SYSTEM_C64_6581: + return "MOS 6581"; + break; + case DIV_SYSTEM_C64_8580: + return "MOS 8580"; + break; + case DIV_SYSTEM_Y8950: + case DIV_SYSTEM_Y8950_DRUMS: + return "Y8950"; + break; + case DIV_SYSTEM_AY8910: + return "AY8910"; + break; + case DIV_SYSTEM_AMIGA: + return "Amiga"; + break; + case DIV_SYSTEM_YM2151: + return "YM2151"; + break; + case DIV_SYSTEM_YM2612: + case DIV_SYSTEM_YM2612_CSM: + case DIV_SYSTEM_YM2612_DUALPCM: + case DIV_SYSTEM_YM2612_DUALPCM_EXT: + case DIV_SYSTEM_YM2612_EXT: + return "YM2612"; + break; + case DIV_SYSTEM_TIA: + return "TIA"; + break; + case DIV_SYSTEM_SAA1099: + return "SAA1099"; + break; + case DIV_SYSTEM_AY8930: + return "AY8930"; + break; + case DIV_SYSTEM_VIC20: + return "VIC"; + break; + case DIV_SYSTEM_PET: + return "PET"; + break; + case DIV_SYSTEM_VRC6: + return "VRC6"; + break; + case DIV_SYSTEM_FDS: + return "FDS"; + break; + case DIV_SYSTEM_MMC5: + return "MMC5"; + break; + case DIV_SYSTEM_N163: + return "N163"; + break; + case DIV_SYSTEM_YM2203: + case DIV_SYSTEM_YM2203_EXT: + case DIV_SYSTEM_YM2203_CSM: + return "YM2203"; + break; + case DIV_SYSTEM_YM2608: + case DIV_SYSTEM_YM2608_CSM: + case DIV_SYSTEM_YM2608_EXT: + return "YM2608"; + break; + case DIV_SYSTEM_OPL: + case DIV_SYSTEM_OPL_DRUMS: + return "YM3526"; + break; + case DIV_SYSTEM_OPL2: + case DIV_SYSTEM_OPL2_DRUMS: + return "YM3812"; + break; + case DIV_SYSTEM_OPL3: + case DIV_SYSTEM_OPL3_DRUMS: + return "YMF262"; + break; + case DIV_SYSTEM_OPL4: + case DIV_SYSTEM_OPL4_DRUMS: + return "OPL4"; + break; + case DIV_SYSTEM_MULTIPCM: + return "MultiPCM"; + break; + case DIV_SYSTEM_RF5C68: + return "RF5C68"; + break; + case DIV_SYSTEM_OPZ: + return "YM2414"; + break; + case DIV_SYSTEM_SEGAPCM: + case DIV_SYSTEM_SEGAPCM_COMPAT: + return "SegaPCM"; + break; + case DIV_SYSTEM_VRC7: + return "VRC7"; + break; + case DIV_SYSTEM_YM2610B: + case DIV_SYSTEM_YM2610B_CSM: + case DIV_SYSTEM_YM2610B_EXT: + return "YM2610B"; + break; + case DIV_SYSTEM_SFX_BEEPER: + case DIV_SYSTEM_SFX_BEEPER_QUADTONE: + return "ZXS Beeper"; + break; + case DIV_SYSTEM_SCC: + return "SCC"; + break; + case DIV_SYSTEM_YM2610: + case DIV_SYSTEM_YM2610_CSM: + case DIV_SYSTEM_YM2610_EXT: + case DIV_SYSTEM_YM2610_FULL: + case DIV_SYSTEM_YM2610_FULL_EXT: + return "YM2610"; + break; + case DIV_SYSTEM_OPLL: + case DIV_SYSTEM_OPLL_DRUMS: + return "YM2413"; + break; + case DIV_SYSTEM_QSOUND: + return "QSound"; + break; + case DIV_SYSTEM_VERA: + return "VERA"; + break; + case DIV_SYSTEM_X1_010: + return "X1-010"; + break; + case DIV_SYSTEM_BUBSYS_WSG: + return "Konami WSG"; + break; + case DIV_SYSTEM_ES5506: + return "ES5506"; + break; + case DIV_SYSTEM_SCC_PLUS: + return "SCC+"; + break; + case DIV_SYSTEM_SOUND_UNIT: + return "TSU"; + break; + case DIV_SYSTEM_MSM6295: + return "MSM6295"; + break; + case DIV_SYSTEM_MSM6258: + return "MSM6258"; + break; + case DIV_SYSTEM_YMZ280B: + return "YMZ280B"; + break; + case DIV_SYSTEM_NAMCO: + return "Namco WSG"; + break; + case DIV_SYSTEM_NAMCO_15XX: + return "C15"; + break; + case DIV_SYSTEM_NAMCO_CUS30: + return "C30"; + break; + case DIV_SYSTEM_MSM5232: + return "MSM5232"; + break; + case DIV_SYSTEM_T6W28: + return "T6W28"; + break; + case DIV_SYSTEM_K007232: + return "K007232"; + break; + case DIV_SYSTEM_GA20: + return "GA20"; + break; + case DIV_SYSTEM_PCM_DAC: + return "DAC"; + break; + case DIV_SYSTEM_SM8521: + return "SM8521"; + break; + case DIV_SYSTEM_PV1000: + return "PV-1000"; + break; + default: + return FurnaceGUI::getSystemName(sys); + break; + } +} From 2d68b6a31602ca90d6670f5382c0942e7c039e78 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sun, 16 Jul 2023 15:10:09 +0400 Subject: [PATCH 3/6] update tooltip --- src/gui/chanOsc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 39d6764e4..522d01deb 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -308,7 +308,7 @@ void FurnaceGUI::drawChanOsc() { "- %I: instrument number (decimal)\n" "- %x: instrument number (hex)\n" "- %s: chip name\n" - "- %p: chip short name\n" + "- %p: chip part number\n" "- %S: chip ID\n" "- %v: volume (decimal)\n" "- %V: volume (percentage)\n" From 407f91631160f358771707f46879e6fea2f2dfd1 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Tue, 18 Jul 2023 22:30:22 +0400 Subject: [PATCH 4/6] add chipType change detect --- src/gui/chanOsc.cpp | 2 +- src/gui/gui.h | 2 +- src/gui/sysPartNumber.cpp | 85 ++++++++++++++++++++++++++++++++++----- 3 files changed, 76 insertions(+), 13 deletions(-) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 522d01deb..803a5665b 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -512,7 +512,7 @@ void FurnaceGUI::drawChanOsc() { break; } case 'p': { - text+=FurnaceGUI::getSystemPartNumber(e->sysOfChan[ch]); + text+=FurnaceGUI::getSystemPartNumber(e->sysOfChan[ch], e->song.systemFlags[e->dispatchOfChan[ch]]); break; } case 'S': { diff --git a/src/gui/gui.h b/src/gui/gui.h index facd2f981..efc5fed09 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -2287,7 +2287,7 @@ class FurnaceGUI { bool quitRender(); const char* getSystemName(DivSystem which); - const char* getSystemPartNumber(DivSystem sys); + const char* getSystemPartNumber(DivSystem sys, DivConfig& flags); public: void editStr(String* which); diff --git a/src/gui/sysPartNumber.cpp b/src/gui/sysPartNumber.cpp index 35acaa601..212783da6 100644 --- a/src/gui/sysPartNumber.cpp +++ b/src/gui/sysPartNumber.cpp @@ -19,14 +19,38 @@ #include "gui.h" -const char* FurnaceGUI::getSystemPartNumber(DivSystem sys) { +const char* FurnaceGUI::getSystemPartNumber(DivSystem sys, DivConfig& flags) { switch (sys) { case DIV_SYSTEM_YMU759: return "YMU759"; break; - case DIV_SYSTEM_SMS: - return "SN76489"; + 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"; + } break; + } + case DIV_SYSTEM_PCE:{ + int chipType=flags.getInt("chipType",0); + if (chipType==1) { + return "HuC6280A"; + } else { + return "HuC6280"; + } + } case DIV_SYSTEM_NES: return "2A03"; break; @@ -40,9 +64,19 @@ const char* FurnaceGUI::getSystemPartNumber(DivSystem sys) { case DIV_SYSTEM_Y8950_DRUMS: return "Y8950"; break; - case DIV_SYSTEM_AY8910: - return "AY8910"; + case DIV_SYSTEM_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; + } case DIV_SYSTEM_AMIGA: return "Amiga"; break; @@ -53,9 +87,22 @@ const char* FurnaceGUI::getSystemPartNumber(DivSystem sys) { case DIV_SYSTEM_YM2612_CSM: case DIV_SYSTEM_YM2612_DUALPCM: case DIV_SYSTEM_YM2612_DUALPCM_EXT: - case DIV_SYSTEM_YM2612_EXT: - return "YM2612"; + 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"; + } break; + } case DIV_SYSTEM_TIA: return "TIA"; break; @@ -94,9 +141,19 @@ const char* FurnaceGUI::getSystemPartNumber(DivSystem sys) { return "YM2608"; break; case DIV_SYSTEM_OPL: - case DIV_SYSTEM_OPL_DRUMS: - return "YM3526"; + case DIV_SYSTEM_OPL_DRUMS:{ + 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; + } case DIV_SYSTEM_OPL2: case DIV_SYSTEM_OPL2_DRUMS: return "YM3812"; @@ -112,9 +169,15 @@ const char* FurnaceGUI::getSystemPartNumber(DivSystem sys) { case DIV_SYSTEM_MULTIPCM: return "MultiPCM"; break; - case DIV_SYSTEM_RF5C68: - return "RF5C68"; + case DIV_SYSTEM_RF5C68:{ + int chipType=flags.getInt("chipType",0); + if (chipType==1) { + return "RF5C164"; + } else { + return "RF5C68"; + } break; + } case DIV_SYSTEM_OPZ: return "YM2414"; break; From caf4ab5d7a05ab2ca9c83d3c536411cb492dad86 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Wed, 19 Jul 2023 23:20:28 +0400 Subject: [PATCH 5/6] add k053260 case --- src/gui/sysPartNumber.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/gui/sysPartNumber.cpp b/src/gui/sysPartNumber.cpp index 212783da6..7ca4489f3 100644 --- a/src/gui/sysPartNumber.cpp +++ b/src/gui/sysPartNumber.cpp @@ -271,6 +271,9 @@ const char* FurnaceGUI::getSystemPartNumber(DivSystem sys, DivConfig& flags) { case DIV_SYSTEM_PV1000: return "PV-1000"; break; + case DIV_SYSTEM_K053260: + return "K053260"; + break; default: return FurnaceGUI::getSystemName(sys); break; From 0f5cf4a0433bbd764a27019be89ebdffc2ee7853 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Thu, 20 Jul 2023 20:48:20 +0400 Subject: [PATCH 6/6] update chanosc doc --- doc/8-advanced/chanosc.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/8-advanced/chanosc.md b/doc/8-advanced/chanosc.md index 77157f1a5..4e3962ced 100644 --- a/doc/8-advanced/chanosc.md +++ b/doc/8-advanced/chanosc.md @@ -23,6 +23,7 @@ right-clicking within the view will change it to the configuration view shown ab - `%I`: instrument number (decimal) - `%x`: instrument number (hex) - `%s`: chip name + - `%p`: chip part number - `%S`: chip ID - `%v`: volume (decimal) - `%V`: volume (percentage)