Updated UI to be able to change TV jitter effect and recovery time.

Updated various files for 4.7.1 release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3279 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2016-02-13 01:21:28 +00:00
parent c5e9d3618b
commit 1b223368e6
11 changed files with 102 additions and 30 deletions

View File

@ -9,7 +9,7 @@
SSSS ttt eeeee llll llll aaaaa SSSS ttt eeeee llll llll aaaaa
=========================================================================== ===========================================================================
Release 4.7 for Linux, MacOSX and Windows Release 4.7.1 for Linux, MacOSX and Windows
=========================================================================== ===========================================================================
The Atari 2600 Video Computer System (VCS), introduced in 1977, was the The Atari 2600 Video Computer System (VCS), introduced in 1977, was the
@ -21,30 +21,30 @@ all of your favourite Atari 2600 games again! Stella was originally
developed for Linux by Bradford W. Mott, however, it has been ported to a developed for Linux by Bradford W. Mott, however, it has been ported to a
number of other platforms and is currently maintained by Stephen Anthony. number of other platforms and is currently maintained by Stephen Anthony.
This is the 4.7 release of Stella for Linux, Mac OSX and Windows. The This is the 4.7.1 release of Stella for Linux, Mac OSX and Windows. The
distributions currently available are: distributions currently available are:
* Binaries for Windows XP_SP3(*)/Vista/7/8/10 : * Binaries for Windows XP_SP3(*)/Vista/7/8/10 :
Stella-4.7-win32.exe (32-bit EXE installer) Stella-4.7.1-win32.exe (32-bit EXE installer)
Stella-4.7-x64.exe (64-bit EXE installer) Stella-4.7.1-x64.exe (64-bit EXE installer)
Stella-4.7-windows.zip (32/64 bit versions) Stella-4.7.1-windows.zip (32/64 bit versions)
(*) Note: Support for Windows XP is problematic on some systems, (*) Note: Support for Windows XP is problematic on some systems,
and will probably be discontinued in a future release. and will probably be discontinued in a future release.
* Binary distribution for MacOS X 10.7 and above : * Binary distribution for MacOS X 10.7 and above :
Stella-4.7-macosx.dmg (64-bit Intel) Stella-4.7.1-macosx.dmg (64-bit Intel)
* Binary distribution in 32-bit & 64-bit Ubuntu DEB format : * Binary distribution in 32-bit & 64-bit Ubuntu DEB format :
stella_4.7-1_i386.deb stella_4.7.1-1_i386.deb
stella_4.7-1_amd64.deb stella_4.7.1-1_amd64.deb
* Binary distribution in 32-bit & 64-bit RPM format : * Binary distribution in 32-bit & 64-bit RPM format :
stella-4.7-2.i386.rpm stella-4.7.1-2.i386.rpm
stella-4.7-2.x86_64.rpm stella-4.7.1-2.x86_64.rpm
* Source code distribution for all platforms : * Source code distribution for all platforms :
stella-4.7-src.tar.gz stella-4.7.1-src.tar.xz
Distribution Site Distribution Site

View File

@ -12,13 +12,15 @@
Release History Release History
=========================================================================== ===========================================================================
4.7 to 4.7.1: (xxx xx, 2016) 4.7 to 4.7.1: (Feb. 13, 2016)
* Improved TV 'jitter' emulation; the recovery time can now be spread * Improved TV 'jitter' emulation; the recovery time can now be spread
over multiple frame, to simulate a real TV taking multiple frames to over multiple frame, to simulate a real TV taking multiple frames to
recover. Related to this, added new commandline argument recover. Related to this, added new commandline argument
'tv.jitter_recovery' to set the recovery time. Special thanks to 'tv.jitter_recovery' to set the recovery time. Finally, enabling
SpiceWare of AtariAge for the initial idea and implementation. the jitter effect and the recovery time are not accessible through
the UI. Special thanks to SpiceWare of AtariAge for the initial idea
and implementation.
* Fixed bug with 'Medieval Mayhem' ROMs; the paddle range was set too * Fixed bug with 'Medieval Mayhem' ROMs; the paddle range was set too
low, and as a result the number of players couldn't be selected. low, and as a result the number of players couldn't be selected.
@ -31,7 +33,7 @@
* Indirectly fixed issues with Stelladaptor/2600-daptor devices and * Indirectly fixed issues with Stelladaptor/2600-daptor devices and
paddles having too large of a deadzone in Linux. Currently, this paddles having too large of a deadzone in Linux. Currently, this
involves running an external application to set the deadzone, involves running an external application to set the deadzone,
since SDL does not yet expose this information. The program is since SDL2 does not yet expose this information. The program is
called 'evdev-joystick', and will be released separately from Stella. called 'evdev-joystick', and will be released separately from Stella.
* Updated internal ROM properties database to ROM-Hunter version 11 * Updated internal ROM properties database to ROM-Hunter version 11

