Commit b867f8d8 authored by Stephen Kitt's avatar Stephen Kitt

Imported Upstream version 4.0

parent 8982d8fa
......@@ -9,7 +9,7 @@
SSSS ttt eeeee llll llll aaaaa
===========================================================================
Release 3.9.3 for Linux, MacOSX and Windows
Release 4.0 for Linux, MacOSX and Windows
===========================================================================
The Atari 2600 Video Computer System (VCS), introduced in 1977, was the
......@@ -21,28 +21,27 @@ 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.3 release of Stella for Linux, Mac OSX and Windows. The
This is the 4.0 release of Stella for Linux, Mac OSX and Windows. The
distributions currently available are:
* Binaries for Windows XP/Vista/7/8 :
Stella-3.9.3-win32.exe (32-bit EXE installer)
Stella-3.9.3-x64.exe (64-bit EXE installer)
Stella-3.9.3-windows.zip (32/64 bit versions)
Stella-4.0-win32.exe (32-bit EXE installer)
Stella-4.0-x64.exe (64-bit EXE installer)
Stella-4.0-windows.zip (32/64 bit versions)
* Binary distribution for MacOS X 32-bit & 64-bit :
Stella-3.9.3-macosx.dmg (32-bit Universal Binary)
Stella-3.9.3_intel-macosx.dmg (32/64-bit Intel/OSX 10.6+)
* Binary distribution for MacOS X 10.5 and above :
Stella-4.0-macosx.dmg (32/64-bit Intel Universal Binary)
* Binary distribution in 32-bit & 64-bit Ubuntu DEB format :
stella_3.9.3-1_i386.deb
stella_3.9.3-1_amd64.deb
stella_4.0-1_i386.deb
stella_4.0-1_amd64.deb
* Binary distribution in 32-bit & 64-bit RPM format :
stella-3.9.3-2.i386.rpm
stella-3.9.3-2.x86_64.rpm
stella-4.0-2.i386.rpm
stella-4.0-2.x86_64.rpm
* Source code distribution for all platforms :
stella-3.9.3-src.tar.gz
stella-4.0-src.tar.gz
Distribution Site
......
......@@ -12,19 +12,58 @@
Release History
===========================================================================
3.9.3 to 4.0: (July 1, 2014)
* Ported Stella to SDL2, which brings many new features. Among the
largest improvements is native hardware acceleration support for
Windows (Direct3D) and Linux/OSX (OpenGL). It is also now possible
to port Stella to iOS and Android devices using OpenGLES.
Hardware acceleration is now required, which means up-to-date drivers
are needed. Software rendering is still present, but is somewhat
unoptimized and unsupported going forward.
* Fullscreen video modes now use the desktop resolution. Switching
to fullscreen and back to windowed mode no longer rearranges icons
on your desktop.
* TIA TV effects are now available in all video modes, since hardware
acceleration is a requirement.
* Added a much more detailed view of cart extended RAM to a new
debugger tab. Special thanks to SpiceWare for this implementation.
* Added preliminary support for 'DASH' bankswitching scheme by A. Davie.
* The AtariVox and SaveKey controllers now have the ability in the
debugger to completely erase the virtual EEPROM data.
* Added 'savesnap' debugger prompt command, and also associated
context menu item to the debugger TIA output area. This saves the
current TIA image to a PNG file.
* Added 'hidecursor' commandline option, which allows to completely
disable showing the mouse cursor (useful on systems that don't have
a mouse).
* Removed 'uipalette' option, as the original palette is no longer
supported.
* Updated included PNG library to latest stable version.
-Have fun!
3.9.2 to 3.9.3: (January 20, 2014)
* Added bankswitch schemes BF, BFSC, DF, DFSC and 4KSC, thanks to
RevEng and CPUWIZ of AtariAge.
* Updated ROM properties for several ROMs, thanks to Omegamatrix of
AtariAge.
* Fixed program crash when specifying a bankswitch type that Stella
didn't recognize; an error message is now displayed.
-Have fun!
3.9.1 to 3.9.2: (August 31, 2013)
......
......@@ -12,7 +12,7 @@
License Information and Copyright Notice
===========================================================================
Copyright (C) 1995-2014 Bradford W. Mott, Stephen Anthony and the
Copyright (C) 1995-2014 by Bradford W. Mott, Stephen Anthony and the
Stella Team
This program is free software; you can redistribute it and/or modify it
......
......@@ -213,8 +213,8 @@ uninstall:
src/emucore/M6502.ins: src/emucore/M6502.m4
m4 src/emucore/M6502.m4 > src/emucore/M6502.ins
# Special rule for Win32 icon stuff (there's probably a better way to do this ...)
src/win32/stella_icon.o: src/win32/stella.ico src/win32/stella.rc
$(WINDRES) --include-dir src/win32 src/win32/stella.rc src/win32/stella_icon.o
# Special rule for windows icon stuff (there's probably a better way to do this ...)
src/windows/stella_icon.o: src/windows/stella.ico src/windows/stella.rc
$(WINDRES) --include-dir src/windows src/windows/stella.rc src/windows/stella_icon.o
.PHONY: deb bundle test install uninstall
Please distribute this file with the SDL runtime environment:
The Simple DirectMedia Layer (SDL for short) is a cross-platfrom library
designed to make it easy to write multi-media software, such as games and
emulators.
The Simple DirectMedia Layer library source code is available from:
http://www.libsdl.org/
This library is distributed under the terms of the GNU LGPL license:
http://www.gnu.org/copyleft/lesser.html
Please distribute this file with the SDL runtime environment:
The Simple DirectMedia Layer (SDL for short) is a cross-platform library
designed to make it easy to write multi-media software, such as games and
emulators.
The Simple DirectMedia Layer library source code is available from:
http://www.libsdl.org/
This library is distributed under the terms of the zlib license:
http://www.zlib.net/zlib_license.html
......@@ -6,7 +6,7 @@
# * command line options to...
# - override the host settings (for cross compiles
# - whether to do a debug build (with -g) or an optimized build (-O3 etc.)
# * detect whether the chosen backend is available (e.g. call sdl-config)
# * detect whether the chosen backend is available (e.g. call sdl2-config)
# * ....
......@@ -14,12 +14,10 @@
CXXFLAGS="$CXXFLAGS $CPPFLAGS"
# default lib behaviour yes/no/auto
_opengl=auto
_libpng=auto
_zlib=auto
# default option behaviour yes/no
_build_gl=yes
_build_windowed=yes
_build_sound=yes
_build_debugger=yes
......@@ -42,12 +40,11 @@ _rm="rm -f"
_rm_rec="$_rm -r"
_zip="zip -q"
_cp=cp
_win32path=""
_windowspath=""
_windres=windres
_sdlconfig=sdl-config
_sdlconfig=sdl2-config
_sdlpath="$PATH"
_prefix=/usr/local
X_LIBS="/usr/X11R6/lib"
_srcdir=`dirname $0`
......@@ -126,13 +123,13 @@ add_line_to_config_mk() {
#
# Determine sdl-config
# Determine sdl2-config
#
# TODO: small bit of code to test sdl useability
find_sdlconfig()
{
echo_n "Looking for sdl-config... "
sdlconfigs="$_sdlconfig:sdl-config:sdl11-config:sdl12-config"
echo_n "Looking for sdl2-config... "
sdlconfigs="$_sdlconfig"
_sdlconfig=
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="$SEPARATOR"
......@@ -201,10 +198,6 @@ Installation directories:
--datadir=DIR directory to install icons/data files [PREFIX/share]
Optional Features:
--enable-gl enable/disable OpenGL rendering support [enabled]
--disable-gl
--enable-windowed enable/disable windowed rendering modes [enabled]
--disable-windowed
--enable-sound enable/disable sound support [enabled]
--disable-sound
--enable-debugger enable/disable all debugger options [enabled]
......@@ -215,6 +208,8 @@ Optional Features:
--disable-cheats
--enable-thumb enable/disable Thumb ARM support [enabled]
--disable-thumb
--enable-windowed enable/disable windowed rendering modes [enabled]
--disable-windowed
--enable-shared build shared binary [enabled]
--enable-static build static binary (if possible) [disabled]
--disable-static
......@@ -224,10 +219,9 @@ Optional Features:
--force-builtin-zlib force use of built-in zlib library [auto]
Optional Libraries:
--with-sdl-prefix=DIR Prefix where the sdl-config script is installed (optional)
--with-sdl-prefix=DIR Prefix where the sdl2-config script is installed (optional)
--with-libpng-prefix=DIR Prefix where libpng is installed (optional)
--with-zlib-prefix=DIR Prefix where zlib is installed (optional)
--x-libraries Path to X11 libraries [${X_LIBS}]
Some influential environment variables:
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
......@@ -244,10 +238,6 @@ done # for parm in ...
for ac_option in $@; do
case "$ac_option" in
--enable-gl) _build_gl=yes ;;
--disable-gl) _build_gl=no ;;
--enable-windowed) _build_windowed=yes ;;
--disable-windowed) _build_windowed=no ;;
--enable-sound) _build_sound=yes ;;
--disable-sound) _build_sound=no ;;
--enable-debugger) _build_debugger=yes ;;
......@@ -256,6 +246,8 @@ for ac_option in $@; do
--disable-joystick) _build_joystick=no ;;
--enable-cheats) _build_cheats=yes ;;
--disable-cheats) _build_cheats=no ;;
--enable-windowed) _build_windowed=yes ;;
--disable-windowed) _build_windowed=no ;;
--enable-thumb) _build_thumb=yes ;;
--disable-thumb) _build_thumb=no ;;
--enable-shared) _build_static=no ;;
......@@ -279,10 +271,6 @@ for ac_option in $@; do
ZLIB_CFLAGS="-I$_prefix/include"
ZLIB_LIBS="-L$_prefix/lib"
;;
--x-libraries=*)
arg=`echo $ac_option | cut -d '=' -f 2`
X_LIBS="$arg"
;;
--host=*)
_host=`echo $ac_option | cut -d '=' -f 2`
;;
......@@ -517,14 +505,8 @@ if test -n "$_host"; then
# CXXFLAGS="$CFLAGS -newlib -mstrict-align -mcpu=750 -mtune=7400"
# LDFLAGS="$LDFLAGS -newlib"
# ;;
gp2x)
echo "Cross-compiling to $_host, forcing static build, and disabling OpenGL."
_build_static=yes
_build_gl=no
_build_windowed=no
;;
mingw32-cross)
echo "Cross-compiling for Win32 using MinGW."
echo "Cross-compiling for Windows using MinGW."
DEFINES="$DEFINES -DWIN32"
_host_os=win32
;;
......@@ -616,22 +598,6 @@ else
echo "none found, using built-in version"
fi
#
# Check for GL
#
echocheck "opengl"
if test "$_opengl" = auto ; then
_opengl=no
cat > $TMPC << EOF
#include <string.h>
#include <GL/gl.h>
#include <GL/glu.h>
int main(void) { return 0; }
EOF
cc_check $LDFLAGS $CXXFLAGS && _opengl=yes
fi
echo "$_opengl"
#
# figure out installation directories
#
......@@ -643,28 +609,6 @@ echo
echo_n "Summary:"
echo
if test "$_build_gl" = "yes" ; then
if test "$_opengl" = "yes" ; then
echo_n " OpenGL rendering enabled"
echo
else
echo_n " OpenGL rendering disabled (missing OpenGL headers)"
echo
_build_gl=no
fi
else
echo_n " OpenGL rendering disabled"
echo
fi
if test "$_build_windowed" = "yes" ; then
echo_n " Windowed rendering modes enabled"
echo
else
echo_n " Windowed rendering modes disabled"
echo
fi
if test "$_build_sound" = "yes" ; then
echo_n " Sound support enabled"
echo
......@@ -705,6 +649,14 @@ else
echo
fi
if test "$_build_windowed" = "yes" ; then
echo_n " Windowed rendering modes enabled"
echo
else
echo_n " Windowed rendering modes disabled"
echo
fi
if test "$_build_thumb" = yes ; then
echo_n " Thumb ARM emulation support enabled"
echo
......@@ -765,39 +717,15 @@ case $_host_os in
DEFINES="$DEFINES -DBSPF_UNIX -DHAVE_GETTIMEOFDAY -DHAVE_INTTYPES"
MODULES="$MODULES $SRC/unix"
INCLUDES="$INCLUDES -I$SRC/unix"
#
# Check for X11
#
_x11=no
cat > $TMPC << EOF
#include <X11/Xutil.h>
int main(void) { return 0; }
EOF
cc_check $LDFLAGS $CXXFLAGS -lX11 && _x11=yes
if test "$_x11" = yes ; then
DEFINES="$DEFINES -DHAVE_X11"
LIBS="$LIBS -lX11"
fi
;;
win32)
DEFINES="$DEFINES -DBSPF_WIN32 -DHAVE_GETTIMEOFDAY -DHAVE_INTTYPES"
MODULES="$MODULES $SRC/win32"
INCLUDES="$INCLUDES -I$SRC/win32"
DEFINES="$DEFINES -DBSPF_WINDOWS -DHAVE_GETTIMEOFDAY -DHAVE_INTTYPES"
MODULES="$MODULES $SRC/windows"
INCLUDES="$INCLUDES -I$SRC/windows"
LIBS="$LIBS -lmingw32 -lwinmm"
;;
gp2x)
# -O3 hangs the GP2X, do not use.
CXXFLAGS="-O2 -finline-functions -mtune=arm920t"
DEFINES="$DEFINES -DBSPF_GP2X -DGP2X -DHAVE_GETTIMEOFDAY -DHAVE_INTTYPES"
MODULES="$MODULES $SRC/gp2x"
INCLUDES="$INCLUDES -I$SRC/gp2x $ZLIB_CFLAGS"
_ranlib="arm-linux-ranlib"
_ar="arm-linux-ar cru"
;;
*)
echo "WARNING: host system not currenty supported"
echo "WARNING: host system not currently supported"
exit
;;
esac
......@@ -816,10 +744,6 @@ else
INCLUDES="$INCLUDES -I$ZLIB"
fi
if test "$_build_gl" = yes ; then
DEFINES="$DEFINES -DDISPLAY_OPENGL"
fi
if test "$_build_windowed" = yes ; then
DEFINES="$DEFINES -DWINDOWED_SUPPORT"
fi
......@@ -875,7 +799,7 @@ RM := $_rm
RM_REC := $_rm_rec
ZIP := $_zip
CP := $_cp
WIN32PATH=$_win32path
WINDOWSPATH=$_windowspath
STRIP := $_strip
WINDRES := $_windres
......
stella (4.0-1) stable; urgency=high
* Version 4.0 release
-- Stephen Anthony <stephena@users.sf.net> Tue, 01 Jul 2014 10:51:55 -0230
stella (3.9.3-1) stable; urgency=high
* Version 3.9.3 release
......
......@@ -3,7 +3,7 @@ Section: games
Priority: optional
Maintainer: Stephen Anthony <stephena@users.sourceforge.net>
Standards-Version: 3.7.2
Build-Depends: debhelper (>= 5.0.0), libsdl1.2-dev, zlib1g-dev
Build-Depends: debhelper (>= 5.0.0), libsdl2-dev
Package: stella
Architecture: any
......
......@@ -89,7 +89,7 @@ feature that no other 2600 debugger has; it's <b>completely</b> cross-platform.<
<li>Support for bank switching. You can see how many banks a cart has and the
currently selected bank, and manually change banks.</li>
<li>Registers/memory that get changed by the CPU during debugging are
highlighted when they're displayed.<li>
highlighted when they're displayed.</li>
<li>Data sources for the CPU SP/A/X/Y registers, showing the resolved/source
address of of load operands.</li>
<li>Scanline advance (like frame advance, break at beginning
......@@ -676,6 +676,7 @@ listfunctions - List user-defined functions
savedis - Save Distella disassembly
saverom - Save (possibly patched) ROM
saveses - Save console session to file xx
savesnap - Save current TIA image to PNG file
savestate - Save emulator state xx (valid args 0-9)
scanline - Advance emulation by xx scanlines (default=1)
step - Single step CPU [with count xx]
......@@ -789,6 +790,9 @@ as illustrated:</p>
zoom area (further described in part (G). The zoom area will
contain the area centered at the position where the mouse was
clicked.</li>
<li><b>Save snapshot</b>: Saves the TIA image currently shown,
including any current 'effects' (fixed debug colors, partial fill, etc).
</li>
<li><b>Toggle fixed debug colors</b>: Toggles fixed debug color mode.
Note that after this is toggled, the framebuffer must be updated in some way
(step/trace/frame advance) before the new colors are shown.</li>
......@@ -899,14 +903,9 @@ respond to these same keyboard shortcuts. If in doubt, give them a try.</p>
<!-- ///////////////////////////////////////////////////////////////////////// -->
<br>
<h2><u>(K)</u> M6532/RIOT and extended RAM</h2>
<h2><u>(K)</u> M6532/RIOT RAM</h2>
<p>This is a spreadsheet-like GUI for inspecting and changing the contents
of the 2600's RAM. You can view 128 bytes of RAM at a time, starting with
the RAM built in to the console (zero-page RAM). If a cartridge contains
extended RAM, a scrollbar will be activated, allowing to scroll in
sequence through each 128 byte 'bank' of RAM. The address in the upper left
corner indicates the offset (in terms of the read port) for the bank
currently being displayed.</p>
of the 2600's zero-page RAM.</p>
<p>You can navigate with either the mouse or the keyboard arrow keys.
To change a RAM location, either double-click on it or press Enter while
it's highlighted. Enter the new value (hex only for now, sorry), then
......@@ -914,13 +913,6 @@ press Enter to make the change. If you change your mind, press Escape
and the original value will be restored. The currently selected RAM cell
can also be changed by using the Data operations buttons/associated
shortcut keys (J).</p>
<p><b>Note:</b> Many extended RAM schemes involve different addresses for
reading versus writing RAM (read port vs. write port). The UI takes care
of this for you; although the addresses shown are for the read port,
modifying a cell will use the write port. Also, some bankswitching
schemes can swap RAM and ROM dynamically during program execution. In
these cases, the values shown may not always be for RAM, and may point
to ROM instead. In the latter case, the data cannot be modified.</p>
<p><img src="graphics/debugger_ram.png"></p>
<p>The 'Undo' button in the upper right should be self-explanatory; it will
undo the most previous operation to one cell only. The 'Revert' button is
......@@ -934,7 +926,7 @@ The remaining buttons to the right are further explained in section (L).</p>
<!-- ///////////////////////////////////////////////////////////////////////// -->
<br>
<h2><u>(L)</u> M6532/RIOT and extended RAM (search/compare mode)</h2>
<h2><u>(L)</u> M6532/RIOT RAM (search/compare mode)</h2>
<p>The RAM widget also lets you search memory for values such as lives or remaining
energy, but it's also very useful when debugging to determine which
memory location holds which quantity.</p>
......@@ -1142,6 +1134,30 @@ An example of both 4K (non-bankswitched) and DPC (Pitfall II) is as follows:</p>
Go ahead and try to change something!</p>
<!-- ///////////////////////////////////////////////////////////////////////// -->
<br>
<h2><u>(O)</u> Detailed Cartridge extended RAM Information</h2>
<p>If applicable, this area shows a detailed breakdown of any extra RAM supported by
the bankswitching scheme. Since the bankswitch schemes can greatly vary in operation,
this tab will be different for each scheme, but its specific functionality should be
self-explanatory. An example of both F8SC (8K Atari + ram) and DPC (Pitfall II) is
as follows:</p>
<p><img src="graphics/debugger_ram-f8sc.png"></p>
<p><img src="graphics/debugger_ram-dpc.png"></p>
<p>The RAM is shown in a grid similar to how zero-page RAM is shown in M6532/RIOT RAM
(K) and (L). See those sections for a description of usage.
<p>In the cases where RAM is always mapped into the same place in the cartridge
address space (such as Sara-chip), the RAM addresses are labeled as such. In other
cases, such as when the RAM is either quiescent (and mapped in at different places),
or not viewable by the 6507 at all, the RAM addresses are labeled as the cart sees them.
In the examples above, F8SC RAM is labeled starting at its read port, or $F080. However,
the RAM in the DPC scheme is not viewable by the 6507, so its addresses start from $0.