Phosphor and scanlines levels: 0 displayed as 'off'

This commit is contained in:
thrust26 2019-04-02 18:16:04 +02:00
parent 19148d4d27
commit e2f5be4725
3 changed files with 27 additions and 15 deletions

View File

@ -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:

View File

@ -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)];
} }

View File

@ -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