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>);

View file

@ -436,8 +436,8 @@ const FurnaceGUIColors fxColors[256]={
// B0-BF
GUI_COLOR_PATTERN_EFFECT_SYS_PRIMARY,
GUI_COLOR_PATTERN_EFFECT_INVALID,
GUI_COLOR_PATTERN_EFFECT_INVALID,
GUI_COLOR_PATTERN_EFFECT_SYS_PRIMARY,
GUI_COLOR_PATTERN_EFFECT_SYS_PRIMARY,
GUI_COLOR_PATTERN_EFFECT_INVALID,
GUI_COLOR_PATTERN_EFFECT_INVALID,
GUI_COLOR_PATTERN_EFFECT_INVALID,

View file

@ -451,10 +451,10 @@ const char* sid3ShapeBits[6]={
};
const char* sid3FilterMatrixBits[5]={
_N("To filter 1"),
_N("To filter 2"),
_N("To filter 3"),
_N("To filter 4"),
_N("From filter 1"),
_N("From filter 2"),
_N("From filter 3"),
_N("From filter 4"),
NULL
};
@ -780,7 +780,7 @@ String macroSID3SpecialWaves(int id, float val, void* u)
{
if((int)val >= SID3_NUM_SPECIAL_WAVES) return "???";
return sid3SpecialWaveforms[(int)val % SID3_NUM_SPECIAL_WAVES];
return _(sid3SpecialWaveforms[(int)val % SID3_NUM_SPECIAL_WAVES]);
}
String macroSID3SourceChan(int id, float val, void* u)
@ -803,24 +803,24 @@ String macroSID3SourceChan(int id, float val, void* u)
String macroSID3NoiseLFSR(int id, float val, void* u)
{
return _("SID2 noise modes:\n\n"
"Mode 2: \n"
"Mode 3: \n"
"Mode 4: ");
return _("values close to SID2 noise modes:\n\n"
"Mode 1: 524288\n"
"Mode 2: 66\n"
"Mode 3: 541065280");
}
String macroSID2WaveMixMode(int id, float val, void* u)
{
if((int)val > 3) return "???";
return sid2WaveMixModes[(int)val];
return _(sid2WaveMixModes[(int)val]);
}
String macroSID3WaveMixMode(int id, float val, void* u)
{
if((int)val > 4) return "???";
return sid3WaveMixModes[(int)val];
return _(sid3WaveMixModes[(int)val]);
}
void addAALine(ImDrawList* dl, const ImVec2& p1, const ImVec2& p2, const ImU32 color, float thickness=1.0f) {
@ -5914,7 +5914,7 @@ void FurnaceGUI::drawInsSID3(DivInstrument* ins)
}
popToggleColors();
P(CWSliderScalar(_("Special wave"),ImGuiDataType_U8,&ins->sid3.special_wave,&_ZERO,&_SID3_SPECIAL_WAVES,sid3SpecialWaveforms[ins->sid3.special_wave % SID3_NUM_SPECIAL_WAVES])); rightClickable
P(CWSliderScalar(_("Special wave"),ImGuiDataType_U8,&ins->sid3.special_wave,&_ZERO,&_SID3_SPECIAL_WAVES,_(sid3SpecialWaveforms[ins->sid3.special_wave % SID3_NUM_SPECIAL_WAVES]))); rightClickable
if(ImGui::Checkbox(_("Wavetable channel"),&ins->sid3.doWavetable))
{

View file

@ -83,7 +83,7 @@ const char* locales[][3]={
//{"Nederlands (4%)", "nl_NL", "start Furnace opnieuw op om deze instelling effectief te maken."},
{"Polski (95%)", "pl_PL", "aby to ustawienie było skuteczne, należy ponownie uruchomić program."},
{"Português (Brasil) (90%)", "pt_BR", "reinicie o Furnace para que essa configuração entre em vigor."},
{"Русский (90%)", "ru_RU", "перезапустите программу, чтобы эта настройка вступила в силу."},
{"Русский (99%)", "ru_RU", "перезапустите программу, чтобы эта настройка вступила в силу."},
{"Slovenčina (15%)", "sk_SK", "???"},
{"Svenska", "sv_SE", "starta om programmet för att denna inställning ska träda i kraft."},
//{"ไทย (0%)", "th_TH", "???"},

View file

@ -496,7 +496,7 @@ void FurnaceGUI::drawWaveEdit() {
ImGui::TableNextColumn();
ImGui::Text(_("Width"));
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_("use a width of:\n- any on Amiga/N163\n- 32 on Game Boy, PC Engine, SCC, Konami Bubble System, Namco WSG, Virtual Boy and WonderSwan\n- 64 on FDS\n- 128 on X1-010\nany other widths will be scaled during playback."));
ImGui::SetTooltip(_("use a width of:\n- any on Amiga/N163\n- 32 on Game Boy, PC Engine, SCC, Konami Bubble System, Namco WSG, Virtual Boy and WonderSwan\n- 64 on FDS\n- 128 on X1-010\n- 256 on SID3\nany other widths will be scaled during playback."));
}
ImGui::SameLine();
ImGui::SetNextItemWidth(96.0f*dpiScale);
@ -510,7 +510,7 @@ void FurnaceGUI::drawWaveEdit() {
ImGui::SameLine();
ImGui::Text(_("Height"));
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_("use a height of:\n- 16 for Game Boy, WonderSwan, Namco WSG, Konami Bubble System, X1-010 Envelope shape and N163\n- 32 for PC Engine\n- 64 for FDS and Virtual Boy\n- 256 for X1-010 and SCC\nany other heights will be scaled during playback."));
ImGui::SetTooltip(_("use a height of:\n- 16 for Game Boy, WonderSwan, Namco WSG, Konami Bubble System, X1-010 Envelope shape and N163\n- 32 for PC Engine\n- 64 for FDS and Virtual Boy\n- 256 for X1-010, SCC and SID3\nany other heights will be scaled during playback."));
}
ImGui::SameLine();
ImGui::SetNextItemWidth(96.0f*dpiScale);