Fixed more sound issues wrt irregular scanline counts. Even

Quadrun sounds better now :)

Preparing for the 3.7.3 release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2562 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2012-10-25 20:39:55 +00:00
parent 029ea006f6
commit 940a0bf066
10 changed files with 67 additions and 113 deletions

View File

@ -9,7 +9,7 @@
SSSS ttt eeeee llll llll aaaaa
===========================================================================
Release 3.7.2 for Linux, MacOSX and Windows
Release 3.7.3 for Linux, MacOSX and Windows
===========================================================================
The Atari 2600 Video Computer System (VCS), introduced in 1977, was the
@ -21,28 +21,28 @@ 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
number of other platforms and is currently maintained by Stephen Anthony.
This is the 3.7.2 release of Stella for Linux, Mac OSX and Windows. The
This is the 3.7.3 release of Stella for Linux, Mac OSX and Windows. The
distributions currently available are:
* Binaries for Windows XP/Vista/7 :
Stella-3.7.2-win32.exe (32-bit EXE installer)
Stella-3.7.2-x64.exe (64-bit EXE installer)
Stella-3.7.2-windows.zip (32/64 bit versions)
Stella-3.7.3-win32.exe (32-bit EXE installer)
Stella-3.7.3-x64.exe (64-bit EXE installer)
Stella-3.7.3-windows.zip (32/64 bit versions)
* Binary distribution for MacOS X 32-bit & 64-bit :
Stella-3.7.2-macosx.dmg (32-bit Universal Binary)
Stella-3.7.2_intel-macosx.dmg (32/64-bit Intel/OSX 10.6+)
Stella-3.7.3-macosx.dmg (32-bit Universal Binary)
Stella-3.7.3_intel-macosx.dmg (32/64-bit Intel/OSX 10.6+)
* Binary distribution in 32-bit & 64-bit Ubuntu DEB format :
stella_3.7.2-1_i386.deb
stella_3.7.2-1_amd64.deb
stella_3.7.3-1_i386.deb
stella_3.7.3-1_amd64.deb
* Binary distribution in 32-bit & 64-bit RPM format :
stella-3.7.2-2.i386.rpm
stella-3.7.2-2.x86_64.rpm
stella-3.7.3-2.i386.rpm
stella-3.7.3-2.x86_64.rpm
* Source code distribution for all platforms :
stella-3.7.2-src.tar.gz
stella-3.7.3-src.tar.gz
Distribution Site

View File

@ -12,7 +12,7 @@
Release History
===========================================================================
3.7.2 to 3.7.3: (xxx xx, 2012)
3.7.2 to 3.7.3: (October 26, 2012)
* Note: because of TIA/RIOT changes, the state file format has changed
again, and old state files will not work with this release.
@ -21,6 +21,10 @@
'short' frames that caused massive flickering. Also improved
related behaviour when VSYNC isn't used at all.
* Improved sound generation with ROMs that have irregular scanline
counts. This fixes many demo ROMs as well as Quadrun, where
previously there would be 'gaps' in the sound output.
* Improved emulation of RIOT chip, in particular the behaviour of
reading from TIMINT. Also, D6 of the Interrupt Flag register is now
properly set on active transition of the PA7 pin.

View File

@ -1,4 +1,4 @@
This is release 3.7.2 of Stella. Stella is a multi-platform Atari 2600 VCS
This is release 3.7.3 of Stella. Stella is a multi-platform Atari 2600 VCS
emulator which allows you to play all of your favourite Atari 2600 games
on your PC. You'll find the Stella Users Manual in the docs subdirectory.
If you'd like to verify that you have the latest release of Stella visit
@ -9,4 +9,4 @@ the Stella Website at:
Enjoy,
The Stella Team
June 10, 2012
October 26, 2012

7
debian/changelog vendored
View File

@ -1,3 +1,10 @@
stella (3.7.3-1) stable; urgency=high
* Version 3.7.3 release
-- Stephen Anthony <stephena@users.sf.net> Fri, 26 Oct 2012 18:38:25 +0200
stella (3.7.2-1) stable; urgency=high
* Version 3.7.2 release

View File

@ -10,7 +10,7 @@
<br><br>
<center><h2><b>A multi-platform Atari 2600 VCS emulator</b></h2></center>
<center><h4><b>Release 3.7.2</b></h4></center>
<center><h4><b>Release 3.7.3</b></h4></center>
<br><br>
<center><h2><b>User's Guide</b></h2></center>

View File