7
debian/changelog vendored
View File

@ -1,3 +1,10 @@
stella (4.7.1-1) stable; urgency=high
* Version 4.7.1 release
-- Stephen Anthony <stephena@users.sf.net> Sat, 13 Feb 2016 17:09:59 -0230
stella (4.7-1) stable; urgency=high stella (4.7-1) stable; urgency=high
* Version 4.7 release * Version 4.7 release

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

@ -10,7 +10,7 @@
<br><br> <br><br>
<center><h2><b>A multi-platform Atari 2600 VCS emulator</b></h2></center> <center><h2><b>A multi-platform Atari 2600 VCS emulator</b></h2></center>
<center><h4><b>Release 4.7</b></h4></center> <center><h4><b>Release 4.7.1</b></h4></center>
<br><br> <br><br>
<center><h2><b>User's Guide</b></h2></center> <center><h2><b>User's Guide</b></h2></center>
@ -54,7 +54,7 @@
<br><br><br> <br><br><br>
<center><b>February 1999 - January 2016</b></center> <center><b>February 1999 - February 2016</b></center>
<center><b>The Stella Team</b></center> <center><b>The Stella Team</b></center>
<center><b><a href="http://stella.sourceforge.net">Stella Homepage</a></b></center> <center><b><a href="http://stella.sourceforge.net">Stella Homepage</a></b></center>
@ -1855,6 +1855,17 @@
(vs. an integral stretch which won't necessarily completely fill the screen).</td> (vs. an integral stretch which won't necessarily completely fill the screen).</td>
</tr> </tr>
<tr>
<td><pre>-tv.jitter &lt;1|0&gt;</pre></td>
<td>Enable TV jitter/roll effect, when there are too many or too few scanlines
per frame.</td>
</tr>
<tr>
<td><pre>-tv.jitter_recovery &lt;1 - 20&gt;</pre></td>
<td>When TV jitter/roll effect is enabled, determines how long to delay recovery
time (recovery spread over multiple frames).</td>
</tr>
<tr> <tr>
<td><pre>-tv.filter &lt;1 - 6&gt;</pre></td> <td><pre>-tv.filter &lt;1 - 6&gt;</pre></td>
@ -2418,6 +2429,8 @@
<td valign="top"> <td valign="top">
<table border="1" cellpadding="4"> <table border="1" cellpadding="4">
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see <a href="#CommandLine">CommandLine</a></th></tr> <tr><th>Item</th><th>Brief description</th><th>For more information,<br>see <a href="#CommandLine">CommandLine</a></th></tr>
<tr><td>Jitter/Roll effect</td><td>emulate screen roll with inconsistent scanline count</td><td>-tv.jitter</td></tr>
<tr><td>Jitter/Roll recovery</td><td>determines recovery time for screen rolling</td><td>-tv.jitter_recovery</td></tr>
<tr><td>TV Mode</td><td>disable TV effects, or select TV preset</td><td>-tv.filter</td></tr> <tr><td>TV Mode</td><td>disable TV effects, or select TV preset</td><td>-tv.filter</td></tr>
<tr><td>Scanline Intensity</td><td>sets scanline black-level intensity</td><td>-tv.scanlines</td></tr> <tr><td>Scanline Intensity</td><td>sets scanline black-level intensity</td><td>-tv.scanlines</td></tr>
<tr><td>Scanline Interpolation</td><td>smooth/blend scanlines into image</td><td>-tv.scaninter</td></tr> <tr><td>Scanline Interpolation</td><td>smooth/blend scanlines into image</td><td>-tv.scaninter</td></tr>

