Commit 48a120f8 authored by Stephen Kitt's avatar Stephen Kitt

Imported Upstream version 3.5.5

parent 5023da35
......@@ -9,7 +9,7 @@
SSSS ttt eeeee llll llll aaaaa
===========================================================================
Release 3.5 for Linux, MacOSX and Windows
Release 3.5.5 for Linux, MacOSX and Windows
===========================================================================
The Atari 2600 Video Computer System (VCS), introduced in 1977, was the
......@@ -21,31 +21,31 @@ 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.5 release of Stella for Linux, Mac OSX and Windows. The
This is the 3.5.5 release of Stella for Linux, Mac OSX and Windows. The
distributions currently available are:
* Binaries for Windows XP/Vista/7 :
Stella-3.5-win32.exe (32-bit EXE installer)
Stella-3.5-x64.exe (64-bit EXE installer)
Stella-3.5-windows.zip (32/64 bit versions)
Stella-3.5.5-win32.exe (32-bit EXE installer)
Stella-3.5.5-x64.exe (64-bit EXE installer)
Stella-3.5.5-windows.zip (32/64 bit versions)
* Binaries for Windows 98/2000 :
Stella-3.5_98_2k-windows.zip (32-bit for Windows 98/2000)
Stella-3.5.5_98_2k-windows.zip (32-bit for Windows 98/2000)
* Binary distribution for MacOSX 32-bit & 64-bit :
Stella-3.5-macosx.dmg (32-bit Universal Binary)
Stella-3.5_intel_10.6-macosx.dmg (32/64-bit Intel/Snow-Leopard only)
Stella-3.5.5-macosx.dmg (32-bit Universal Binary)
Stella-3.5.5_intel_10.6-macosx.dmg (32/64-bit Intel/Snow-Leopard only)
* Binary distribution in 32-bit & 64-bit Ubuntu DEB format :
stella_3.5-1_i386.deb
stella_3.5-1_amd64.deb
stella_3.5.5-1_i386.deb
stella_3.5.5-1_amd64.deb
* Binary distribution in 32-bit & 64-bit RPM format :
stella-3.5-2.i386.rpm
stella-3.5-2.x86_64.rpm
stella-3.5.5-2.i386.rpm
stella-3.5.5-2.x86_64.rpm
* Source code distribution for all platforms :
stella-3.5-src.tar.gz
stella-3.5.5-src.tar.gz
PLEASE DO NOT WRITE ASKING FOR ROM IMAGES TO USE WITH STELLA! ALL SUCH
REQUESTS WILL BE IGNORED!
......
......@@ -12,6 +12,68 @@
Release History
===========================================================================
3.5 to 3.5.5: (February 4, 2012)
* Due to changes in the debugger, old state files will not work with
this release.
* Fixed bug in sound restructuring introduced in the last release; in
some cases, there could be some sound 'crackling' when starting a
ROM after at least one ROM had already been loaded.
* Several significant improvements to the debugger I/O tab:
- added controller input widgets for many of the built-in
controllers, allowing to control joysticks, paddles, etc
from within the debugger.
- added ability to modify the SWCHB/SWBCNT port B registers.
- added ability to view TIA INPTx and VBLANK latch/dump bits.
* Reworked 'mcontrol' argument, and added ability to map the mouse
axes separately for paddles 0-3 or driving controllers 0-1. In
such modes, the left mouse button is tied to the x-axis, and the
right button is tied to the y-axis.
* Mouse 'specific-axis' mode is now saved per-ROM, meaning that each
ROM can have separate settings. For example, this allows one ROM to
use paddles 0 and 1, while another can use paddles 0 and 2, etc.
* The key-combo for switching the mouse between controller modes is now
'Control-0' (Control-1,2,3 have been removed). This switches
between all possible modes for the current virtual controllers.
* Fixed bug in 'Fixed Debug Colors' mode; under certain circumstances,
playfield graphics could be coloured as being player graphics.
* Fixed bug in PAL color-loss setting in Video Settings; changing the
settings wouldn't take effect until the ROM was reloaded.
* Fixed bugs with cheatcode handling; loading a ROM with a cheat
disabled would sometimes trash the emulation. More work is
required in this area, including the ability to create more
advanced types of cheats.
* Updated ROM properties database for all Sega Genesis controller
compatible ROMs. Also, the mouse can now emulate a Genesis
controller, with the left/right buttons mapped to buttons B and C,
respectively.
* Added 'FA2' bankswitch scheme, thanks to code from Chris D.
Walton. This scheme will be used in an upcoming 'Star Castle' ROM.
* Updated internal ROM properties database to ROM-Hunter version 7
(thanks go to RomHunter for his tireless research in this area).
* Added several PERL tools to help in automation of analyzing RomHunter
ROM set releases.
* Fixed compile issues in Irix when using the default compiler
instead of gcc. Thanks go to Rainer M. Canavan for this code.
* Updated included PNG library to latest stable version.
-Have fun!
3.4.1 to 3.5: (December 29, 2011)
* Stella is now DonationWare! Please see the DonationWare link on the
......@@ -93,8 +155,6 @@
* Updated the credits list in the documentation, listing people that
have donated hardware to the Stella team.
-Have fun!
3.4 to 3.4.1: (June 11, 2011)
......
......@@ -8,7 +8,7 @@
## SS SS tt ee ll ll aa aa
## SSSS ttt eeeee llll llll aaaaa
##
## Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony
## Copyright (c) 1995-2012 by Bradford W. Mott, Stephen Anthony
## and the Stella Team
##
## See the file "License.txt" for information on usage and redistribution of
......@@ -49,13 +49,18 @@ ifdef CXXFLAGS
else
CXXFLAGS:= -O2
endif
CXXFLAGS+= -Wall -Wno-multichar -Wunused -fno-rtti
CXXFLAGS+= -Wall
ifdef HAVE_GCC
CXXFLAGS+= -Wno-multichar -Wunused -fno-rtti
endif
ifdef PROFILE
PROF:= -g -pg -fprofile-arcs -ftest-coverage
CXXFLAGS+= $(PROF)
else
CXXFLAGS+= -fomit-frame-pointer
ifdef HAVE_GCC
CXXFLAGS+= -fomit-frame-pointer
endif
endif
# Even more warnings...
......@@ -121,19 +126,22 @@ clean:
.PHONY: all clean dist distclean
.SUFFIXES: .cxx
ifndef HAVE_GCC3
ifndef CXX_UPDATE_DEP_FLAG
# If you use GCC, disable the above and enable this for intelligent
# dependency tracking.
CXX_UPDATE_DEP_FLAG = -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d2"
.cxx.o:
$(MKDIR) $(*D)/$(DEPDIR)
$(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d2" $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
$(CXX) $(CXX_UPDATE_DEP_FLAG) $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
$(ECHO) "$(*D)/" > $(*D)/$(DEPDIR)/$(*F).d
$(CAT) "$(*D)/$(DEPDIR)/$(*F).d2" >> "$(*D)/$(DEPDIR)/$(*F).d"
$(RM) "$(*D)/$(DEPDIR)/$(*F).d2"
.c.o:
$(MKDIR) $(*D)/$(DEPDIR)
$(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d2" $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
$(CXX) $(CXX_UPDATE_DEP_FLAG) $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
$(ECHO) "$(*D)/" > $(*D)/$(DEPDIR)/$(*F).d
$(CAT) "$(*D)/$(DEPDIR)/$(*F).d2" >> "$(*D)/$(DEPDIR)/$(*F).d"
$(RM) "$(*D)/$(DEPDIR)/$(*F).d2"
......@@ -144,11 +152,11 @@ else
# which ensures a smooth compilation even if said headers become obsolete.
.cxx.o:
$(MKDIR) $(*D)/$(DEPDIR)
$(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d",-MQ,"$@",-MP $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
$(CXX) $(CXX_UPDATE_DEP_FLAG) $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
.c.o:
$(MKDIR) $(*D)/$(DEPDIR)
$(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d",-MQ,"$@",-MP $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
$(CXX) $(CXX_UPDATE_DEP_FLAG) $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
endif
# Include the dependency tracking files. We add /dev/null at the end
......
This is release 3.5 of Stella. Stella is a multi-platform Atari 2600 VCS
This is release 3.5.5 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
December 29, 2011
February 4, 2012
......@@ -12,39 +12,10 @@
To Do List
===========================================================================
The main Todo list is now available directly from the main webpage:
http://stella.sf.net/todo.php
If you would like to contribute to Stella's development then feel free to
contact me by email:
Stephen Anthony (stephena@users.sf.net).
The following is a list of items that I plan to get to sooner or later.
Note that currently I'm the only person working on Stella, maintaining
the code across three major platforms (Linux, MacOSX, Windows), so my
time is very limited:
* Convert code to SDL-1.3/2.0. The next major revision of SDL hasn't
been released yet, but I'm already in the process of working with
beta versions. The main reason for this change is to have hardware-
accelerated Direct3D support in Windows (which currently uses
OpenGL, and isn't as fast as it is on other systems). As well, I'll
no longer have to maintain separate software and OpenGL renderers
within Stella; SDL will handle it all behind the scenes.
* Add Blargg NTSC TV filters. This will be OpenGL only for now.
Eventually when I move to SDL 2.0, it will be available for any
accelerated backend (Direct3D, OpenGL, OpenGLES, etc).
* Add support for esoteric controllers. KidVid support is almost done;
still TODO are Mindlink and Lightgun.
* Add more debugger features, improve graphics access tracking, improve
GUI, etc.
* Fix final remaining bugs in the TIA emulation.
* Add rewind support to the entire emulation, not just in the debugger.
* Look into adding movie recording or net play.
* Probably a thousand other things that I've forgotten.
......@@ -68,14 +68,27 @@ cc_check() {
echo >> "$TMPLOG"
cat "$TMPC" >> "$TMPLOG"
echo >> "$TMPLOG"
echo "$CXX $TMPC -o $TMPO$EXEEXT $@" >> "$TMPLOG"
echo "$CXX $TMPC $LDFLAGS -o $TMPO$EXEEXT $@" >> "$TMPLOG"
rm -f "$TMPO$EXEEXT"
( $CXX "$TMPC" -o "$TMPO$EXEEXT" "$@" ) >> "$TMPLOG" 2>&1
( $CXX "$TMPC" $LDFLAGS -o "$TMPO$EXEEXT" "$@" ) >> "$TMPLOG" 2>&1
TMP="$?"
echo >> "$TMPLOG"
return "$TMP"
}
cc_check_define() {
cat > $TMPC << EOF
int main(void) {
#ifndef $1
syntax error
#endif
return 0;
}
EOF
cc_check -c
return $?
}
echocheck () {
echo_n "Checking for $@... "
}
......@@ -99,12 +112,19 @@ EOF
if test -n "$_host"; then
# In cross-compiling mode, we cannot run the result
eval "$1 -o tmp_cxx_compiler$EXEEXT tmp_cxx_compiler.cpp 2> /dev/null" && rm -f tmp_cxx_compiler$EXEEXT tmp_cxx_compiler.cpp
eval "$1 $LDFLAGS -o tmp_cxx_compiler$EXEEXT tmp_cxx_compiler.cpp 2> /dev/null" && rm -f tmp_cxx_compiler$EXEEXT tmp_cxx_compiler.cpp
else
eval "$1 -o tmp_cxx_compiler$EXEEXT tmp_cxx_compiler.cpp 2> /dev/null" && eval "./tmp_cxx_compiler 2> /dev/null" && rm -f tmp_cxx_compiler$EXEEXT tmp_cxx_compiler.cpp
eval "$1 $LDFLAGS -o tmp_cxx_compiler$EXEEXT tmp_cxx_compiler.cpp 2> /dev/null" && eval "./tmp_cxx_compiler 2> /dev/null" && rm -f tmp_cxx_compiler$EXEEXT tmp_cxx_compiler.cpp
fi
}
# Add a line of data to config.mk.
add_line_to_config_mk() {
_config_mk_data="$_config_mk_data"'
'"$1"
}
#
# Determine sdl-config
#
......@@ -376,57 +396,102 @@ fi
echocheck "compiler version"
cxx_name=`( $cc -v ) 2>&1 | tail -n 1 | cut -d ' ' -f 1`
cxx_version=`( $CXX -dumpversion ) 2>&1`
if test "$?" -gt 0; then
cxx_version="not found"
fi
have_gcc=no
cc_check_define __GNUC__ && have_gcc=yes
case $cxx_version in
2.95.[2-9]|2.95.[2-9][-.]*|3.[0-9]|3.[0-9].[0-9]|3.[0-9].[0-9][-.]*|4.[0-9]|4.[0-9].[0-9]|4.[0-9].[0-9][-.]*)
_cxx_major=`echo $cxx_version | cut -d '.' -f 1`
_cxx_minor=`echo $cxx_version | cut -d '.' -f 2`
cxx_version="$cxx_version, ok"
cxx_verc_fail=no
;;
# whacky beos version strings
2.9-beos-991026*|2.9-beos-000224*)
_cxx_major=2
_cxx_minor=95
cxx_version="$cxx_version, ok"
cxx_verc_fail=no
;;
3_4)
_cxx_major=3
_mxx_minor=4
;;
'not found')
if test "$have_gcc" = yes; then
cxx_name=`( $cc -v ) 2>&1 | tail -n 1 | cut -d ' ' -f 1`
cxx_version=`( $CXX -dumpversion ) 2>&1`
if test "$?" -gt 0; then
cxx_version="not found"
fi
case $cxx_version in
2.95.[2-9]|2.95.[2-9][-.]*|3.[0-9]|3.[0-9].[0-9]|3.[0-9].[0-9][-.]*|4.[0-9]|4.[0-9].[0-9]|4.[0-9].[0-9][-.]*)
_cxx_major=`echo $cxx_version | cut -d '.' -f 1`
_cxx_minor=`echo $cxx_version | cut -d '.' -f 2`
cxx_version="$cxx_version, ok"
cxx_verc_fail=no
;;
# whacky beos version strings
2.9-beos-991026*|2.9-beos-000224*)
_cxx_major=2
_cxx_minor=95
cxx_version="$cxx_version, ok"
cxx_verc_fail=no
;;
3_4)
_cxx_major=3
_mxx_minor=4
;;
'not found')
cxx_verc_fail=yes
;;
*)
cxx_version="$cxx_version, bad"
cxx_verc_fail=yes
;;
esac
if test "$_cxx_major" -ge "3" ; then
CXXFLAGS="$CXXFLAGS"
_make_def_HAVE_GCC3='HAVE_GCC3 = 1'
add_line_to_config_mk 'CXX_UPDATE_DEP_FLAG = -MMD -MF "$(*D)/$(DEPDIR)/$(*F).d" -MQ "$@" -MP'
fi;
_make_def_HAVE_GCC='HAVE_GCC = 1'
echo "$cxx_version"
else
cxx_version=`( $CXX -version ) 2>&1`
if test "$?" -eq 0; then
cxx_version="`echo "${cxx_version}" | sed -ne 's/^.*[^0-9]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$/\1/gp'`"
if test -z "${cxx_version}"; then
cxx_version="not found"
cxx_verc_fail=yes
fi
echo non-gcc compiler version ${cxx_version}
else
cxx_version="not found"
cxx_verc_fail=yes
echo found non-gcc compiler version ${cxx_version}
fi
CXXFLAGS="$CXXFLAGS"
case $_host_os in
irix*)
case $cxx_version in
7.4.4*)
# We just assume this is SGI MIPSpro
_cxx_major=7
_cxx_minor=4
cxx_verc_fail=no
add_line_to_config_mk 'CXX_UPDATE_DEP_FLAG = -MDupdate "$(*D)/$(DEPDIR)/$(*F).d"'
add_line_to_config_mk '-include Makedepend'
;;
*)
cxx_version="$cxx_version, bad"
cxx_verc_fail=yes
;;
esac
;;
*)
cxx_version="$cxx_version, bad"
cxx_verc_fail=yes
*)
cxx_version="$cxx_version, bad"
cxx_verc_fail=yes
;;
esac
esac
fi
echo "$cxx_version"
if test "$cxx_verc_fail" = yes ; then
echo
echo "The version of your compiler is not supported at this time"
echo "Please ensure you are using GCC 2.95.x or GCC 3.x"
exit 1
#exit 1
fi
#
# Do CXXFLAGS now we know the compiler version
#
if test "$_cxx_major" -ge "3" ; then
CXXFLAGS="$CXXFLAGS"
_make_def_HAVE_GCC3='HAVE_GCC3 = 1'
fi;
if test -n "$_host"; then
# Cross-compiling mode - add your target here if needed
case "$_host" in
......@@ -821,12 +886,14 @@ DOCDIR := $_docdir
DATADIR := $_datadir
PROFILE := $_build_profile
$_make_def_HAVE_GCC
$_make_def_HAVE_GCC3
INCLUDES += $INCLUDES
OBJS += $OBJS
DEFINES += $DEFINES
LDFLAGS += $LDFLAGS
$_config_mk_data
EOF
# This should be taken care of elsewhere, but I'm not sure where
......
stella (3.5.5-1) stable; urgency=high
* Version 3.5.5 release
-- Stephen Anthony <stephena@users.sf.net> Sat, 4 Feb 2012 18:38:25 +0200
stella (3.5-1) stable; urgency=high
* Version 3.5 release
......
......@@ -732,13 +732,10 @@ in another part of the debugger).</p>
<p>As with the TIA tab, most of the values here will be self-explanatory to a 2600
programmer, and almost all can be modified. However, the SWCHx registers need
further explanation:<p>
<p>SWCHA(W) can be directly modified; here, the (W) stands for write. Similarly,
SWACNT can be directly modified. However, the results of reading back from
the SWCHA register are influenced by SWACNT, and SWCHA(R) is a read-only display
<p>SWCHx(W) can be modified; here, the (W) stands for write. Similarly,
SWACNT/SWBCNT can be directly modified. However, the results of reading back from
the SWCHx register are influenced by SWACNT/SWBCNT, and SWCHx(R) is a read-only display
reflecting this result.</p>
<p>SWCHB cannot be directly modified; it will be indirectly modified by setting
the various difficulty switches, color/BW button, select/reset, etc. SWBCNT
is hardwired as read-only, and is not shown.</p>
<!-- ///////////////////////////////////////////////////////////////////////// -->
......@@ -784,6 +781,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>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>
</ul>
......
docs/graphics/debugger_iotab.png

