From 5c06470145652f725d74b008d423e9a201094bd9 Mon Sep 17 00:00:00 2001 From: cam900 Date: Sat, 11 Feb 2023 21:56:41 +0900 Subject: [PATCH] Add SM8521 instrument type --- src/engine/instrument.cpp | 4 ++++ src/engine/instrument.h | 1 + src/engine/sysDef.cpp | 2 +- src/gui/dataList.cpp | 4 ++++ src/gui/gui.h | 1 + src/gui/guiConst.cpp | 2 ++ src/gui/insEdit.cpp | 9 ++++++--- src/gui/settings.cpp | 1 + 8 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index cc1755028..798369782 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -924,6 +924,10 @@ void DivInstrument::putInsData2(SafeWriter* w, bool fui, const DivSong* song) { break; case DIV_INS_POKEMINI: break; + case DIV_INS_SM8521: + checkForWL=true; + if (ws.enabled) featureWS=true; + break; case DIV_INS_MAX: break; diff --git a/src/engine/instrument.h b/src/engine/instrument.h index 8829f6ce8..5b48ffb4e 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -78,6 +78,7 @@ enum DivInstrumentType: unsigned short { DIV_INS_K007232=45, DIV_INS_GA20=46, DIV_INS_POKEMINI=47, + DIV_INS_SM8521=48, DIV_INS_MAX, DIV_INS_NULL }; diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index 09cfdc414..b05ee5de0 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1828,7 +1828,7 @@ void DivEngine::registerSystems() { {"Channel 1", "Channel 2", "Noise"}, {"CH1", "CH2", "NOI"}, {DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_NOISE}, - {DIV_INS_NAMCO, DIV_INS_NAMCO, DIV_INS_NAMCO}, + {DIV_INS_SM8521, DIV_INS_SM8521, DIV_INS_SM8521}, {}, namcoEffectHandlerMap ); diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index cce46444b..2882a92e9 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -430,6 +430,10 @@ void FurnaceGUI::drawInsList(bool asChild) { ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_INSTR_POKEMINI]); name=fmt::sprintf(ICON_FA_BAR_CHART "##_INS%d",i); break; + case DIV_INS_SM8521: + ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_INSTR_SM8521]); + name=fmt::sprintf(ICON_FA_PIE_CHART "##_INS%d",i); + break; default: ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_INSTR_UNKNOWN]); name=fmt::sprintf(ICON_FA_QUESTION "##_INS%d",i); diff --git a/src/gui/gui.h b/src/gui/gui.h index cb7d950df..ea4b10a71 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -189,6 +189,7 @@ enum FurnaceGUIColors { GUI_COLOR_INSTR_K007232, GUI_COLOR_INSTR_GA20, GUI_COLOR_INSTR_POKEMINI, + GUI_COLOR_INSTR_SM8521, GUI_COLOR_INSTR_UNKNOWN, GUI_COLOR_CHANNEL_BG, diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 4997c28fb..d339ef82e 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -129,6 +129,7 @@ const char* insTypes[DIV_INS_MAX+1]={ "K007232", "GA20", "Pokémon Mini", + "SM8521", NULL }; @@ -818,6 +819,7 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={ D(GUI_COLOR_INSTR_K007232,"",ImVec4(1.0f,0.8f,0.1f,1.0f)), D(GUI_COLOR_INSTR_GA20,"",ImVec4(0.1f,1.0f,0.4f,1.0f)), D(GUI_COLOR_INSTR_POKEMINI,"",ImVec4(1.0f,1.0f,0.3f,1.0f)), + D(GUI_COLOR_INSTR_SM8521,"",ImVec4(1.0f,1.0f,0.0f,1.0f)), D(GUI_COLOR_INSTR_UNKNOWN,"",ImVec4(0.3f,0.3f,0.3f,1.0f)), D(GUI_COLOR_CHANNEL_BG,"",ImVec4(0.4f,0.6f,0.8f,1.0f)), diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 93a457cd7..6832f19d2 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -4762,11 +4762,13 @@ void FurnaceGUI::drawInsEdit() { (ins->type==DIV_INS_VBOY) || ins->type==DIV_INS_SCC || ins->type==DIV_INS_SNES || - ins->type==DIV_INS_NAMCO) { + ins->type==DIV_INS_NAMCO || + ins->type==DIV_INS_SM8521) { if (ImGui::BeginTabItem("Wavetable")) { switch (ins->type) { case DIV_INS_GB: case DIV_INS_NAMCO: + case DIV_INS_SM8521: case DIV_INS_SWAN: wavePreviewLen=32; wavePreviewHeight=15; @@ -4968,7 +4970,7 @@ void FurnaceGUI::drawInsEdit() { } } } - if (ins->type==DIV_INS_PCE || ins->type==DIV_INS_AY8930) { + if (ins->type==DIV_INS_PCE || ins->type==DIV_INS_AY8930 || ins->type==DIV_INS_SM8521) { volMax=31; } if (ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS || ins->type==DIV_INS_VERA || ins->type==DIV_INS_VRC6_SAW) { @@ -5067,7 +5069,8 @@ void FurnaceGUI::drawInsEdit() { } if (ins->type==DIV_INS_TIA || ins->type==DIV_INS_AMIGA || ins->type==DIV_INS_SCC || ins->type==DIV_INS_PET || ins->type==DIV_INS_VIC || ins->type==DIV_INS_SEGAPCM || - ins->type==DIV_INS_FM || ins->type==DIV_INS_K007232 || ins->type==DIV_INS_GA20) { + ins->type==DIV_INS_FM || ins->type==DIV_INS_K007232 || ins->type==DIV_INS_GA20 || + ins->type==DIV_INS_SM8521) { dutyMax=0; } if (ins->type==DIV_INS_VBOY) { diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 1d9fcb6dc..e80d9fa01 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1907,6 +1907,7 @@ void FurnaceGUI::drawSettings() { UI_COLOR_CONFIG(GUI_COLOR_INSTR_K007232,"K007232"); UI_COLOR_CONFIG(GUI_COLOR_INSTR_GA20,"GA20"); UI_COLOR_CONFIG(GUI_COLOR_INSTR_POKEMINI,"Pokémon Mini"); + UI_COLOR_CONFIG(GUI_COLOR_INSTR_SM8521,"SM8521"); UI_COLOR_CONFIG(GUI_COLOR_INSTR_UNKNOWN,"Other/Unknown"); ImGui::TreePop(); }