add cutoff & resonance scaling control effects, work more on Russian locale
This commit is contained in:
parent
5fd93596b6
commit
f4ff45efb7
|
@ -105,6 +105,12 @@ wave channel has all these features, except, obviously, waveform generation stag
|
|||
- `AExx`: **tone phase reset.** `xx` is the tick on which the phase reset happens.
|
||||
- `AFxx`: **noise phase reset.** `xx` is the tick on which the phase reset happens.
|
||||
- `B0xx`: **envelope reset.** `xx` is the tick on which the envelope reset happens.
|
||||
- `B1xy`: **filter cutoff scaling control.** `x` is the filter (`0-3`), and lower 2 bits of `y` control the scaling:
|
||||
- `bit 0`: enable cutoff scaling
|
||||
- `bit 1`: inverse cutoff scaling
|
||||
- `B2xy`: **filter resonance scaling control.** `x` is the filter (`0-3`), and lower 2 bits of `y` control the scaling:
|
||||
- `bit 0`: enable resonance scaling
|
||||
- `bit 1`: inverse resonance scaling
|
||||
|
||||
## info
|
||||
|
||||
|
|
3694
po/furnace.pot
3694
po/furnace.pot
File diff suppressed because it is too large
Load diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
3694
po/pt_BR.po
3694
po/pt_BR.po
File diff suppressed because it is too large
Load diff
3742
po/zh_HK.po
3742
po/zh_HK.po
File diff suppressed because it is too large
Load diff
|
@ -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
|
||||
};
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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!");
|
||||
|
|
|
@ -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>);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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", "???"},
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue