diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index 76168173f..384e0b780 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -915,7 +915,13 @@ void DivInstrument::putInsData2(SafeWriter* w, bool fui, const DivSong* song) { featureSM=true; featureSL=true; break; - + case DIV_INS_GA20: + featureSM=true; + featureSL=true; + break; + case DIV_INS_POKEMINI: + break; + case DIV_INS_MAX: break; case DIV_INS_NULL: diff --git a/src/engine/instrument.h b/src/engine/instrument.h index a4c1effc8..65a81f8b6 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -76,6 +76,8 @@ enum DivInstrumentType: unsigned short { DIV_INS_MSM5232=43, DIV_INS_T6W28=44, DIV_INS_K007232=45, + DIV_INS_GA20=46, + DIV_INS_POKEMINI=47, DIV_INS_MAX, DIV_INS_NULL }; diff --git a/src/engine/song.h b/src/engine/song.h index 44cdd9790..e1a1607db 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -116,6 +116,7 @@ enum DivSystem { DIV_SYSTEM_MSM5232, DIV_SYSTEM_T6W28, DIV_SYSTEM_K007232, + DIV_SYSTEM_GA20, DIV_SYSTEM_PCM_DAC, DIV_SYSTEM_PONG, DIV_SYSTEM_DUMMY diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index d713a65b4..0b30b7eb7 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1174,7 +1174,7 @@ void DivEngine::registerSystems() { {"Square"}, {"SQ"}, {DIV_CH_PULSE}, - {DIV_INS_BEEPER} + {DIV_INS_POKEMINI} ); sysDefs[DIV_SYSTEM_SEGAPCM]=new DivSysDef( @@ -1703,6 +1703,16 @@ void DivEngine::registerSystems() { {DIV_INS_AMIGA, DIV_INS_AMIGA} ); + sysDefs[DIV_SYSTEM_GA20]=new DivSysDef( + "Irem GA20", NULL, 0xc7, 0, 4, false, true, 0x171, false, 1U<type==DIV_INS_QSOUND) { volMax=16383; } + if (ins->type==DIV_INS_POKEMINI) { + volMax=2; + } const char* dutyLabel="Duty/Noise"; int dutyMin=0; @@ -4982,7 +4985,7 @@ void FurnaceGUI::drawInsEdit() { dutyLabel="Group Ctrl"; dutyMax=5; } - if (ins->type==DIV_INS_BEEPER) { + if (ins->type==DIV_INS_BEEPER || ins->type==DIV_INS_POKEMINI) { dutyLabel="Pulse Width"; dutyMax=255; } @@ -5079,6 +5082,7 @@ void FurnaceGUI::drawInsEdit() { if (ins->type==DIV_INS_MSM6295) waveMax=0; if (ins->type==DIV_INS_SEGAPCM) waveMax=0; if (ins->type==DIV_INS_K007232) waveMax=0; + if (ins->type==DIV_INS_POKEMINI) waveMax=0; if (ins->type==DIV_INS_SU) waveMax=7; if (ins->type==DIV_INS_PET) { waveMax=8; diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index db8906209..d40e4dac7 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1787,7 +1787,10 @@ void FurnaceGUI::drawSettings() { UI_COLOR_CONFIG(GUI_COLOR_INSTR_QSOUND,"QSound"); UI_COLOR_CONFIG(GUI_COLOR_INSTR_YMZ280B,"YMZ280B"); UI_COLOR_CONFIG(GUI_COLOR_INSTR_RF5C68,"RF5C68"); + UI_COLOR_CONFIG(GUI_COLOR_INSTR_MSM5232,"MSM5232"); 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_UNKNOWN,"Other/Unknown"); ImGui::TreePop(); }