mirror of https://github.com/stella-emu/stella.git
Phosphor and scanlines levels: 0 displayed as 'off'
This commit is contained in:
parent
19148d4d27
commit
e2f5be4725
|
@ -362,7 +362,7 @@ void EventHandler::handleEvent(Event::Type event, bool pressed)
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
case Event::Fry:
|
case Event::Fry:
|
||||||
if(myPKeyHandler->useCtrlKey()) myFryingFlag = bool(pressed);
|
if(myPKeyHandler->useCtrlKey()) myFryingFlag = pressed;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case Event::VolumeDecrease:
|
case Event::VolumeDecrease:
|
||||||
|
|
|
@ -112,7 +112,7 @@ void StellaSettingsDialog::addVideoOptions(WidgetArray& wid, int& xpos, int& ypo
|
||||||
items, "TV mode ", lwidth, kTVModeChanged);
|
items, "TV mode ", lwidth, kTVModeChanged);
|
||||||
wid.push_back(myTVMode);
|
wid.push_back(myTVMode);
|
||||||
ypos += lineHeight + VGAP * 2;
|
ypos += lineHeight + VGAP * 2;
|
||||||
|
|
||||||
lwidth = font.getStringWidth("Intensity ");
|
lwidth = font.getStringWidth("Intensity ");
|
||||||
swidth = font.getMaxCharWidth() * 10;
|
swidth = font.getMaxCharWidth() * 10;
|
||||||
|
|
||||||
|
@ -120,21 +120,21 @@ void StellaSettingsDialog::addVideoOptions(WidgetArray& wid, int& xpos, int& ypo
|
||||||
myTVScanlines = new StaticTextWidget(this, font, xpos, ypos + 1, "Scanlines:");
|
myTVScanlines = new StaticTextWidget(this, font, xpos, ypos + 1, "Scanlines:");
|
||||||
ypos += lineHeight;
|
ypos += lineHeight;
|
||||||
myTVScanIntense = new SliderWidget(this, font, xpos + INDENT, ypos-1, swidth, lineHeight,
|
myTVScanIntense = new SliderWidget(this, font, xpos + INDENT, ypos-1, swidth, lineHeight,
|
||||||
"Intensity ", lwidth, 0, fontWidth * 2);
|
"Intensity ", lwidth, kScanlinesChanged, fontWidth * 3);
|
||||||
myTVScanIntense->setMinValue(0); myTVScanIntense->setMaxValue(10);
|
myTVScanIntense->setMinValue(0); myTVScanIntense->setMaxValue(10);
|
||||||
myTVScanIntense->setTickmarkInterval(2);
|
myTVScanIntense->setTickmarkInterval(2);
|
||||||
wid.push_back(myTVScanIntense);
|
wid.push_back(myTVScanIntense);
|
||||||
ypos += lineHeight + VGAP;
|
ypos += lineHeight + VGAP;
|
||||||
|
|
||||||
// TV Phosphor effect
|
// TV Phosphor effect
|
||||||
new StaticTextWidget(this, font, xpos, ypos + 1, "Phosphor effect:");
|
new StaticTextWidget(this, font, xpos, ypos + 1, "Phosphor effect:");
|
||||||
ypos += lineHeight;
|
ypos += lineHeight;
|
||||||
// TV Phosphor blend level
|
// TV Phosphor blend level
|
||||||
myTVPhosLevel = new SliderWidget(this, font, xpos + INDENT, ypos-1, swidth, lineHeight,
|
myTVPhosLevel = new SliderWidget(this, font, xpos + INDENT, ypos-1, swidth, lineHeight,
|
||||||
"Blend ", lwidth, 0, fontWidth * 2);
|
"Blend ", lwidth, kPhosphorChanged, fontWidth * 3);
|
||||||
myTVPhosLevel->setMinValue(0); myTVPhosLevel->setMaxValue(10);
|
myTVPhosLevel->setMinValue(0); myTVPhosLevel->setMaxValue(10);
|
||||||
myTVPhosLevel->setTickmarkInterval(2);
|
myTVPhosLevel->setTickmarkInterval(2);
|
||||||
wid.push_back(myTVPhosLevel);
|
wid.push_back(myTVPhosLevel);
|
||||||
ypos += lineHeight + VGAP;
|
ypos += lineHeight + VGAP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,11 +232,11 @@ void StellaSettingsDialog::saveConfig()
|
||||||
instance().settings().setValue("tv.phosphor",
|
instance().settings().setValue("tv.phosphor",
|
||||||
myTVPhosLevel->getValue() > 0 ? "always" : "byrom");
|
myTVPhosLevel->getValue() > 0 ? "always" : "byrom");
|
||||||
// TV phosphor blend
|
// TV phosphor blend
|
||||||
instance().settings().setValue("tv.phosblend",
|
instance().settings().setValue("tv.phosblend",
|
||||||
levelToValue(myTVPhosLevel->getValue()));
|
levelToValue(myTVPhosLevel->getValue()));
|
||||||
|
|
||||||
// TV scanline intensity and interpolation
|
// TV scanline intensity and interpolation
|
||||||
instance().settings().setValue("tv.scanlines",
|
instance().settings().setValue("tv.scanlines",
|
||||||
levelToValue(myTVScanIntense->getValue()));
|
levelToValue(myTVScanIntense->getValue()));
|
||||||
|
|
||||||
// Controller properties
|
// Controller properties
|
||||||
|
@ -300,6 +300,16 @@ void StellaSettingsDialog::handleCommand(CommandSender* sender, int cmd,
|
||||||
handleTVModeChange();
|
handleTVModeChange();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case kScanlinesChanged:
|
||||||
|
if(myTVScanIntense->getValue() == 0)
|
||||||
|
myTVScanIntense->setValueLabel("off");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case kPhosphorChanged:
|
||||||
|
if(myTVPhosLevel->getValue() == 0)
|
||||||
|
myTVPhosLevel->setValueLabel("off");
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Dialog::handleCommand(sender, cmd, data, 0);
|
Dialog::handleCommand(sender, cmd, data, 0);
|
||||||
break;
|
break;
|
||||||
|
@ -405,7 +415,7 @@ int StellaSettingsDialog::levelToValue(int level)
|
||||||
{
|
{
|
||||||
const int NUM_LEVELS = 11;
|
const int NUM_LEVELS = 11;
|
||||||
uInt8 values[NUM_LEVELS] = { 0, 5, 11, 18, 26, 35, 45, 56, 68, 81, 95 };
|
uInt8 values[NUM_LEVELS] = { 0, 5, 11, 18, 26, 35, 45, 56, 68, 81, 95 };
|
||||||
|
|
||||||
return values[std::min(level, NUM_LEVELS - 1)];
|
return values[std::min(level, NUM_LEVELS - 1)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ class StellaSettingsDialog : public Dialog
|
||||||
StaticTextWidget* myTVScanlines;
|
StaticTextWidget* myTVScanlines;
|
||||||
SliderWidget* myTVScanIntense;
|
SliderWidget* myTVScanIntense;
|
||||||
|
|
||||||
// TV phosphor effect
|
// TV phosphor effect
|
||||||
SliderWidget* myTVPhosLevel;
|
SliderWidget* myTVPhosLevel;
|
||||||
|
|
||||||
// Controller properties
|
// Controller properties
|
||||||
|
@ -77,7 +77,9 @@ class StellaSettingsDialog : public Dialog
|
||||||
StaticTextWidget* myRightPortDetected;
|
StaticTextWidget* myRightPortDetected;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
kTVModeChanged = 'SStv',
|
kTVModeChanged = 'SStv',
|
||||||
|
kScanlinesChanged = 'SSsc',
|
||||||
|
kPhosphorChanged = 'SSph'
|
||||||
};
|
};
|
||||||
|
|
||||||
// Game properties for currently loaded ROM
|
// Game properties for currently loaded ROM
|
||||||
|
|
Loading…
Reference in New Issue