add cutoff & resonance scaling control effects, work more on Russian locale

This commit is contained in:
LTVA1 2024-08-18 18:55:46 +03:00
parent 5fd93596b6
commit f4ff45efb7
35 changed files with 38004 additions and 37207 deletions

View file

@ -286,6 +286,9 @@ enum DivDispatchCmds {
DIV_CMD_SID3_NOISE_PHASE_RESET,
DIV_CMD_SID3_ENVELOPE_RESET,
DIV_CMD_SID3_CUTOFF_SCALING,
DIV_CMD_SID3_RESONANCE_SCALING,
DIV_CMD_MAX
};

View file

@ -1162,6 +1162,16 @@ int DivPlatformSID3::dispatch(DivCommand c) {
case DIV_CMD_SID3_ENVELOPE_RESET:
chan[c.chan].envelope_reset_counter = c.value;
break;
case DIV_CMD_SID3_CUTOFF_SCALING:
chan[c.chan].filt[(c.value >> 4) & 3].bindCutoffToNote = c.value & 1;
chan[c.chan].filt[(c.value >> 4) & 3].bindCutoffToNoteDir = c.value & 2;
chan[c.chan].freqChanged = true;
break;
case DIV_CMD_SID3_RESONANCE_SCALING:
chan[c.chan].filt[(c.value >> 4) & 3].bindResonanceToNote = c.value & 1;
chan[c.chan].filt[(c.value >> 4) & 3].bindResonanceToNoteDir = c.value & 2;
chan[c.chan].freqChanged = true;
break;
case DIV_CMD_SAMPLE_POS:
chan[c.chan].dacPos=c.value;
break;

View file

@ -285,6 +285,8 @@ const char* cmdName[]={
"SID3_PHASE_RESET",
"SID3_NOISE_PHASE_RESET",
"SID3_ENVELOPE_RESET",
"SID3_CUTOFF_SCALING",
"SID3_RESONANCE_SCALING",
};
static_assert((sizeof(cmdName)/sizeof(void*))==DIV_CMD_MAX,"update cmdName!");

View file

@ -766,6 +766,9 @@ void DivEngine::registerSystems() {
{0xAE, {DIV_CMD_SID3_PHASE_RESET, _("AExx: Phase reset on tick xx")}},
{0xAF, {DIV_CMD_SID3_NOISE_PHASE_RESET, _("AFxx: Noise phase reset on tick xx")}},
{0xB0, {DIV_CMD_SID3_ENVELOPE_RESET, _("B0xx: Envelope reset on tick xx")}},
{0xB1, {DIV_CMD_SID3_CUTOFF_SCALING, _("B1xy: Cutoff scaling control (x: filter (0-3); y: bit 0: enable scaling; bit 1: invert scaling)")}},
{0xB2, {DIV_CMD_SID3_RESONANCE_SCALING, _("B2xy: Resonance scaling control (x: filter (0-3); y: bit 0: enable scaling; bit 1: invert scaling)")}},
};
const EffectHandler SID3FineDutyHandler(DIV_CMD_C64_FINE_DUTY, _("5xxx: Set pulse width (0 to FFF)"), effectValLong<12>);