View File

@ -22,7 +22,7 @@
#include <cstdlib> #include <cstdlib>
#define STELLA_VERSION "4.7.1_pre" #define STELLA_VERSION "4.7.1"
#define STELLA_BUILD atoi("$Rev$" + 6) #define STELLA_BUILD atoi("$Rev$" + 6)
#endif #endif

View File

@ -217,7 +217,6 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent,
// Custom adjustables (using macro voodoo) // Custom adjustables (using macro voodoo)
xpos += 8; ypos += 4; xpos += 8; ypos += 4;
int orig_ypos = ypos;
pwidth = lwidth; pwidth = lwidth;
lwidth = font.getStringWidth("Saturation: "); lwidth = font.getStringWidth("Saturation: ");
@ -245,7 +244,18 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent,
CREATE_CUSTOM_SLIDERS(Bleed, "Bleeding: "); CREATE_CUSTOM_SLIDERS(Bleed, "Bleeding: ");
xpos += myTVContrast->getWidth() + myTVContrastLabel->getWidth() + 20; xpos += myTVContrast->getWidth() + myTVContrastLabel->getWidth() + 20;
ypos = orig_ypos; ypos = 8;
// TV jitter effect
myTVJitter = new CheckboxWidget(myTab, font, xpos, ypos,
"Jitter/Roll effect", kTVJitterChanged);
wid.push_back(myTVJitter);
ypos += lineHeight;
lwidth = font.getStringWidth("Intensity: ");
pwidth = font.getMaxCharWidth() * 6;
CREATE_CUSTOM_SLIDERS(JitterRec, "Recovery: ");
myTVJitterRec->setMinValue(1); myTVJitterRec->setMaxValue(20);
ypos += 4;
// Scanline intensity and interpolation // Scanline intensity and interpolation
myTVScanLabel = myTVScanLabel =
@ -254,8 +264,6 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent,
ypos += lineHeight; ypos += lineHeight;
xpos += 20; xpos += 20;
lwidth = font.getStringWidth("Intensity: ");
pwidth = font.getMaxCharWidth() * 6;
CREATE_CUSTOM_SLIDERS(ScanIntense, "Intensity: "); CREATE_CUSTOM_SLIDERS(ScanIntense, "Intensity: ");
myTVScanInterpolate = new CheckboxWidget(myTab, font, xpos, ypos, myTVScanInterpolate = new CheckboxWidget(myTab, font, xpos, ypos,
@ -273,7 +281,7 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent,
wid.push_back(myClone ## obj); \ wid.push_back(myClone ## obj); \
ypos += lineHeight + 10 ypos += lineHeight + 10
ypos += lineHeight; ypos += 4;
CREATE_CLONE_BUTTON(Composite, "Clone Composite"); CREATE_CLONE_BUTTON(Composite, "Clone Composite");
CREATE_CLONE_BUTTON(Svideo, "Clone S-Video"); CREATE_CLONE_BUTTON(Svideo, "Clone S-Video");
CREATE_CLONE_BUTTON(RGB, "Clone RGB"); CREATE_CLONE_BUTTON(RGB, "Clone RGB");
@ -370,6 +378,11 @@ void VideoDialog::loadConfig()
// TV Custom adjustables // TV Custom adjustables
loadTVAdjustables(NTSCFilter::PRESET_CUSTOM); loadTVAdjustables(NTSCFilter::PRESET_CUSTOM);
// TV jitter
myTVJitterRec->setValue(instance().settings().getInt("tv.jitter_recovery"));
myTVJitterRecLabel->setLabel(instance().settings().getString("tv.jitter_recovery"));
handleTVJitterChange(instance().settings().getBool("tv.jitter"));
// TV scanline intensity and interpolation // TV scanline intensity and interpolation
myTVScanIntense->setValue(instance().settings().getInt("tv.scanlines")); myTVScanIntense->setValue(instance().settings().getInt("tv.scanlines"));
myTVScanIntenseLabel->setLabel(instance().settings().getString("tv.scanlines")); myTVScanIntenseLabel->setLabel(instance().settings().getString("tv.scanlines"));
@ -456,6 +469,15 @@ void VideoDialog::saveConfig()
adj.bleed = myTVBleed->getValue(); adj.bleed = myTVBleed->getValue();
instance().frameBuffer().tiaSurface().ntsc().setCustomAdjustables(adj); instance().frameBuffer().tiaSurface().ntsc().setCustomAdjustables(adj);
// TV jitter
instance().settings().setValue("tv.jitter", myTVJitter->getState());
instance().settings().setValue("tv.jitter_recovery", myTVJitterRecLabel->getLabel());
if(instance().hasConsole())
{
instance().console().tia().toggleJitter(myTVJitter->getState() ? 1 : 0);
instance().console().tia().setJitterRecoveryFactor(myTVJitterRec->getValue());
}
// TV scanline intensity and interpolation // TV scanline intensity and interpolation
instance().settings().setValue("tv.scanlines", myTVScanIntenseLabel->getLabel()); instance().settings().setValue("tv.scanlines", myTVScanIntenseLabel->getLabel());
instance().settings().setValue("tv.scaninter", myTVScanInterpolate->getState()); instance().settings().setValue("tv.scaninter", myTVScanInterpolate->getState());
@ -505,6 +527,11 @@ void VideoDialog::setDefaults()
// Make sure that mutually-exclusive items are not enabled at the same time // Make sure that mutually-exclusive items are not enabled at the same time
handleTVModeChange(NTSCFilter::PRESET_OFF); handleTVModeChange(NTSCFilter::PRESET_OFF);
loadTVAdjustables(NTSCFilter::PRESET_CUSTOM); loadTVAdjustables(NTSCFilter::PRESET_CUSTOM);
// TV jitter
myTVJitterRec->setValue(10);
myTVJitterRecLabel->setLabel("10");
handleTVJitterChange(false);
break; break;
} }
} }
@ -552,6 +579,14 @@ void VideoDialog::handleTVModeChange(NTSCFilter::Preset preset)
_dirty = true; _dirty = true;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void VideoDialog::handleTVJitterChange(bool enable)
{
myTVJitter->setState(enable);
myTVJitterRec->setEnabled(enable);
myTVJitterRecLabel->setEnabled(enable);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void VideoDialog::loadTVAdjustables(NTSCFilter::Preset preset) void VideoDialog::loadTVAdjustables(NTSCFilter::Preset preset)
{ {
@ -635,7 +670,10 @@ void VideoDialog::handleCommand(CommandSender* sender, int cmd,
break; break;
case kTVScanIntenseChanged: myTVScanIntenseLabel->setValue(myTVScanIntense->getValue()); case kTVScanIntenseChanged: myTVScanIntenseLabel->setValue(myTVScanIntense->getValue());
break; break;
case kTVJitterChanged: handleTVJitterChange(myTVJitter->getState());
break;
case kTVJitterRecChanged: myTVJitterRecLabel->setValue(myTVJitterRec->getValue());
break;
case kCloneCompositeCmd: loadTVAdjustables(NTSCFilter::PRESET_COMPOSITE); case kCloneCompositeCmd: loadTVAdjustables(NTSCFilter::PRESET_COMPOSITE);
break; break;
case kCloneSvideoCmd: loadTVAdjustables(NTSCFilter::PRESET_SVIDEO); case kCloneSvideoCmd: loadTVAdjustables(NTSCFilter::PRESET_SVIDEO);

View File

@ -46,6 +46,7 @@ class VideoDialog : public Dialog
void handleFullscreenChange(bool enable); void handleFullscreenChange(bool enable);
void handleTVModeChange(NTSCFilter::Preset); void handleTVModeChange(NTSCFilter::Preset);
void handleTVJitterChange(bool enable);
void loadTVAdjustables(NTSCFilter::Preset preset); void loadTVAdjustables(NTSCFilter::Preset preset);
void handleCommand(CommandSender* sender, int cmd, int data, int id) override; void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
@ -109,6 +110,11 @@ class VideoDialog : public Dialog
ButtonWidget* myCloneBad; ButtonWidget* myCloneBad;
ButtonWidget* myCloneCustom; ButtonWidget* myCloneCustom;
// TV jitter effects
CheckboxWidget* myTVJitter;
SliderWidget* myTVJitterRec;
StaticTextWidget* myTVJitterRecLabel;
enum { enum {
kNAspectRatioChanged = 'VDan', kNAspectRatioChanged = 'VDan',
kPAspectRatioChanged = 'VDap', kPAspectRatioChanged = 'VDap',
@ -127,6 +133,9 @@ class VideoDialog : public Dialog
kTVGammaChanged = 'TVga', kTVGammaChanged = 'TVga',
kTVScanIntenseChanged= 'TVsc', kTVScanIntenseChanged= 'TVsc',
kTVJitterChanged = 'TVjt',
kTVJitterRecChanged = 'TVjr',
kCloneCompositeCmd = 'CLcp', kCloneCompositeCmd = 'CLcp',
kCloneSvideoCmd = 'CLsv', kCloneSvideoCmd = 'CLsv',
kCloneRGBCmd = 'CLrb', kCloneRGBCmd = 'CLrb',

View File

@ -53,7 +53,7 @@
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>StLa</string> <string>StLa</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>4.7</string> <string>4.7.1</string>
<key>LSApplicationCategoryType</key> <key>LSApplicationCategoryType</key>
<string>public.app-category.games</string> <string>public.app-category.games</string>
<key>LSMinimumSystemVersionByArchitecture</key> <key>LSMinimumSystemVersionByArchitecture</key>

View File

@ -1,5 +1,5 @@
%define name stella %define name stella
%define version 4.7 %define version 4.7.1
%define rel 1 %define rel 1
%define enable_sound 1 %define enable_sound 1
@ -101,6 +101,9 @@ rm -rf $RPM_BUILD_DIR/%{name}-%{version}
%_datadir/icons/large/%{name}.png %_datadir/icons/large/%{name}.png
%changelog %changelog
* Sat Feb 13 2016 Stephen Anthony <stephena@users.sf.net> 4.7.1-1
- Version 4.7.1 release
* Mon Jan 25 2016 Stephen Anthony <stephena@users.sf.net> 4.7-1 * Mon Jan 25 2016 Stephen Anthony <stephena@users.sf.net> 4.7-1
- Version 4.7 release - Version 4.7 release

View File

@ -36,8 +36,8 @@ IDI_ICON ICON "stella.ico"
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 4,7,0,0 FILEVERSION 4,7,1,0
PRODUCTVERSION 4,7,0,0 PRODUCTVERSION 4,7,1,0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -55,12 +55,12 @@ BEGIN
VALUE "Comments", "The multi-platform Atari 2600 emulator. Stella is released under the GPLv2." VALUE "Comments", "The multi-platform Atari 2600 emulator. Stella is released under the GPLv2."
VALUE "CompanyName", "The Stella Team (http://stella.sourceforge.net)" VALUE "CompanyName", "The Stella Team (http://stella.sourceforge.net)"
VALUE "FileDescription", "Stella" VALUE "FileDescription", "Stella"
VALUE "FileVersion", "4.7" VALUE "FileVersion", "4.7.1"
VALUE "InternalName", "Stella" VALUE "InternalName", "Stella"
VALUE "LegalCopyright", "Copyright (C) 1995-2016 The Stella Team" VALUE "LegalCopyright", "Copyright (C) 1995-2016 The Stella Team"
VALUE "OriginalFilename", "Stella.exe" VALUE "OriginalFilename", "Stella.exe"
VALUE "ProductName", "Stella" VALUE "ProductName", "Stella"
VALUE "ProductVersion", "4.7" VALUE "ProductVersion", "4.7.1"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"