Final updates for 3.9.2 release.

git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2822 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2013-08-31 13:49:19 +00:00
parent 963c5d621b
commit fa9951e95f
11 changed files with 147 additions and 74 deletions

View File

@ -9,7 +9,7 @@
SSSS ttt eeeee llll llll aaaaa
===========================================================================
Release 3.9.1 for Linux, MacOSX and Windows
Release 3.9.2 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.9.1 release of Stella for Linux, Mac OSX and Windows. The
This is the 3.9.2 release of Stella for Linux, Mac OSX and Windows. The
distributions currently available are:
* Binaries for Windows XP/Vista/7/8 :
Stella-3.9.1-win32.exe (32-bit EXE installer)
Stella-3.9.1-x64.exe (64-bit EXE installer)
Stella-3.9.1-windows.zip (32/64 bit versions)
Stella-3.9.2-win32.exe (32-bit EXE installer)
Stella-3.9.2-x64.exe (64-bit EXE installer)
Stella-3.9.2-windows.zip (32/64 bit versions)
* Binary distribution for MacOS X 32-bit & 64-bit :
Stella-3.9.1-macosx.dmg (32-bit Universal Binary)
Stella-3.9.1_intel-macosx.dmg (32/64-bit Intel/OSX 10.6+)
Stella-3.9.2-macosx.dmg (32-bit Universal Binary)
Stella-3.9.2_intel-macosx.dmg (32/64-bit Intel/OSX 10.6+)
* Binary distribution in 32-bit & 64-bit Ubuntu DEB format :
stella_3.9.1-1_i386.deb
stella_3.9.1-1_amd64.deb
stella_3.9.2-1_i386.deb
stella_3.9.2-1_amd64.deb
* Binary distribution in 32-bit & 64-bit RPM format :
stella-3.9.1-2.i386.rpm
stella-3.9.1-2.x86_64.rpm
stella-3.9.2-2.i386.rpm
stella-3.9.2-2.x86_64.rpm
* Source code distribution for all platforms :
stella-3.9.1-src.tar.gz
stella-3.9.2-src.tar.gz
Distribution Site

View File

@ -12,7 +12,7 @@
Release History
===========================================================================
3.9.1 to 3.9.2: (August xx, 2013)
3.9.1 to 3.9.2: (August 31, 2013)
* Improved parsing of the DASM lst file for the debugger disassembly;
it sometimes missed constant declarations.
@ -31,6 +31,10 @@
* Renamed 'debuggerres' argument to 'dbg.res'. All future debugger-
specific options will start with 'dbg.'.
* The TIA 'zoom' area in the debugger now supports scrolling the
mouse wheel (currently up/down only, as I don't have a sideways
scrolling mouse to test with).
-Have fun!

7
debian/changelog vendored
View File

@ -1,3 +1,10 @@
stella (3.9.2-1) stable; urgency=high
* Version 3.9.2 release
-- Stephen Anthony <stephena@users.sf.net> Sat, 31 Aug 2013 11:13:43 -0230
stella (3.9.1-1) stable; urgency=high
* Version 3.9.1 release

View File

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

View File

@ -131,6 +131,14 @@ inline int BSPF_compareIgnoreCase(const string& s1, const string& s2)
return strcasecmp(s1.c_str(), s2.c_str());
#endif
}
inline int BSPF_compareIgnoreCase(const char* s1, const char* s2)
{
#if defined WIN32 && !defined __GNUG__
return _stricmp(s1, s2);
#else
return strcasecmp(s1, s2);
#endif
}
// Test whether the first string starts with the second one (case insensitive)
inline bool BSPF_startsWithIgnoreCase(const string& s1, const string& s2)
@ -141,6 +149,14 @@ inline bool BSPF_startsWithIgnoreCase(const string& s1, const string& s2)
return strncasecmp(s1.c_str(), s2.c_str(), s2.length()) == 0;
#endif
}
inline bool BSPF_startsWithIgnoreCase(const char* s1, const char* s2)
{
#if defined WIN32 && !defined __GNUG__
return _strnicmp(s1, s2, strlen(s2)) == 0;
#else
return strncasecmp(s1, s2, strlen(s2)) == 0;
#endif
}
// Test whether two strings are equal (case insensitive)
inline bool BSPF_equalsIgnoreCase(const string& s1, const string& s2)
@ -163,7 +179,7 @@ inline bool BSPF_endsWithIgnoreCase(const string& s1, const string& s2)
if(s1.length() >= s2.length())
{
const char* end = s1.c_str() + s1.length() - s2.length();
return BSPF_equalsIgnoreCase(end, s2.c_str());
return BSPF_compareIgnoreCase(end, s2.c_str()) == 0;
}
return false;
}

