mirror of
https://github.com/libretro/stella2023.git
synced 2024-12-03 15:11:03 +00:00
Added ability to force-enable TV phosphor mode.
This is enabled in the UI or through the 'tv.phosphor' commandline argument. Note that what was previously 'tv.phosphor' (for setting the blend level) is now 'tv.phosblend'. Updated documentation in various places.
This commit is contained in:
parent
adddc635f2
commit
bd759b68cb
23
Changes.txt
23
Changes.txt
@ -14,9 +14,16 @@
|
||||
|
||||
4.7.3 to 5.0: (July 16, 2017)
|
||||
|
||||
* Note: because of major TIA/6502/RIOT changes, the state file format
|
||||
has changed, and old state files will not work with this release.
|
||||
|
||||
* Stella has moved from Sourceforge to Github.
|
||||
|
||||
* New TIA core: TODO - gather info on all new functionality:
|
||||
* Completely new TIA core is now available, ported from 6502ts by
|
||||
Christian Speckner. This new core is extremely accurate, and matches
|
||||
real hardware in almost every test we've performed. New features
|
||||
include:
|
||||
- TODO - gather info on all new functionality:
|
||||
- RSYNC
|
||||
- YStart autodetection
|
||||
- Proper emulation of RDY during write cycles (WSYNC).
|
||||
@ -28,10 +35,15 @@
|
||||
|
||||
* Implemented new phosphor emulation mode, which is much closer to real
|
||||
TV output. Related to this, added ability to change the default
|
||||
phosphor blend level in the UI and through the new 'tv.phosphor'
|
||||
phosphor blend level in the UI and through the new 'tv.phosblend'
|
||||
commandline argument. Special thanks to Thomas Jentzsch for the idea
|
||||
and implementation.
|
||||
|
||||
* TV phosphor effect can now be force-enabled for all ROMs, instead
|
||||
of manually setting ROM properties for each ROM. This is accessible
|
||||
in the UI and through the 'tv.phosphor' commandline argument, and
|
||||
defaults to being off (or enabled per-ROM).
|
||||
|
||||
* Much improved RIOT timer emulation never before seen in any emulator.
|
||||
Special thanks to DirtyHairy for the implementation, and alex_79 for
|
||||
finding documentation that finally describes in more detail how the
|
||||
@ -69,8 +81,8 @@
|
||||
clearly indicate if an item can be modified.
|
||||
- Debugger '.lst' and '.sym' files are now searched based on the name
|
||||
of the ROM file, and not on the internal properties name.
|
||||
- Snapshots can now be saved by pressing F12 key (the various other
|
||||
ways to save snapshots still exist).
|
||||
- Snapshots can now be saved by pressing the F12 key (the various
|
||||
other ways to save snapshots still exist).
|
||||
|
||||
* Mouse grabbing is now enabled in windowed mode only when the ROM is
|
||||
using a virtual analog controller (paddles, trakball, etc).
|
||||
@ -99,6 +111,7 @@
|
||||
easier to read.
|
||||
|
||||
* When in 'ROM launcher mode', Stella now uses slightly less CPU time.
|
||||
More work is required in this area, though.
|
||||
|
||||
* Added ROM properties for D.K. VCS homebrew ROM, thanks to Andreas
|
||||
Dietrich.
|
||||
@ -141,7 +154,7 @@
|
||||
|
||||
* Updated build scripts for Visual Studio 2017 (Windows) and MacOS
|
||||
Sierra (latest version of Xcode), and make these the minimum supported
|
||||
versions.
|
||||
versions for building Stella.
|
||||
|
||||
* Updated UNIX configure script to work with the clang 5+ and gcc 7+
|
||||
compiler versions, and fixed compile issues on AArch64 and ppc64le
|
||||
|
@ -106,7 +106,7 @@ void EventHandler::initialize()
|
||||
|
||||
// Default phosphor blend
|
||||
Properties::setDefault(Display_PPBlend,
|
||||
myOSystem.settings().getString("tv.phosphor"));
|
||||
myOSystem.settings().getString("tv.phosblend"));
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -55,7 +55,8 @@ Settings::Settings(OSystem& osystem)
|
||||
|
||||
// TV filtering options
|
||||
setInternal("tv.filter", "0");
|
||||
setInternal("tv.phosphor", "50");
|
||||
setInternal("tv.phosphor", "byrom");
|
||||
setInternal("tv.phosblend", "50");
|
||||
setInternal("tv.jitter", "true");
|
||||
setInternal("tv.jitter_recovery", "10");
|
||||
setInternal("tv.scanlines", "25");
|
||||
@ -279,8 +280,11 @@ void Settings::validate()
|
||||
sort(s.begin(), s.end());
|
||||
if(s != "bgopry") setInternal("tia.dbgcolors", "roygpb");
|
||||
|
||||
i = getInt("tv.phosphor");
|
||||
if(i < 0 || i > 100) setInternal("tv.phosphor", "50");
|
||||
s = getString("tv.phosphor");
|
||||
if(s != "always" && s != "byrom") setInternal("tv.phosphor", "byrom");
|
||||
|
||||
i = getInt("tv.phosblend");
|
||||
if(i < 0 || i > 100) setInternal("tv.phosblend", "50");
|
||||
|
||||
i = getInt("tv.filter");
|
||||
if(i < 0 || i > 5) setInternal("tv.filter", "0");
|
||||
@ -380,7 +384,8 @@ void Settings::usage() const
|
||||
<< " -tia.dbgcolors <string> Debug colors to use for each object (see manual for description)\n"
|
||||
<< endl
|
||||
<< " -tv.filter <0-5> Set TV effects off (0) or to specified mode (1-5)\n"
|
||||
<< " -tv.phosphor <0-100> Set default blend level in phosphor mode\n"
|
||||
<< " -tv.phosphor <always|byrom> When to use phosphor mode\n"
|
||||
<< " -tv.phosblend <0-100> Set default blend level in phosphor mode\n"
|
||||
<< " -tv.jitter <1|0> Enable TV jitter effect\n"
|
||||
<< " -tv.jitter_recovery <1-20> Set recovery time for TV jitter effect\n"
|
||||
<< " -tv.scanlines <0-100> Set scanline intensity to percentage (0 disables completely)\n"
|
||||
|
@ -67,7 +67,9 @@ void TIASurface::initialize(const Console& console, const VideoMode& mode)
|
||||
mySLineSurface->setDstPos(mode.image.x(), mode.image.y());
|
||||
mySLineSurface->setDstSize(mode.image.width(), mode.image.height());
|
||||
|
||||
bool p_enable = console.properties().get(Display_Phosphor) == "YES";
|
||||
// Phosphor mode can be enabled either globally or per-ROM
|
||||
bool p_enable = myOSystem.settings().getString("tv.phosphor") == "always" ||
|
||||
console.properties().get(Display_Phosphor) == "YES";
|
||||
int p_blend = atoi(console.properties().get(Display_PPBlend).c_str());
|
||||
enablePhosphor(p_enable, p_blend);
|
||||
setNTSC(NTSCFilter::Preset(myOSystem.settings().getInt("tv.filter")), false);
|
||||
|
@ -53,7 +53,7 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent,
|
||||
|
||||
// Set real dimensions
|
||||
_w = std::min(52 * fontWidth + 10, max_w);
|
||||
_h = std::min(16 * (lineHeight + 4) + 10, max_h);
|
||||
_h = std::min(16 * (lineHeight + 4) + 14, max_h);
|
||||
|
||||
// The tab widget
|
||||
xpos = ypos = 5;
|
||||
@ -249,10 +249,13 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent,
|
||||
pwidth = font.getMaxCharWidth() * 6;
|
||||
|
||||
// TV Phosphor effect
|
||||
myTVPhosLabel = new StaticTextWidget(myTab, font, xpos, ypos,
|
||||
font.getStringWidth("Phosphor Effect"), fontHeight,
|
||||
"Phosphor Effect", kTextAlignLeft);
|
||||
ypos += lineHeight;
|
||||
items.clear();
|
||||
VarList::push_back(items, "Always", "always");
|
||||
VarList::push_back(items, "Per-ROM", "byrom");
|
||||
myTVPhosphor = new PopUpWidget(myTab, font, xpos, ypos,
|
||||
font.getStringWidth("Per-ROM"), lineHeight, items,
|
||||
"TV Phosphor ", font.getStringWidth("TV Phosphor "));
|
||||
ypos += lineHeight + 4;
|
||||
|
||||
// TV Phosphor default level
|
||||
xpos += 20;
|
||||
@ -440,9 +443,13 @@ void VideoDialog::loadConfig()
|
||||
// TV Custom adjustables
|
||||
loadTVAdjustables(NTSCFilter::PRESET_CUSTOM);
|
||||
|
||||
// TV phosphor mode
|
||||
myTVPhosphor->setSelected(
|
||||
instance().settings().getString("tv.phosphor"), "byrom");
|
||||
|
||||
// TV phosphor blend
|
||||
myTVPhosLevel->setValue(instance().settings().getInt("tv.phosphor"));
|
||||
myTVPhosLevelLabel->setLabel(instance().settings().getString("tv.phosphor"));
|
||||
myTVPhosLevel->setValue(instance().settings().getInt("tv.phosblend"));
|
||||
myTVPhosLevelLabel->setLabel(instance().settings().getString("tv.phosblend"));
|
||||
|
||||
// TV jitter
|
||||
myTVJitterRec->setValue(instance().settings().getInt("tv.jitter_recovery"));
|
||||
@ -538,8 +545,12 @@ void VideoDialog::saveConfig()
|
||||
adj.bleed = myTVBleed->getValue();
|
||||
instance().frameBuffer().tiaSurface().ntsc().setCustomAdjustables(adj);
|
||||
|
||||
// TV phosphor mode
|
||||
instance().settings().setValue("tv.phosphor",
|
||||
myTVPhosphor->getSelectedTag().toString());
|
||||
|
||||
// TV phosphor blend
|
||||
instance().settings().setValue("tv.phosphor", myTVPhosLevelLabel->getLabel());
|
||||
instance().settings().setValue("tv.phosblend", myTVPhosLevelLabel->getLabel());
|
||||
Properties::setDefault(Display_PPBlend, myTVPhosLevelLabel->getLabel());
|
||||
|
||||
// TV jitter
|
||||
@ -600,6 +611,9 @@ void VideoDialog::setDefaults()
|
||||
{
|
||||
myTVMode->setSelected("0", "0");
|
||||
|
||||
// TV phosphor mode
|
||||
myTVPhosphor->setSelected("byrom", "byrom");
|
||||
|
||||
// TV phosphor blend
|
||||
myTVPhosLevel->setValue(50);
|
||||
myTVPhosLevelLabel->setLabel("50");
|
||||
|
@ -104,7 +104,7 @@ class VideoDialog : public Dialog
|
||||
StaticTextWidget* myTVJitterRecLabel;
|
||||
|
||||
// TV phosphor effect
|
||||
StaticTextWidget* myTVPhosLabel;
|
||||
PopUpWidget* myTVPhosphor;
|
||||
SliderWidget* myTVPhosLevel;
|
||||
StaticTextWidget* myTVPhosLevelLabel;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user