5.87 KB | W: | H:

docs/graphics/debugger_iotab.png

8.27 KB | W: | H:

docs/graphics/debugger_iotab.png
docs/graphics/debugger_iotab.png
docs/graphics/debugger_iotab.png
docs/graphics/debugger_iotab.png
  • 2-up
  • Swipe
  • Onion skin
docs/graphics/debugger_tiaoutcmenu.png

2.32 KB | W: | H:

docs/graphics/debugger_tiaoutcmenu.png

2.65 KB | W: | H:

docs/graphics/debugger_tiaoutcmenu.png
docs/graphics/debugger_tiaoutcmenu.png
docs/graphics/debugger_tiaoutcmenu.png
docs/graphics/debugger_tiaoutcmenu.png
  • 2-up
  • Swipe
  • Onion skin
docs/graphics/debugger_tiatab.png

11.2 KB | W: | H:

docs/graphics/debugger_tiatab.png

9.7 KB | W: | H:

docs/graphics/debugger_tiatab.png
docs/graphics/debugger_tiatab.png
docs/graphics/debugger_tiatab.png
docs/graphics/debugger_tiatab.png
  • 2-up
  • Swipe
  • Onion skin
This diff is collapsed.
......@@ -8,13 +8,13 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2012 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: BankRomCheat.cxx 2199 2011-01-01 16:04:32Z stephena $
// $Id: BankRomCheat.cxx 2360 2012-01-20 23:56:49Z stephena $
//============================================================================
#include "Console.hxx"
......@@ -33,6 +33,10 @@ BankRomCheat::BankRomCheat(OSystem* os, const string& name, const string& code)
address = 0xf000 + unhex(myCode.substr(2, 3));
value = unhex(myCode.substr(5, 2));
count = unhex(myCode.substr(7, 1)) + 1;
// Back up original data; we need this if the cheat is ever disabled
for(int i = 0; i < count; ++i)
savedRom[i] = myOSystem->console().cartridge().peek(address + i);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
......@@ -52,7 +56,8 @@ bool BankRomCheat::disable()
{
int oldBank = myOSystem->console().cartridge().bank();
myOSystem->console().cartridge().bank(bank);
for(int i=0; i<count; i++)
for(int i = 0; i < count; ++i)
myOSystem->console().cartridge().patch(address + i, savedRom[i]);
myOSystem->console().cartridge().bank(oldBank);
......@@ -68,11 +73,9 @@ void BankRomCheat::evaluate()
int oldBank = myOSystem->console().cartridge().bank();
myOSystem->console().cartridge().bank(bank);
for(int i=0; i<count; i++)
{
savedRom[i] = myOSystem->console().cartridge().peek(address + i);
for(int i = 0; i < count; ++i)
myOSystem->console().cartridge().patch(address + i, value);
}
myOSystem->console().cartridge().bank(oldBank);
myEnabled = true;
......
......@@ -8,13 +8,13 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2012 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: BankRomCheat.hxx 2199 2011-01-01 16:04:32Z stephena $
// $Id: BankRomCheat.hxx 2318 2011-12-31 21:56:36Z stephena $
//============================================================================
#ifndef BANK_ROM_CHEAT_HXX
...