View File

@ -45,7 +45,7 @@ TiaOutputWidget::TiaOutputWidget(GuiObject* boss, const GUI::Font& font,
l.push_back("Fill to scanline", "scanline");
l.push_back("Set breakpoint", "bp");
l.push_back("Set zoom position", "zoom");
l.push_back("Toggle fixed debug colors", "fixed");
l.push_back("Toggle fixed debug colors (from beam pos)", "fixed");
myMenu = new ContextMenu(this, font, l);
}

View File

@ -34,11 +34,11 @@ TiaZoomWidget::TiaZoomWidget(GuiObject* boss, const GUI::Font& font,
CommandSender(boss),
myMenu(NULL)
{
_flags = WIDGET_ENABLED | WIDGET_CLEARBG | WIDGET_RETAIN_FOCUS;
_flags = WIDGET_ENABLED | WIDGET_CLEARBG |
WIDGET_RETAIN_FOCUS | WIDGET_TRACK_MOUSE;
_bgcolor = _bgcolorhi = kDlgColor;
// Use all available space, up to the maximum bounds of the TIA image
// Width myst
_w = BSPF_min(w, 320);
_h = BSPF_min(h, 260);
@ -48,10 +48,10 @@ TiaZoomWidget::TiaZoomWidget(GuiObject* boss, const GUI::Font& font,
myZoomLevel = 2;
myNumCols = ((_w - 4) >> 1) / myZoomLevel;
myNumRows = (_h - 4) / myZoomLevel;
myXoff = 0;
myYoff = 0;
myXCenter = myNumCols >> 1;
myYCenter = myNumRows >> 1;
myXOff = myYOff = 0;
myMouseMoving = false;
myXClick = myYClick = 0;
// Create context menu for zoom levels
VariantList l;
@ -76,11 +76,9 @@ void TiaZoomWidget::loadConfig()
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TiaZoomWidget::setPos(int x, int y)
{
// Center zoom on given x,y point
myXCenter = x >> 1;
myYCenter = y;
//cerr << " ==> myXCenter = " << myXCenter << ", myYCenter = " << myYCenter << endl;
// Center on given x,y point
myXOff = (x >> 1) - (myNumCols >> 1);
myYOff = y - (myNumRows >> 1);
recalc();
}
@ -92,8 +90,8 @@ void TiaZoomWidget::zoom(int level)
return;
myZoomLevel = level;
myNumCols = ((_w - 4) >> 1) / myZoomLevel;
myNumRows = (_h - 4) / myZoomLevel;
myNumCols = ((_w - 4) >> 1) / myZoomLevel;
myNumRows = (_h - 4) / myZoomLevel;
recalc();
}
@ -101,46 +99,85 @@ void TiaZoomWidget::zoom(int level)
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TiaZoomWidget::recalc()
{
const int tw = instance().console().tia().width(),
th = instance().console().tia().height();
// Don't go past end of framebuffer
const int width = instance().console().tia().width(),
height = instance().console().tia().height();
myXOff = BSPF_clamp(myXOff, 0, tw - myNumCols);
myYOff = BSPF_clamp(myYOff, 0, th - myNumRows);
// Figure out the bounding rectangle for the current center coords
const int xoff = myNumCols >> 1,
yoff = myNumRows >> 1;
if(myXCenter < xoff)
myXCenter = xoff;
else if(myXCenter + xoff >= width)
myXCenter = width - xoff - 1;
else if(myYCenter < yoff)
myYCenter = yoff;
else if(myYCenter + yoff >= height)
myYCenter = height - yoff - 1;
// Only redraw when necessary
int oldXoff = myXoff, oldYoff = myYoff;
myXoff = BSPF_max(0, myXCenter - (myNumCols >> 1));
myYoff = BSPF_max(0, myYCenter - (myNumRows >> 1));
if(oldXoff != myXoff || oldYoff != myYoff)
{
setDirty(); draw();
//cerr << " OLD ==> myXoff: " << oldXoff << ", myYoff = " << oldYoff << endl;
//cerr << " NEW ==> myXoff: " << myXoff << ", myYoff = " << myYoff << endl << endl;
}
setDirty(); draw();
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TiaZoomWidget::handleMouseDown(int x, int y, int button, int clickCount)
{
// Grab right mouse button for zoom context menu
if(button == 2)
// Button 1 is for 'drag'/movement of the image
// Button 2 is for context menu
if(button == 1)
{
// Indicate mouse drag started/in progress
myMouseMoving = true;
myXClick = x;
myYClick = y;
}
else if(button == 2)
{
// Add menu at current x,y mouse location
myMenu->show(x + getAbsX(), y + getAbsY());
}
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TiaZoomWidget::handleMouseUp(int x, int y, int button, int clickCount)
{
myMouseMoving = false;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TiaZoomWidget::handleMouseWheel(int x, int y, int direction)
{
if(direction > 0)
handleEvent(Event::UIDown);
else
handleEvent(Event::UIUp);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TiaZoomWidget::handleMouseMoved(int x, int y, int button)
{
// TODO: Not yet working - finish for next release
#if 0
if(myMouseMoving)
{
if(x < 0 || y < 0 || x > _w || y > _h)
return;
int diffx = ((x - myXClick) >> 1);// / myZoomLevel;
int diffy = (y - myYClick);// / myZoomLevel;
// myXClick = x;
// myYClick = y;
//cerr << diffx << " " << diffy << endl;
myXOff -= diffx;
myYOff -= diffy;
recalc();
// cerr << x << ", " << y << endl;
}
#endif
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TiaZoomWidget::handleMouseLeft(int button)
{
myMouseMoving = false;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool TiaZoomWidget::handleEvent(Event::Type event)
{
@ -149,35 +186,35 @@ bool TiaZoomWidget::handleEvent(Event::Type event)
switch(event)
{
case Event::UIUp:
myYCenter -= 4;
myYOff -= 4;
break;
case Event::UIDown:
myYCenter += 4;
myYOff += 4;
break;
case Event::UILeft:
myXCenter -= 2;
myXOff -= 2;
break;
case Event::UIRight:
myXCenter += 2;
myXOff += 2;
break;
case Event::UIPgUp:
myYCenter = 0;
myYOff = 0;
break;
case Event::UIPgDown:
myYCenter = 260;
myYOff = _h;
break;
case Event::UIHome:
myXCenter = 0;
myXOff = 0;
break;
case Event::UIEnd:
myXCenter = 320;
myXOff = _w;
break;
default:
@ -230,9 +267,9 @@ void TiaZoomWidget::drawWidget(bool hilite)
scanoffset = width * scany + scanx;
int x, y, col, row;
for(y = myYoff, row = 0; y < myNumRows+myYoff; ++y, row += hzoom)
for(y = myYOff, row = 0; y < myNumRows+myYOff; ++y, row += hzoom)
{
for(x = myXoff, col = 0; x < myNumCols+myXoff; ++x, col += wzoom)
for(x = myXOff, col = 0; x < myNumCols+myXOff; ++x, col += wzoom)
{
uInt32 idx = y*width + x;
uInt32 color = currentFrame[idx] | (idx > scanoffset ? 1 : 0);

View File

@ -39,6 +39,10 @@ class TiaZoomWidget : public Widget, public CommandSender
protected:
void handleMouseDown(int x, int y, int button, int clickCount);
void handleMouseUp(int x, int y, int button, int clickCount);
void handleMouseWheel(int x, int y, int direction);
void handleMouseMoved(int x, int y, int button);
void handleMouseLeft(int button);
bool handleEvent(Event::Type event);
void handleCommand(CommandSender* sender, int cmd, int data, int id);
@ -54,8 +58,10 @@ class TiaZoomWidget : public Widget, public CommandSender
int myZoomLevel;
int myNumCols, myNumRows;
int myXoff, myYoff;
int myXCenter, myYCenter;
int myXOff, myYOff;
bool myMouseMoving;
int myXClick, myYClick;
};
#endif

View File

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

View File

@ -1,5 +1,5 @@
%define name stella
%define version 3.9.1
%define version 3.9.2
%define rel 1
%define enable_gl 1
@ -108,6 +108,9 @@ rm -rf $RPM_BUILD_DIR/%{name}-%{version}
%_datadir/icons/large/%{name}.png
%changelog
* Sat Aug 31 2013 Stephen Anthony <stephena@users.sf.net> 3.9.2-1
- Version 3.9.2 release
* Wed Aug 21 2013 Stephen Anthony <stephena@users.sf.net> 3.9.1-1
- Version 3.9.1 release

View File

@ -36,8 +36,8 @@ IDI_ICON ICON "stella.ico"
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 3,9,1,0
PRODUCTVERSION 3,9,1,0
FILEVERSION 3,9,2,0
PRODUCTVERSION 3,9,2,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.9.1"
VALUE "FileVersion", "3.9.2"
VALUE "InternalName", "Stella"
VALUE "LegalCopyright", "Copyright (C) 1995-2013 The Stella Team"
VALUE "OriginalFilename", "Stella.exe"
VALUE "ProductName", "Stella"
VALUE "ProductVersion", "3.9.1"
VALUE "ProductVersion", "3.9.2"
END
END
BLOCK "VarFileInfo"