@ -612,11 +612,41 @@ inline void TIA::endFrame()
return;
}
// This stuff should only happen at the end of a frame
// Compute the number of scanlines in the frame
uInt32 previousCount = myScanlineCountForLastFrame;
myScanlineCountForLastFrame = scanlines();
// The following handle cases where scanlines either go too high or too
// low compared to the previous frame, in which case certain portions
// of the framebuffer are cleared to zero (black pixels)
// Due to the FrameBuffer class (potentially) doing dirty-rectangle
// updates, each internal buffer must be set slightly differently,
// otherwise they won't know anything has changed
// Hence, the front buffer is set to pixel 0, and the back to pixel 1
// Did we generate too many scanlines?
// (usually caused by VBLANK/VSYNC taking too long or not occurring at all)
// If so, blank entire viewable area
if(myScanlineCountForLastFrame > 342)
{
myScanlineCountForLastFrame = 342;
if(previousCount <= 342)
{
memset(myCurrentFrameBuffer, 0, 160 * 320);
memset(myPreviousFrameBuffer, 1, 160 * 320);
}
}
// Did the number of scanlines decrease?
// If so, blank scanlines that weren't rendered this frame
else if(myScanlineCountForLastFrame < previousCount &&
myScanlineCountForLastFrame < 320 && previousCount < 320)
{
uInt32 offset = myScanlineCountForLastFrame * 160,
stride = (previousCount - myScanlineCountForLastFrame) * 160;
memset(myCurrentFrameBuffer + offset, 0, stride);
memset(myPreviousFrameBuffer + offset, 1, stride);
}
// Stats counters
myFrameCounter++;
if(myScanlineCountForLastFrame >= 287)
@ -636,33 +666,6 @@ inline void TIA::endFrame()
if(offset > myStopDisplayOffset && offset < 228 * 320)
myStopDisplayOffset = offset;
}
// The following handle cases where scanlines either go too high or too
// low compared to the previous frame, in which case certain portions
// of the framebuffer are cleared to zero (black pixels)
// Due to the FrameBuffer class (potentially) doing dirty-rectangle
// updates, each internal buffer must be set slightly differently,
// otherwise they won't know anything has changed
// Hence, the front buffer is set to pixel 0, and the back to pixel 1
// Did we generate too many scanlines?
// (usually caused by VBLANK taking too long)
// If so, blank entire viewable area
if(myScanlineCountForLastFrame > 342 && previousCount <= 342)
{
memset(myCurrentFrameBuffer, 0, 160 * 320);
memset(myPreviousFrameBuffer, 1, 160 * 320);
}
// Did the number of scanlines decrease?
// If so, blank scanlines that weren't rendered this frame
else if(myScanlineCountForLastFrame < previousCount &&
myScanlineCountForLastFrame < 320 && previousCount < 320)
{
uInt32 offset = myScanlineCountForLastFrame * 160,
stride = (previousCount - myScanlineCountForLastFrame) * 160;
memset(myCurrentFrameBuffer + offset, 0, stride);
memset(myPreviousFrameBuffer + offset, 1, stride);
}
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -53,7 +53,7 @@
<key>CFBundleSignature</key>
<string>StLa</string>
<key>CFBundleVersion</key>
<string>3.7.2</string>
<string>3.7.3</string>
<key>NSMainNibFile</key>
<string>SDLMain.nib</string>
<key>NSPrincipalClass</key>

View File

@ -1,63 +0,0 @@
#!/bin/sh
# $Id: stella.SlackBuild,v 1.14 2009-05-01 11:25:07 stephena Exp $
# stella.SlackBuild for Stella 3.x, B. Watson, 2005
# Comment out following line to build without OpenGL support
BUILD_GL=1
die() {
echo "Fatal error: $*"
echo "(Look for error messages above)"
exit 1
}
VERSION=3.7.2
ARCH=${ARCH-i486}
BUILD=1
TMP=${TMP-/tmp}
PKG=/tmp/package-stella
CWD=`pwd`
rm -rf $PKG $TMP/stella-$VERSION
mkdir -p $PKG
cd $TMP
tar xvfz $CWD/stella-$VERSION-src.tar.gz
cd stella-$VERSION || die "You must run this script in the same directory as the stella-$VERSION-src.tar.gz archive"
if [ "$BUILD_GL" = "" ]; then
NOGL="--disable-gl"
NAME="stella_nogl"
else
NOGL=""
NAME="stella_gl"
fi
./configure --prefix=/usr $NOGL || die "configure failed"
make || die "make failed"
make install DESTDIR=$PKG DOCDIR=/usr/doc/stella-$VERSION || die "make install failed"
cd $PKG
mkdir -p install
cat <<EOF >install/slack-desc
stella: Stella is a multi-platform Atari 2600 VCS emulator released under the
stella: GNU General Public License (GPL).
stella:
stella: Version 2.0 includes many new features, such as "frying", cheat code
stella: support, and an integrated debugger for VCS game developers (with DASM
stella: symbol file support).
stella:
stella: Homepage: http://stella.sourceforge.net/
stella: Author: Bradford W. Mott, Stephen Anthony and the Stella Team
stella:
stella:
EOF
strip usr/bin/stella
chown -R root.bin usr/bin
makepkg -l y -c n $TMP/$NAME-$VERSION-$ARCH-$BUILD.tgz

View File

@ -1,5 +1,5 @@
%define name stella
%define version 3.7.2
%define version 3.7.3
%define rel 1
%define enable_gl 1
@ -108,6 +108,9 @@ rm -rf $RPM_BUILD_DIR/%{name}-%{version}
%_datadir/icons/large/%{name}.png
%changelog
* Fri Oct 26 2012 Stephen Anthony <stephena@users.sf.net> 3.7.3-1
- Version 3.7.3 release
* Sun Jun 10 2012 Stephen Anthony <stephena@users.sf.net> 3.7.2-1
- Version 3.7.2 release

View File

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