From 107d5e151484abd858c4692fc56dd517d0b3a3c1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 14 May 2022 02:38:20 -0500 Subject: [PATCH] prepare for ExtCh OPN/OPNA --- src/engine/song.h | 2 ++ src/engine/sysDef.cpp | 26 ++++++++++++++++++++++++-- src/gui/guiConst.cpp | 2 ++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/engine/song.h b/src/engine/song.h index d8a37cbb6..e4f003542 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -65,7 +65,9 @@ enum DivSystem { DIV_SYSTEM_MMC5, DIV_SYSTEM_N163, DIV_SYSTEM_OPN, + DIV_SYSTEM_OPN_EXT, DIV_SYSTEM_PC98, + DIV_SYSTEM_PC98_EXT, DIV_SYSTEM_OPL, DIV_SYSTEM_OPL2, DIV_SYSTEM_OPL3, diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index a83e88a73..a252eff8e 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1259,7 +1259,7 @@ void DivEngine::registerSystems() { ); sysDefs[DIV_SYSTEM_OPN]=new DivSysDef( - "Yamaha YM2203 (OPN)", NULL, 0x8d, 0, 6, true, false, 0x151, false, + "Yamaha YM2203 (OPN)", NULL, 0x8d, 0, 6, true, true, 0x151, false, {"FM 1", "FM 2", "FM 3", "PSG 1", "PSG 2", "PSG 3"}, {"F1", "F2", "F3", "S1", "S2", "S3"}, {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE}, @@ -1269,8 +1269,19 @@ void DivEngine::registerSystems() { fmPostEffectHandler ); + sysDefs[DIV_SYSTEM_OPN_EXT]=new DivSysDef( + "Yamaha YM2203 (OPN) Extended Channel 3", NULL, 0xb6, 0, 9, true, true, 0x151, false, + {"FM 1", "FM 2", "FM 3 OP1", "FM 3 OP2", "FM 3 OP3", "FM 3 OP4", "PSG 1", "PSG 2", "PSG 3"}, + {"F1", "F2", "O1", "O2", "O3", "O4", "S1", "S2", "S3"}, + {DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE}, + {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY}, + {}, + fmHardResetEffectHandler, + fmPostEffectHandler + ); + sysDefs[DIV_SYSTEM_PC98]=new DivSysDef( - "Yamaha YM2608 (OPNA)", NULL, 0x8e, 0, 16, true, false, 0, false, + "Yamaha YM2608 (OPNA)", NULL, 0x8e, 0, 16, true, true, 0, false, {"FM 1", "FM 2", "FM 3", "FM 4", "FM 5", "FM 6", "Square 1", "Square 2", "Square 3", "Kick", "Snare", "Top", "HiHat", "Tom", "Rim", "ADPCM"}, {"F1", "F2", "F3", "F4", "F5", "F6", "S1", "S2", "S3", "BD", "SD", "TP", "HH", "TM", "RM", "P"}, {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_PCM}, @@ -1280,6 +1291,17 @@ void DivEngine::registerSystems() { fmPostEffectHandler ); + sysDefs[DIV_SYSTEM_PC98_EXT]=new DivSysDef( + "Yamaha YM2608 (OPNA) Extended Channel 3", NULL, 0xb7, 0, 19, true, true, 0, false, + {"FM 1", "FM 2", "FM 3 OP1", "FM 3 OP2", "FM 3 OP3", "FM 3 OP4", "FM 4", "FM 5", "FM 6", "Square 1", "Square 2", "Square 3", "Kick", "Snare", "Top", "HiHat", "Tom", "Rim", "ADPCM"}, + {"F1", "F2", "O1", "O2", "O3", "O4", "F4", "F5", "F6", "S1", "S2", "S3", "BD", "SD", "TP", "HH", "TM", "RM", "P"}, + {DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_PCM}, + {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA}, + {}, + fmHardResetEffectHandler, + fmPostEffectHandler + ); + sysDefs[DIV_SYSTEM_OPL]=new DivSysDef( "Yamaha YM3526 (OPL)", NULL, 0x8f, 0, 9, true, false, 0x151, false, {"FM 1", "FM 2", "FM 3", "FM 4", "FM 5", "FM 6", "FM 7", "FM 8", "FM 9"}, diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index a3474dce0..a02543aa5 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -836,7 +836,9 @@ const int availableSystems[]={ DIV_SYSTEM_DUMMY, DIV_SYSTEM_SOUND_UNIT, DIV_SYSTEM_OPN, + DIV_SYSTEM_OPN_EXT, DIV_SYSTEM_PC98, + DIV_SYSTEM_PC98_EXT, DIV_SYSTEM_OPLL, DIV_SYSTEM_OPLL_DRUMS, DIV_SYSTEM_VRC7,