From 19cd491e5fa415d0a3ae4150eae90055bbe96764 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 2 Oct 2022 02:30:22 -0500 Subject: [PATCH] MSM5232: effects --- src/engine/platform/msm5232.cpp | 12 ++++++++++++ src/engine/sysDef.cpp | 10 +++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/engine/platform/msm5232.cpp b/src/engine/platform/msm5232.cpp index f311b113..462ecc76 100644 --- a/src/engine/platform/msm5232.cpp +++ b/src/engine/platform/msm5232.cpp @@ -229,10 +229,22 @@ int DivPlatformMSM5232::dispatch(DivCommand c) { } break; } + case DIV_CMD_WAVE: + groupControl[c.chan>>2]=c.value&0x1f; + updateGroup[c.chan>>2]=true; + break; case DIV_CMD_STD_NOISE_MODE: chan[c.chan].noise=c.value; chan[c.chan].freqChanged=true; break; + case DIV_CMD_FM_AR: + groupAR[c.chan>>2]=attackMap[c.value&7]; + updateGroupAR[c.chan>>2]=true; + break; + case DIV_CMD_FM_DR: + groupDR[c.chan>>2]=decayMap[c.value&15]; + updateGroupDR[c.chan>>2]=true; + break; case DIV_CMD_LEGATO: chan[c.chan].baseFreq=NOTE_LINEAR(c.value+((chan[c.chan].std.arp.will && !chan[c.chan].std.arp.mode)?(chan[c.chan].std.arp.val):(0))); chan[c.chan].freqChanged=true; diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index faf75757..cb2a3da4 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1610,7 +1610,15 @@ void DivEngine::registerSystems() { {"Channel 1", "Channel 2", "Channel 3", "Channel 4", "Channel 5", "Channel 6", "Channel 7", "Channel 8"}, {"CH1", "CH2", "CH3", "CH4", "CH5", "CH6", "CH7", "CH8"}, {DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE}, - {DIV_INS_MSM5232, DIV_INS_MSM5232, DIV_INS_MSM5232, DIV_INS_MSM5232, DIV_INS_MSM5232, DIV_INS_MSM5232, DIV_INS_MSM5232, DIV_INS_MSM5232} + {DIV_INS_MSM5232, DIV_INS_MSM5232, DIV_INS_MSM5232, DIV_INS_MSM5232, DIV_INS_MSM5232, DIV_INS_MSM5232, DIV_INS_MSM5232, DIV_INS_MSM5232}, + {}, + {}, + { + {0x10, {DIV_CMD_WAVE, "10xy: Set group control (x: sustain; y: part toggle bitmask)"}}, + {0x11, {DIV_CMD_STD_NOISE_MODE, "11xx: Set noise mode"}}, + {0x12, {DIV_CMD_FM_AR, "12xx: Set group attack (0 to 5)"}}, + {0x13, {DIV_CMD_FM_DR, "13xx: Set group decay (0 to 11)"}} + } ); sysDefs[DIV_SYSTEM_YM2612_FRAC]=new DivSysDef(