mirror of https://github.com/stella-emu/stella.git
3441 lines
113 KiB
HTML
3441 lines
113 KiB
HTML
<html>
|
|
<head>
|
|
<title>Stella - A multi-platform Atari 2600 VCS emulator</title>
|
|
<meta name="AppleTitle" content="docs">
|
|
</head>
|
|
|
|
<body bgcolor="#FFFFFF">
|
|
|
|
<center><b><font size="7">Stella</font></b></center>
|
|
<br><br>
|
|
<center><h2><b>A multi-platform Atari 2600 VCS emulator</b></h2></center>
|
|
|
|
<center><h4><b>Release 2.7.7</b></h4></center>
|
|
<br><br>
|
|
|
|
<center><h2><b>User's Guide</b></h2></center>
|
|
<br><br>
|
|
|
|
<ol>
|
|
<li><a href="#Introduction">Introduction</a></li>
|
|
<li><a href="#Requirements">What You Will Need</a></li>
|
|
<li><a href="#Installation">Installation</a></li>
|
|
<li><a href="#Games">Games</a></li>
|
|
<li><a href="#Starting">Starting A Game</a></li>
|
|
<li><a href="#Options">Changing Options</a></li>
|
|
<li><a href="#Keyboard">Keyboard Layout</a></li>
|
|
<li><a href="#Remapping">Event Remapping / Input Devices</a></li>
|
|
<li><a href="#ROMInfo">ROM Launcher</a></li>
|
|
<li><a href="#ROMAudit">ROM Audit Mode</a></li>
|
|
<li><a href="#Adaptor">Stelladaptor Support</a></li>
|
|
<li><a href="#AtariVox">AtariVox/SaveKey Support</a></li>
|
|
<li><a href="#Debugger">Developer Options/Integrated Debugger</a></li>
|
|
<li><a href="#Settings">Settings File</a></li>
|
|
<li><a href="#Cheats">Cheatcode Manager</a></li>
|
|
<li><a href="#Properties">Game Properties</a></li>
|
|
<li><a href="#Palette">Palette Support</a></li>
|
|
<li><a href="#Acknowledgments">Acknowledgments</a></li>
|
|
<li><a href="#License">License and Disclaimer</a></li>
|
|
</ol>
|
|
|
|
<br><br><br>
|
|
|
|
<center><b>February 1999 - May 2009</b></center>
|
|
<center><b>The Stella Team</b></center>
|
|
<center><b><a href="http://stella.sourceforge.net">Stella Homepage</a></b></center>
|
|
|
|
<br><br><br>
|
|
|
|
<br><br>
|
|
<h1><b>A Brief History of the Atari 2600</b></h1>
|
|
<hr>
|
|
|
|
<p><a><img src="graphics/console.png" ALIGN=RIGHT></a>
|
|
In the early 1970's, video arcade games gained commercial success for the
|
|
first time. The American public was introduced to Pong, Tank, and other
|
|
interactive video games which populated amusement parks, bars, and arcades.
|
|
The games were successful enough to create interest for home versions, so in
|
|
1975 Atari released Home Pong and it was a smash hit. Other companies such as
|
|
Magnavox and Coleco followed suit and released their own dedicated console
|
|
games. Then in 1976, Fairchild Camera and Instrument introduced the Channel F
|
|
system, the first cartridge based home video game system. The industry
|
|
recognized that cartridge systems were the future of video gaming, and began
|
|
development in that direction. In January 1977, RCA released the Studio II,
|
|
another cartridge based system, although it only projected in black and white
|
|
and seemed to be focused on educational titles. Then, in October 1977, Atari
|
|
released the Atari VCS (Video Computer System) with an initial offering of nine
|
|
games. This system, later renamed the Atari 2600, took the industry by storm
|
|
and dominated the marketplace for years to come.
|
|
</p>
|
|
|
|
<p><a><img src="graphics/chucky_cheese.png" ALIGN=LEFT></a>
|
|
Because of oversupply, the Christmas season of 1977 was very rough on the
|
|
video game industry, and the Atari 2600 was the only system that managed to
|
|
emerge unscathed. Atari enjoyed strong sales in 1978 and a fantastic holiday
|
|
season, as Atari released more games such as Outlaw, Spacewar, and Breakout.
|
|
Internally however, Atari was at odds. Nolan Bushnell, the inventor of pong and
|
|
founder of Atari, wound up leaving the company and purchased Pizza Time Theater,
|
|
which later became the successful Chuck E. Cheese! In 1979 Atari continued
|
|
their trend and released 12 more games which met with continued success.
|
|
However, Atari was now facing some stiffer competition from the Mattel
|
|
Intellivision and the Magnavox Odyssey2.
|
|
</p>
|
|
|
|
<p><a><img src="graphics/space_invaders.png" ALIGN=RIGHT></a>
|
|
Atari needed a mega-hit in 1980 in order to squash the competition, and they
|
|
found it in the home version of a game from Japan called Space Invaders. It was
|
|
so popular that people were buying the Atari 2600 just so they could play Space
|
|
Invaders at home. Following that, Atari released Adventure, which was the first
|
|
video game to contain an Easter Egg - placing an object in a certain area
|
|
revealed the programmer's name, Warren Robinett. 1980 was important for another
|
|
reason - the creation of the first ever third party software producer, Activision.
|
|
The company was formed by four Atari employees who were unsatisfied with the
|
|
working conditions at the company. They released four games initially: Dragster,
|
|
Fishing Derby, Checkers and Boxing. The games were very well received by the
|
|
public, and revealed that the Atari 2600 was capable of better games than
|
|
Atari themselves had been producing. Atari tried to prevent Activision from
|
|
selling games, but they failed and Activision grossed $70 million that year.
|
|
</p>
|
|
|
|
<p>
|
|
By 1981, the video game industry was basically a horse race between the 2600
|
|
and the Intellivision. While the Intellivision was technologically superior in
|
|
some respects, the 2600 continued to lead in sales. Atari released the home
|
|
version of Asteroids, which was a huge success. Inspired by the success of
|
|
Activision, another software development group called Imagic was formed. They
|
|
would not release any games until 1982 however. Another company, Games by Apollo,
|
|
was formed in Texas and released several games that year.
|
|
</p>
|
|
|
|
<p>
|
|
Coleco entered the market in 1982 with the release of the graphically
|
|
superior Colecovision. To combat this new system, Atari produced the 5200,
|
|
a technologically comparable system. The 2600 dropped $100 in price in order
|
|
to remain competitive. Then a company called Arcadia released a peripheral
|
|
called the Supercharger which played games in an audio cassette medium. This
|
|
allowed for multiple loads and expanded the 2600's capabilities.
|
|
<p><a><img src="graphics/pacman.png" ALIGN=LEFT></a>
|
|
Atari released Pac-Man and E.T. that year, two incredibly hyped games which
|
|
were critical flops.
|
|
Although Pac-Man sold many copies, it was considered to be a poor
|
|
translation of the arcade hit. However, there were many fantastic games
|
|
produced for the 2600 during this period, and it was still selling strong.
|
|
</p>
|
|
|
|
<p>
|
|
Ever since the inception of Activision, Atari had been fighting to keep third
|
|
parties from producing cartridges which they felt were stealing profits from
|
|
them. Finally the issue was settled when Atari agreed to allow third party
|
|
manufacturing in exchange for a royalty. Suddenly software companies began
|
|
popping up all over, and 1982 saw releases from companies like Venturevision,
|
|
Spectravision, Telesys, CBS, 20th Century Fox, US Games, M Network, Tigervision,
|
|
Data Age, Imagic and Coleco. There was even a company that released a line of
|
|
X-Rated games for the 2600 called Mystique. The year was financially successful
|
|
for Atari, however there seemed to be a glut of software. Although there were
|
|
many quality titles still produced, there was an increasing number of rushed
|
|
games as manufacturers attempted to cash in on the craze.
|
|
</p>
|
|
|
|
<p>
|
|
More companies jumped on the band wagon in 1983. Zimag, Ultravision, Amiga,
|
|
and others were also producing games and peripherals. It seemed as if there was
|
|
just too much product to meet the demand, and as it turned out there was. By
|
|
the end of the year, companies began folding. US Games, Data Age, Games by
|
|
Apollo, Telesys and others all closed their doors from poor sales. A video
|
|
game crash was occurring, and all companies were taking it on the chin.
|
|
</p>
|
|
|
|
<p>
|
|
1984 was a much more subdued year for the Atari 2600, and the price of the
|
|
system had now dropped to $40-$50. Many were saying that the video game
|
|
industry was dead. However, Atari surprised everyone by announcing the release
|
|
of the 7800, and also promising more 2600 games with improved graphics and
|
|
sound. Unfortunately, neither of these things happened in 1984 because Atari
|
|
sold their home video game division to Jack Tramiel who believed that home
|
|
computers would replace video game systems. No further mention of the 2600 or
|
|
7800 was made that year, and it appeared that they might be dead.
|
|
</p>
|
|
|
|
<p>
|
|
1985 was another very quiet year for Atari and video games in general, and only
|
|
a few games were released for the 2600. Activision produced Cosmic Commuter and
|
|
Ghostbusters, but with little fanfare or marketing, these games did not sell
|
|
well. However, because of the huge game library and cheap price, Atari still
|
|
sold over a million 2600 consoles in 1985.
|
|
</p>
|
|
|
|
<p>
|
|
There were very few plans for home video game systems by any company in 1986,
|
|
since the market appeared to be dead. Then, to most people's surprise, Nintendo
|
|
brought the NES to America and it was a smash hit, proving that video games
|
|
still had a place in the US. Atari decided that maybe it would be a good idea
|
|
to release the 7800 units it had in storage, and produce some more 2600 games.
|
|
The 7800 was released with only 3 games initially available, although it was
|
|
compatible with the 2600 library. They also redesigned the 2600 as the 2600 Jr.,
|
|
a machine with the same abilities, but a new look and marketing campaign. It
|
|
was sold for less than $50.
|
|
</p>
|
|
|
|
<p><a><img src="graphics/jr_pacman.png" ALIGN=RIGHT></a>
|
|
Video games were once again selling phenomenally in 1987. Atari released
|
|
several new titles, including Jr. Pac-Man, and also licensed a number of games
|
|
from other companies such as Donkey Kong and Q*Bert. These new titles sold for
|
|
$10-$15. Interestingly, a number of titles began appearing again from third
|
|
part companies such as Epyx, Froggo, and Exus. It seemed that the 2600 was not
|
|
dead yet!
|
|
<p><a><img src="graphics/secret_quest.png" ALIGN=LEFT></a>
|
|
In 1988, Atari rehired Nolan Bushnell and announced a number of new
|
|
titles, including Secret Quest, a game written by Mr. Bushnell himself. Atari
|
|
continued to manufacture these games even until 1989. However, it was apparent
|
|
that the 2600, after its introduction over a decade ago, was finally at the end
|
|
of its run. Although it was still produced and marketed outside of the US, the
|
|
Atari 2600 finished its run in America. No other console has had such a long
|
|
history or sold as many systems in the U.S.
|
|
</p>
|
|
|
|
<p>
|
|
Today, the 2600 still has a large number of fans who remember the countless
|
|
games played over the years, and the years to come. There are even games being
|
|
produced by hobbyists, some of them quite professionally, being released on
|
|
newly burnt cartridges with labels and manuals. And the recent trend in
|
|
retrogaming has brought many more video game fans to rediscover the 2600, and
|
|
it continues to live on 22 years after its release!
|
|
</p>
|
|
|
|
<p><i>Alexander Bilstein<br>February 1999</i></p>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="Introduction">1. Introduction</a></h1>
|
|
<hr>
|
|
|
|
<p>
|
|
Stella is a freely distributed multi-platform Atari 2600 VCS emulator; originally
|
|
developed for Linux by Bradford W. Mott. Stella allows you to enjoy all of
|
|
your favorite 2600 games once again by emulating the 2600's hardware with
|
|
software. Stella is written in C++, which allows it to be ported to other
|
|
operating systems and architectures. Since its original release Stella has
|
|
been ported to AcornOS, AmigaOS, DOS, FreeBSD, Linux, MacOS, OpenStep, OS/2,
|
|
Unix, and Windows, as well as consoles such as Sega Dreamcast, GP2X, Nintendo
|
|
DS and Playstation Portable (among others).
|
|
</p>
|
|
|
|
<p>
|
|
<h2><b>Features</b></h2>
|
|
|
|
<ul>
|
|
<li>High speed emulation using optimized C++ code</li>
|
|
<li>Supports high quality sound emulation using code derived from Ron Fries'
|
|
TIA Sound Emulation library, including stereo sound support</li>
|
|
<li>Emulates the Atari 2600 Joystick Controllers using your computer's keyboard
|
|
or joysticks</li>
|
|
<li>Emulates the Atari 2600 Keyboard Controllers using your computer's keyboard</li>
|
|
<li>Emulates the Atari 2600 Paddle Controllers using your computer's mouse, keyboard
|
|
or joysticks</li>
|
|
<li>Emulates the Atari 2600 Driving Controllers using your computer's keyboard
|
|
or joysticks</li>
|
|
<li>Emulates the CBS BoosterGrip Controller using your computer's keyboard or
|
|
joysticks</li>
|
|
<li>Emulates CX-22 / CX-80 style trackballs and Amiga Mouse using your
|
|
computer's mouse</li>
|
|
<li>Support for real Atari 2600 controllers using the
|
|
<a href="http://www.pixelspast.com/products">Stelladaptor</a></li>
|
|
<li>Support for the speech portion of a real
|
|
<a href="http://www.richard.hutchinson.dsl.pipex.com/new_page_5.htm">
|
|
AtariVox</a> device connected to your PC using a USB adaptor</li>
|
|
<li>Supports EEPROM emulation for AtariVox and SaveKey controllers</li>
|
|
<li>Supports all known bankswitching schemes (let us know if there's one we missed)</li>
|
|
<li>Supports cartridge autodetection for almost all bankswitching schemes</li>
|
|
<li>Supports Supercharger single-load and multi-load games</li>
|
|
<li>Supports property file for setting the properties associated with games</li>
|
|
<li>Supports the NTSC, PAL, PAL and SECAM television standards in 50Hz and 60Hz mode</li>
|
|
<li>Supports autodetection of display format for 50Hz vs. 60Hz modes</li>
|
|
<li>Supports several "undocumented features" of the TIA graphics chip used by
|
|
some games</li>
|
|
<li>TIA emulation supports full collision checking</li>
|
|
<li>Built-in extensive debugger</li>
|
|
</ul>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="Requirements">2. What You Will Need</a></h1>
|
|
<hr>
|
|
|
|
<p>The following sections outline the basic system requirements for running
|
|
Stella under various operating systems.
|
|
</p>
|
|
|
|
<p>Note that for this version of Stella, you are <b>not required</b> to have a
|
|
stella.pro file. ROM properties are built in, and defaults will be used
|
|
whenever necessary.</p>
|
|
|
|
<p>
|
|
<h2><b>General (required for all versions of Stella)</b></h2>
|
|
<ul>
|
|
<li>Enough RAM for the OS + 16MB RAM for the emulation; 32MB highly recommended</li>
|
|
<li>15 bit color minimum; 16 bit color graphics card highly recommended</li>
|
|
<li>SDL version 1.2.10 or greater, latest version highly recommended</li>
|
|
<li>Latest version of the zlib library</li>
|
|
<li>Joysticks or gamepads are highly recommended</li>
|
|
<li>Mouse or Stelladaptor with real paddles required for paddle emulation</li>
|
|
<li>Some ROM images (See <a href="http://www.atariage.com">AtariAge</a> for more information)</li>
|
|
</ul>
|
|
|
|
<p>
|
|
<h2><b>Linux/UNIX</b></h2>
|
|
<p>The Linux version of Stella is designed to work on a Linux Workstation with
|
|
the following:</p>
|
|
<ul>
|
|
<li>Linux Kernel 2.4.x, Linux Kernel 2.6.x is highly recommended</li>
|
|
<li>i386 or x86_64 class machine, with 32 or 64-bit distribution</li>
|
|
<li>Other architectures (MIPS, PPC, PPC64, etc) have been confirmed to work,
|
|
but aren't as well tested as i386/x86_64</li>
|
|
<li>GNU C++ compiler version 3.2.x or 4.x and the make utility are required for compiling
|
|
the Stella source code</li>
|
|
</ul>
|
|
|
|
<p>
|
|
<h2><b>Macintosh</b></h2>
|
|
|
|
<p>The Mac version of Stella is designed to work on a Power Macintosh with
|
|
the following:</p>
|
|
<ul>
|
|
<li>Mac OSX 10.3 or Above</li>
|
|
<li>500 MHz G4 PPC/Intel processor or above (Stella <b>may</b> work with a G3
|
|
processor, but this is still a work-in-progress)</li>
|
|
<li>OpenGL capable video card. Software rendering mode is still available,
|
|
but as of OSX 10.4 is substandard compared to OpenGL.</li>
|
|
<li>Xcode 3.0 is required to compile the Stella source code</li>
|
|
</ul>
|
|
|
|
<p>
|
|
<h2><b>Windows</b></h2>
|
|
|
|
<p>The Windows version of Stella is designed to work on Windows 98/ME/2000/XP/Vista
|
|
with the following:</p>
|
|
|
|
<ul>
|
|
<li>Pentium class machine required; OpenGL accelerated video card highly
|
|
recommended</li>
|
|
<li>Experimental 64-bit port has been tested on Vista64 only; it may work on
|
|
WinXP64 as well, but isn't a priority</li>
|
|
<li>Visual C++ 2008 or MinGW compiler is required to compile the Stella
|
|
source code</li>
|
|
</ul>
|
|
|
|
<p>
|
|
<h2><b>Other</b></h2>
|
|
|
|
<p>Stella is extremely portable, and in its lifetime has been ported to almost every
|
|
platform where the SDL library exists. It is 32/64 bit clean in Linux/Unix and Windows
|
|
(Win32/Win64), and is expected to be compatible with 64-bit OSX as well. The Stella
|
|
team is interested in hearing about any problems you may encounter with diverse
|
|
operating systems and CPU types.</p>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="Installation">3. Installation</a></h1>
|
|
<hr>
|
|
<p>Stella is distributed in both source and binary form. In general, you should always
|
|
download and install the appropriate binary version. Compiling from source is only
|
|
recommended for developers, or if the binary version doesn't work for some reason.
|
|
Once you have a Stella distribution you should follow the instructions for your
|
|
operating system given below.</p>
|
|
|
|
<p>If you have a supported joystick and driver installed and SDL can access the device,
|
|
you can play games using joysticks.</p>
|
|
|
|
<p>Currently, sound is supported using SDL. As long as SDL can detect your sound card,
|
|
Stella will be able to produce sound.</p>
|
|
|
|
<p>
|
|
<h2><b>Linux/UNIX</b></h2>
|
|
<ul>
|
|
<li><b>Binary DEB</b> (stella-<i>release</i>-1_arch.deb)
|
|
<ol>
|
|
<li>Install the binary DEB with the following command:
|
|
<pre> dpkg -i stella-<i>release</i>-1_arch.deb</pre></li>
|
|
</ol>
|
|
</li>
|
|
<li><b>Binary RPM</b> (stella-<i>release</i>-1.arch.rpm)
|
|
<ol>
|
|
<li>Install the binary RPM with the following command:
|
|
<pre> rpm -Uvh stella-<i>release</i>-1.arch.rpm</pre></li>
|
|
</ol>
|
|
</li>
|
|
<li><b>Compressed tarball : building from source code</b> (stella-<i>release</i>-src.tar.gz)
|
|
<ol>
|
|
<li>Extract files from the distribution:
|
|
<pre> tar zxvf stella-release-src.tar.gz</pre></li>
|
|
<li>Change directories to the stella-<i>release</i> directory</li>
|
|
<li>Configure the build with the following command:
|
|
<pre> ./configure (--help for list of options)</pre></li>
|
|
<li>Build the executable with the following command:
|
|
<pre> make</pre></li>
|
|
<li>Install the executable with the following command:
|
|
<pre> make install</pre></li>
|
|
</ol>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>
|
|
<h2><b>Macintosh</b></h2>
|
|
<ul>
|
|
<li><b>Binary DMG file</b> (StellaOSX<i>release</i>.dmg)
|
|
<ol>
|
|
<li>Mount the disk image, then copy the StellaOSX<i>release</i> folder to
|
|
your hard drive.</li>
|
|
</ol>
|
|
</li>
|
|
<li><b>Compressed tarball : building from source code</b> (stella-<i>release</i>-src.tar.gz)
|
|
<ol>
|
|
<li>Extract files from the distribution using an archiving program that supports
|
|
gzipped tar files</li>
|
|
<li>Open the <b>stella-<i>release</i>/src/macosx/stella.xcodeproj</b>
|
|
file using Xcode 3.0</li>
|
|
<li>Build the 'Stella' project</li>
|
|
<li>Copy the <b>StellaOSX.app</b> package somewhere on your system</li>
|
|
</ol>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>
|
|
<h2><b>Windows</b></h2>
|
|
<ul>
|
|
<li><b>Binary EXE installer</b> (stella-<i>release</i>-win32.exe)
|
|
<ol>
|
|
<li>Double-click on the installer and follow the onscreen instructions</li>
|
|
</ol>
|
|
</li>
|
|
<li><b>Binary ZIP file</b> (stella-<i>release</i>-win32.zip)
|
|
<ol>
|
|
<li>Unzip the binary ZIP file using <b>Winzip</b> or <b>Total Commander</b>
|
|
and copy that directory somewhere</li>
|
|
</ol>
|
|
</li>
|
|
<li><b>Compressed tarball : building from source code</b> (stella-<i>release</i>-src.tar.gz)
|
|
<ol>
|
|
<li>Extract files from the distribution using <b>Winzip</b>,
|
|
<b>Total Commander</b>, or some other archiving program that supports
|
|
gzipped tar files</li>
|
|
<li>If compiling the Stella executable using MinGW, use the same commands
|
|
as specified under <i>Linux/UNIX - Compressed tarball</i></li>
|
|
<li>If compiling using Visual C++ 2008:</li>
|
|
<ul>
|
|
<li>Open the <b>stella-<i>release</i>/src/win32/Stella.sln</b>
|
|
file using Visual C++ 2008</li>
|
|
<li>Build the 'Stella' solution</li>
|
|
<li>Copy the <b>Stella.exe</b> file somewhere on your system</li>
|
|
</ul>
|
|
</ol>
|
|
</li>
|
|
</ul>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="Games">4. Games</a></h1>
|
|
<hr>
|
|
|
|
<p>Stella allows you to play games using ROM images of cartridges and cassettes.</p>
|
|
|
|
<p>
|
|
<h2><b>Cartridges</b></h2>
|
|
|
|
<p>Most games for the Atari 2600 came on cartridges. A cartridge usually
|
|
consists of a single Read Only Memory (ROM) chip which contains the data and
|
|
code for the game. Plugging a cartridge into the Atari 2600 allows the 2600's
|
|
microprocessor to access the program stored on the cartridge.</p>
|
|
|
|
<p>In a similar way you must "plug" a copy of a cartridge into Stella when you
|
|
want to play it. Having a ROM image, BIN file, of the cartridge allows you to
|
|
do this. A ROM image is a file, which contains the actual data and code read
|
|
from the cartridge. There are several ways to obtain a ROM image of a
|
|
cartridge:</p>
|
|
|
|
<ol>
|
|
<li>If you're handy with a soldering iron then you can design and build a
|
|
device that plugs into the printer port of a PC and read the data from the
|
|
cartridge</li>
|
|
|
|
<li>You can purchase the Atari 2600 Action Packs by Activision and use
|
|
their ROM images</li>
|
|
|
|
<li>You can search around the internet and find ROM images to download</li>
|
|
</ol>
|
|
|
|
<p><b>WARNING:</b> It is illegal to use ROM images of games that you do not
|
|
actually own since these games are still copyrighted.</p>
|
|
|
|
<p>
|
|
<h2><b>Supercharger Cassettes</b></h2>
|
|
|
|
<p>Supercharger games were not stored on cartridges instead they were stored
|
|
on cassette tapes. The Supercharger, which plugged into the Atari 2600's
|
|
cartridge slot, loaded games into its 6K of Random Access Memory (RAM) using a
|
|
standard audio cassette player. The Supercharger also supported multi-loading,
|
|
which allowed games to be broken into several segments and loaded at different
|
|
times. This was useful for large games which had distinct parts such as role
|
|
playing games.</p>
|
|
|
|
<p>Most of the available Supercharger ROM images are stored in 8448 bytes files.
|
|
However, ROM images of multi-load games are sometimes stored in a set of 8448
|
|
byte files. The names of these files have a two character sequence number in
|
|
them which indicates what load they are. The sequence starts with zero, skips
|
|
a few numbers and then increments by one.</p>
|
|
|
|
<p>Stella supports multi-load games, however, the set of ROM images must be
|
|
combined into a single ROM image file. For example to create a multi-load ROM
|
|
image file for Survival Island you would do the following under Unix:
|
|
|
|
<pre> % cat survivl0.bin survivl6.bin survivl7.bin > survivl.bin</pre>
|
|
|
|
or to create it under DOS you would:
|
|
|
|
<pre> % copy /b survivl0.bin+survivl6.bin+survivl7.bin survivl.bin</pre>
|
|
|
|
<p>Once you have the multi-load ROM image file, survivl.bin in this case, you
|
|
can play the game using it.</p>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="Starting">5. Starting A Game</a></h1>
|
|
<hr>
|
|
|
|
<p>Once Stella is installed and you have some ROM images you're ready to start
|
|
playing.</p>
|
|
|
|
<p>
|
|
<h2><b>Integrated GUI</b></h2>
|
|
|
|
<p>Stella contains an integrated GUI for all ports. Commandline support is also
|
|
available for those who want to use it.</p>
|
|
|
|
<p>If you start Stella and do not specify a ROM image, it will start in
|
|
'ROM Launcher' mode:<br><br>
|
|
<img src="graphics/launcher.png"></p>
|
|
|
|
<p>If this is your first time starting Stella, you'll probably want to set the locations
|
|
for ROM files, snapshots, and other external paths. These items are accessible by clicking
|
|
the <b>Options => Config Files</b> buttons. Many other options can be set here,
|
|
but for now we'll concentrate on <i>Config Files</i> only:</p>
|
|
<p><b>Config Files</b> dialog:</p>
|
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
|
<tr>
|
|
<td><img src="graphics/launcher_options_files.png"></td>
|
|
<td> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see Commandline</th></tr>
|
|
<tr><td>Rom path</td><td>specifies location of ROM files</td><td>-romdir</td></tr>
|
|
<tr><td>State path</td><td>specifies location of state files</td><td>-statedir</td></tr>
|
|
<tr><td>Cheat file</td><td>specifies location of cheatfile database</td><td>-cheatfile</td></tr>
|
|
<tr><td>Palette file</td><td>specifies location of user palette</td><td>-palettefile</td></tr>
|
|
<tr><td>Properties file </td><td>specifies location of external stella.pro database</td><td>-propsfile</td></tr>
|
|
<tr><td>Snapshot path</td><td>specifies where to load/save snapshots</td><td>-ssdir</td></tr>
|
|
<tr><td>EEPROM path</td><td>specifies location of EEPROM files</td><td>-eepromdir</td></tr>
|
|
<tr><td>Multiple snapshots</td><td>whether to overwrite old snapshots</td><td>-sssingle</td></tr>
|
|
<tr><td>Snapshot in 1x mode</td><td>save snapshot in 1x mode, without filtering</td><td>-ss1x</td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>If you include the '~' character at the beginning of a path, it will be expanded
|
|
to your home directory. For Linux/UNIX, this corresponds to your $HOME directory,
|
|
but for Windows it means your 'My Documents' folder.</p>
|
|
|
|
<p>Selecting a new path for an item is done by clicking the appropriate button(s)
|
|
(in this case, 'Rom path' was selected). Note that although the rom path
|
|
was '~/src/stella', it expands to '/home/stephena/src/stella' in the browser:</p>
|
|
<p><img src="graphics/rom_browser.png"></p>
|
|
|
|
<p>Once you've changed your settings, you can start emulation by selecting a ROM
|
|
and pressing 'Enter' or clicking 'Select', or double-clicking a ROM. Note that
|
|
some games require you to 'Reset' the console before you start playing. In this
|
|
case, you need to hit the virtual reset switch, which by default is the F2 key.
|
|
Also, some games may require that you press the joystick fire button to begin,
|
|
which by default is the Left Control/Cmd or Space key(s). If a game uses a
|
|
more complex controller, see <b>Section 7 - <a href="#Keyboard">Keyboard Layout</a></b>
|
|
for more information.</p>
|
|
|
|
<p>
|
|
<h2><b>Command Line</b></h2>
|
|
|
|
<p>Stella can also be used from the commandline (assuming your operating system
|
|
has a commandline).</p>
|
|
|
|
<p>To run Stella from the commandline, use the following format:</p>
|
|
|
|
<pre> stella [options ...] ROM_FILENAME</pre>
|
|
|
|
<p><b>Options</b> ('0' or 'false' indicates false, '1' or 'true' indicates true,
|
|
others are self-explanatory):</p>
|
|
|
|
<table BORDER=2>
|
|
<tr>
|
|
<th>Argument</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-video <soft|gl></pre></td>
|
|
<td>Use SDL software or OpenGL rendering mode.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-gl_lib <filename></pre></td>
|
|
<td>OpenGL mode only. Specify the OpenGL library to use (only use
|
|
this if you know what you're doing). For OSX, this should
|
|
probably be left blank.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-gl_filter <nearest|linear></pre></td>
|
|
<td>OpenGL mode only. Use GL_NEAREST or GL_LINEAR filtering.
|
|
GL_NEAREST results in a scaled, pixelated image, while
|
|
GL_LINEAR introduces blurring.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-gl_aspectn <number><br>-gl_aspectp <number></pre></td>
|
|
<td>OpenGL mode only. Specify the amount (as a percentage) to scale the
|
|
TIA image width in NTSC and PAL mode. Since many video modes do not
|
|
use square pixels, you can reduce width until the pixels appear square.
|
|
Allowable values are 80 - 120; I find 85 - 90 gives the most authentic
|
|
look for NTSC, and 105 - 110 for PAL.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-gl_fsmax <1|0></pre></td>
|
|
<td>OpenGL mode only. Stretch TIA image while in fullscreen mode.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-gl_vsync <1|0></pre></td>
|
|
<td>OpenGL mode only. Synchronize screen updates to the vertical blank
|
|
period. This can result in smoother updates, and eliminate tearing.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-gl_texrect <1|0></pre></td>
|
|
<td>OpenGL mode only. Enable GL_TEXTURE_RECTANGLE extension. This causes
|
|
problems for some people using ATI video cards.</td>
|
|
</tr>
|
|
<!--
|
|
<tr>
|
|
<td><pre>-gl_accel <1|0></pre></td>
|
|
<td>OpenGL mode only. Use SDL_GL_ACCELERATED_VISUAL hint when creating
|
|
the SDL window. This causes problems for some people using ATI
|
|
video cards, in which case it should be set to false.</td>
|
|
</tr>
|
|
-->
|
|
<tr>
|
|
<td><pre>-tia_filter <filter></pre></td>
|
|
<td>Use the specified filter while in TIA/emulation mode. Currently,
|
|
this can be zoomZx, where Z={2..10}.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-fullscreen <1|0></pre></td>
|
|
<td>Play the game in fullscreen mode.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-fullres <auto|WxH></pre></td>
|
|
<td>Use the given resolution in fullscreen mode. If 'auto', let Stella decide
|
|
which resolution to use.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-center <1|0></pre></td>
|
|
<td>Centers game window (if possible).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-grabmouse <1|0></pre></td>
|
|
<td>Keeps the mouse in the game window.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-palette <standard|z26|user></pre></td>
|
|
<td>Set the palette to either normal Stella, the one used in the z26
|
|
emulator, or a user-defined palette.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-colorloss <1|0></pre></td>
|
|
<td>Enable/disable the PAL color-loss effect.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-timing <sleep|busy></pre></td>
|
|
<td>Determines type of wait to perform between processing frames.
|
|
Sleep will release the CPU as much as possible, and is the
|
|
preferred method on laptops (and other low-powered devices)
|
|
and when using GL VSync. Busy will emulate z26 busy-wait
|
|
behaviour, and use all possible CPU time, but may eliminate
|
|
graphical 'tearing' in software mode.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-framerate <number></pre></td>
|
|
<td>Display the given number of frames per second. Normally, Stella
|
|
will determine framerate based on number of scanlines.
|
|
Setting this to 0 automatically enables auto-frame
|
|
calculation (ie, framerate based on scanlines).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-sound <1|0></pre></td>
|
|
<td>Enable or disable sound generation.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-fragsize <number></pre></td>
|
|
<td>Specify the sound fragment size to use. Linux/Mac seems to work
|
|
with 512, Windows may need 2048 (but newer versions work with
|
|
512 as well).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-freq <number></pre></td>
|
|
<td>Set sound sample output frequency (0 - 48000).
|
|
Default is 31400. Do not change unless you experience sound
|
|
issues.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tiafreq <number></pre></td>
|
|
<td>Set sound sample generation frequency (0 - 48000).
|
|
Default is 31400. Do not change unless you experience sound
|
|
issues.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-volume <number></pre></td>
|
|
<td>Set the volume (0 - 100).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-clipvol <1|0></pre></td>
|
|
<td>Enable volume clipping (eliminates popping). Do not change
|
|
unless you experience sound issues.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-cheat <code></pre></td>
|
|
<td>Use the specified cheatcode (see Cheat section for description).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-showinfo <0|1></pre></td>
|
|
<td>Shows some game info on the commandline while Stella is running.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-joydeadzone <number></pre></td>
|
|
<td>Sets the joystick deadzone area for analog joysticks.
|
|
Accepts a number from 0 - 29, and uses the formula
|
|
3200 + number * 1000. So the possible deadzone values
|
|
range from 3200 to 32200.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pspeed <number></pre></td>
|
|
<td>Speed for digital emulation of paddles (1-15).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-sa1 <left|right></pre></td>
|
|
<td>Stelladaptor 1 emulates specified joystick port.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-sa2 <left|right></pre></td>
|
|
<td>Stelladaptor 2 emulates specified joystick port.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-autoslot <1|0></pre></td>
|
|
<td>Automatically switch to the next available save state slot after
|
|
saving a ROM state file.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-audiofirst <1|0></pre></td>
|
|
<td>Initialize the audio subsystem before video when emulating a
|
|
ROM. This seems to be required when using ATI video cards
|
|
in OpenGL mode in Windows. Since it doesn't hurt other
|
|
systems, the default is 1.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-ssdir <path></pre></td>
|
|
<td>The directory to save snapshot files to.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-sssingle <0|1></pre></td>
|
|
<td>Generate single snapshot instead of many, overwriting
|
|
any previous snapshots.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-ss1x <0|1></pre></td>
|
|
<td>Ignore any scaling applied to the TIA image, and save
|
|
snapshot in unscaled (1x) mode.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-rominfo <rom></pre></td>
|
|
<td>Display detailed information about the given ROM, and then exit
|
|
Stella.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-listrominfo</pre></td>
|
|
<td>Prints relevant contents of the Stella ROM database, one ROM per line,
|
|
and then exit Stella. This can be used for external frontends.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-launcherres <WxH></pre></td>
|
|
<td>Set the size of the ROM launcher.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-launcherfont <small|medium|large></pre></td>
|
|
<td>Set the size of the font in the ROM launcher.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-launcherexts <allfiles|allroms|LIST></pre></td>
|
|
<td>Specifies which files to show in the ROM launcher
|
|
('allfiles' is self-explanatory, 'allroms' is all files
|
|
with valid rom extensions (currently: a26, bin, rom,
|
|
gz, zip), 'LIST' is a ':' separated list of valid rom extensions.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-romviewer <0|1|2></pre></td>
|
|
<td>Hide ROM info viewer in ROM launcher mode (0), or use the
|
|
given zoom level (1 or 2).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-uipalette <1|2></pre></td>
|
|
<td>Used the specified palette for UI elements. This isn't yet
|
|
complete.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-listdelay <delay></pre></td>
|
|
<td>Set the amount of time to wait between treating successive
|
|
keypresses as a single word in list widgets (value can range
|
|
from 300-1000).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-mwheel <lines></pre></td>
|
|
<td>Set the number of lines a mousewheel will scroll in the UI.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-romdir <dir></pre></td>
|
|
<td>Set the directory where the ROM launcher will start.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-statedir <dir></pre></td>
|
|
<td>Set the directory in which to save state files.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-cheatfile <file></pre></td>
|
|
<td>Set the full pathname of the cheatfile database.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-palettefile <file></pre></td>
|
|
<td>Set the full pathname of the user-defined palette file.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-propsfile <file></pre></td>
|
|
<td>Set the full pathname of the ROM properties file.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-eepromdir <dir></pre></td>
|
|
<td>Set the directory in which to save EEPROM files.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-avoxport <name></pre></td>
|
|
<td>Set the name of the serial port where an AtariVox is connected.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-help</pre></td>
|
|
<td>Prints a help message describing these options, and then
|
|
exit Stella.</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>The following are useful to developers. Only use them if you know what
|
|
you're doing! Note that in all cases, the values supplied to the arguments
|
|
are <b>not</b> case sensitive.</p>
|
|
|
|
<table BORDER=2>
|
|
<tr>
|
|
<th>Argument</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-debuggerres <WxH></pre></td>
|
|
<td>Set the size of the debugger window.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-break <address></pre></td>
|
|
<td>Set a breakpoint at specified address.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-debug</pre></td>
|
|
<td>Immediately jump to debugger mode when starting Stella.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-holdreset</pre></td>
|
|
<td>Start the emulator with the Game Reset switch held down.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-holdselect</pre></td>
|
|
<td>Start the emulator with the Game Select switch held down.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-holdbutton0</pre></td>
|
|
<td>Start the emulator with the left joystick button held down.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-stats <1|0></pre></td>
|
|
<td>Overlay console info on the TIA image during emulation.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tiafloat <1|0></pre></td>
|
|
<td>Set unused TIA pins to be floating on a read/peek.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-bs <type></pre></td>
|
|
<td>Set "Cartridge.Type" property. See the <i>Game Properties</i> section
|
|
for valid types.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-type <type></pre></td>
|
|
<td>Same as using -bs.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-channels <Mono|Stereo></pre></td>
|
|
<td>Set "Cartridge.Sound" property.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-ld <A|B></pre></td>
|
|
<td>Set "Console.LeftDifficulty" property.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-rd <A|B></pre></td>
|
|
<td>Set "Console.RightDifficulty" property.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tv <Color|BlackAndWhite></pre></td>
|
|
<td>Set "Console.TelevisionType" property.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-sp <Yes|No></pre></td>
|
|
<td>Set "Console.SwapPorts" property.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-lc <type></pre></td>
|
|
<td>Set "Controller.Left" property. See the <i>Game Properties</i>
|
|
section for valid types.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-rc <type></pre></td>
|
|
<td>Set "Controller.Right" property. See the <i>Game Properties</i>
|
|
section for valid types.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-bc <type></pre></td>
|
|
<td>Sets both "Controller.Left" and "Controller.Right" properties.
|
|
See the <i>Game Properties</i> section for valid types.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-cp <Yes|No></pre></td>
|
|
<td>Set "Controller.SwapPaddles" property.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-format <format></pre></td>
|
|
<td>Set "Display.Format" property. See the <i>Game Properties</i> section
|
|
for valid formats.</td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-ystart <number></pre></td>
|
|
<td>Set "Display.YStart" property (0 - 64).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-height <number></pre></td>
|
|
<td>Set "Display.Height" property (210 - 256).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pp <Yes|No></pre></td>
|
|
<td>Set "Display.Phosphor" property.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-ppblend <number></pre></td>
|
|
<td>Set "Display.PPBlend" property, used for phosphor effect (0-100).
|
|
Default is 77.</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>
|
|
<h2><b>Command Menu</b></h2>
|
|
|
|
<p>Normally, one would use the keyboard shortcuts for controlling the
|
|
'virtual' switches in Stella (ie, the commands associated with the
|
|
function keys as described in <b>Section 7 - <a href="#Keyboard">Keyboard Layout</a></b>.
|
|
However, another alternative is available. Pressing the '\' key toggles
|
|
a command menu dialog as follows:</p>
|
|
<p><img src="graphics/commandmenu.png"></p>
|
|
|
|
<p>This dialog contains a set of buttons that represent the same functionality
|
|
as the function keys. You may find this useful if you cannot remember all
|
|
the function key events, or you wish to use Stella without a keyboard (ie,
|
|
in a standalone gaming system).</p>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="Options">6. Changing Options</a></h1>
|
|
<hr>
|
|
|
|
<p>All settings can be changed within the integrated Options UI while Stella is
|
|
running (unless otherwise noted - some settings require an application restart).
|
|
The Options menu can be accessed from the ROM launcher by clicking the
|
|
<b>Options</b> button, or in-game by pressing the 'Tab' key.</p>
|
|
|
|
<p><b>Options Menu</b> dialog:<br><br>
|
|
<img src="graphics/options.png">
|
|
<br><br>
|
|
<p><b>Video Settings</b> dialog:</p>
|
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
|
<tr>
|
|
<td><img src="graphics/options_video.png"></td>
|
|
<td> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see Commandline</th></tr>
|
|
<tr><td>Renderer (*)</td><td>use specified rendering mode (requires restart)</td><td>-video</td></tr>
|
|
<tr><td>TIA Filter</td><td>filter for emulation mode </td><td>-tia_filter</td></tr>
|
|
<tr><td>TIA Palette</td><td>palette for emulation mode</td><td>-palette</td></tr>
|
|
<tr><td>FS Res</td><td>resolution for fullscreen mode</td><td>-fullres</td></tr>
|
|
<tr><td>Timing (*)</td><td>how to wait between frames (requires restart)</td><td>-timing</td></tr>
|
|
<tr><td>GL Filter</td><td>OpenGL filter mode</td><td>-gl_filter</td></tr>
|
|
<tr><td>GL Aspect (N)</td><td>OpenGL width of TIA image in NTSC mode</td><td>-gl_aspectn</td></tr>
|
|
<tr><td>GL Aspect (P)</td><td>OpenGL width of TIA image in PAL mode</td><td>-gl_aspectp</td></tr>
|
|
<tr><td>Framerate</td><td>frames per second in emulation mode</td><td>-framerate</td></tr>
|
|
<tr><td>Fullscreen mode</td><td>self-explanatory</td><td>-fullscreen</td></tr>
|
|
<tr><td>PAL color-loss</td><td>use PAL color-loss effect</td><td>-colorloss</td></tr>
|
|
<tr><td>GL FS Stretch</td><td>stretch fullscreen OpenGL in emulation mode</td><td>-gl_fsmax</td></tr>
|
|
<tr><td>GL VSync</td><td>enable OpenGL vertical synchronization</td><td>-gl_vsync</td></tr>
|
|
<tr><td>Grab mouse</td><td>keep mouse in SDL window</td><td>-grabmouse</td></tr>
|
|
<tr><td>Center window (*)</td><td>attempt to center SDL window (requires restart)</td><td>-center</td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<p><b>Audio Settings</b> dialog:</p>
|
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
|
<tr>
|
|
<td><img src="graphics/options_audio.png"></td>
|
|
<td> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see Commandline</th></tr>
|
|
<tr><td>Volume</td><td>self-explanatory</td><td>-volume</td></tr>
|
|
<tr><td>Fragment size</td><td>set size of audio buffers</td><td>-fragsize</td></tr>
|
|
<tr><td>Output freq</td><td>change sound output frequency (advanced)</td><td>-freq</td></tr>
|
|
<tr><td>TIA freq</td><td>change TIA output frequency (advanced)</td><td>-tiafreq</td></tr>
|
|
<tr><td>Clip volume</td><td>Eliminate popping in sound generation (advanced)</td><td>-clipvol</td></tr>
|
|
<tr><td>Enable sound</td><td>self-explanatory</td><td>-sound</td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<p><b>Input Settings</b> dialog:</p>
|
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
|
<tr>
|
|
<td><img src="graphics/options_input.png"></td>
|
|
<td> </td>
|
|
<td valign="top"><br>This dialog is described in further detail in <b>Section 8 -
|
|
<a href="#Remapping">Event Remapping</a></b>.</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<p><b>UI Settings</b> dialog (3 tabs):</p>
|
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
|
<tr>
|
|
<td><img src="graphics/options_ui.png"></td>
|
|
<td> </td>
|
|
<td valign="top"><br>This tab is described in further detail in
|
|
<b>Section 9 - <a href="#ROMInfo">ROM Launcher</a></b>.</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
|
<tr>
|
|
<td><img src="graphics/options_debugger.png"></td>
|
|
<td> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see Commandline</th></tr>
|
|
<tr><td>Debugger Width/Height</td><td>self-explanatory (requires restart)</td><td>-debuggerres</td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
|
<tr>
|
|
<td><img src="graphics/options_misc.png"></td>
|
|
<td> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see Commandline</th></tr>
|
|
<tr><td>Interface Palette</td><td>palette to use for UI elements</td><td>-uipalette</td></tr>
|
|
<tr><td>List quick delay</td><td>time to wait between keypresses in listwidget</td><td>-listdelay</td></tr>
|
|
<tr><td>Mouse wheel scroll</td><td>number of lines mouse scroll will move in listwidget</td><td>-mscroll</td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<p><b>Audit ROMs</b> dialog:</p>
|
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
|
<tr>
|
|
<td><img src="graphics/romaudit.png"></td>
|
|
<td> </td>
|
|
<td valign="top"><br>This dialog is described in further detail in
|
|
<b>Section 10 - <a href="#ROMAudit">ROM Audit Mode</a></b>.</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<p><b>Game Properties</b> dialog:</p>
|
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
|
<tr>
|
|
<td><img src="graphics/options_gameinfo.png"></td>
|
|
<td> </td>
|
|
<td valign="top"><br>This dialog allows you to change all ROM properties
|
|
as described in <b>Section 16 - <a href="#Properties">Game Properties</a></b>.
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br><br>
|
|
<p><h1>
|
|
<a name="Keyboard">7. Keyboard Layout</a></h1>
|
|
<hr>
|
|
|
|
<p>The Atari 2600 console controls and controllers are mapped to the computer's
|
|
keyboard as shown in the following tables. However, most of these events can be
|
|
remapped to other keys on your keyboard or buttons on your joystick (see <b>Section 8 -
|
|
<a href="#Remapping">Event Remapping</a></b>). The tables below show the default
|
|
settings.</p>
|
|
|
|
<p><b>Console Controls (can be remapped)</b></p>
|
|
|
|
<table BORDER=2 cellpadding=5>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key (Standard)</th>
|
|
<th>Key (OSX)</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Exit emulator</td>
|
|
<td>Control + q</td>
|
|
<td>Cmd + q</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Exit game mode/enter launcher mode</td>
|
|
<td>Escape</td>
|
|
<td>Escape</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Enter/exit options mode</td>
|
|
<td>Tab</td>
|
|
<td>Tab</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Enter/exit command mode</td>
|
|
<td>Backslash (\)</td>
|
|
<td>Backslash (\)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Enter/exit debugger</td>
|
|
<td>Backquote (`)</td>
|
|
<td>Backquote (`)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Select Game</td>
|
|
<td>F1</td>
|
|
<td>F1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Reset Game</td>
|
|
<td>F2</td>
|
|
<td>F2</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Color TV</td>
|
|
<td>F3</td>
|
|
<td>F3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Black/White TV</td>
|
|
<td>F4</td>
|
|
<td>F4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Left Player Difficulty B</td>
|
|
<td>F5</td>
|
|
<td>F5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Left Player Difficulty A</td>
|
|
<td>F6</td>
|
|
<td>F6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Right Player Difficulty B</td>
|
|
<td>F7</td>
|
|
<td>F7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Right Player Difficulty A</td>
|
|
<td>F8</td>
|
|
<td>F8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Save state to current slot</td>
|
|
<td>F9</td>
|
|
<td>F9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Change current state slot</td>
|
|
<td>F10</td>
|
|
<td>F10</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Load state from current slot</td>
|
|
<td>F11</td>
|
|
<td>F11</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Save PNG snapshot</td>
|
|
<td>F12</td>
|
|
<td>F12</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Pause/resume emulation</td>
|
|
<td>Pause</td>
|
|
<td>Pause</td>
|
|
</tr>
|
|
</table>
|
|
|
|
|
|
<p><b>Joystick / BoosterGrip Controller (can be remapped)</b></p>
|
|
|
|
<table BORDER=2>
|
|
<tr>
|
|
<th>Left Joystick (Joy0)</th>
|
|
<th>Right Joystick (Joy1)</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>
|
|
<table BORDER=1 cellpadding=5>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joystick Up</td>
|
|
<td>Up arrow</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joystick Down</td>
|
|
<td>Down arrow</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joystick Left</td>
|
|
<td>Left arrow</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joystick Right</td>
|
|
<td>Right arrow</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Fire Button</td>
|
|
<td>Space</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Trigger Button</td>
|
|
<td>4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Booster Button</td>
|
|
<td>5</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
|
|
<td>
|
|
<table BORDER=1 cellpadding=5>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joystick Up</td>
|
|
<td>Y</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joystick Down</td>
|
|
<td>H</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joystick Left</td>
|
|
<td>G</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Joystick Right</td>
|
|
<td>J</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Fire Button</td>
|
|
<td>F</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Trigger Button</td>
|
|
<td>6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Booster Button</td>
|
|
<td>7</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><b>Paddle Controller digital emulation (can be remapped independently of joystick controller)</b></p>
|
|
|
|
<table BORDER=2>
|
|
<tr>
|
|
<th>Left Paddles</th>
|
|
<th>Right Paddles</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>
|
|
<table BORDER=1 cellpadding=5>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle 0 decrease</td>
|
|
<td>Same as 'Joy0 Left'</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle 0 increase</td>
|
|
<td>Same as 'Joy0 Right'</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle 0 Fire</td>
|
|
<td>Same as 'Joy0 Fire'</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle 1 decrease</td>
|
|
<td>Same as 'Joy0 Up'</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle 1 increase</td>
|
|
<td>Same as 'Joy0 Down'</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle 1 Fire</td>
|
|
<td>Same as 'Joy0 Booster'</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
|
|
<td>
|
|
<table BORDER=1 cellpadding=5>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle 2 decrease</td>
|
|
<td>Same as 'Joy1 Left'</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle 2 increase</td>
|
|
<td>Same as 'Joy1 Right'</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle 2 Fire</td>
|
|
<td>Same as 'Joy1 Fire'</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle 3 decrease</td>
|
|
<td>Same as 'Joy1 Up'</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle 3 increase</td>
|
|
<td>Same as 'Joy1 Down'</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle 3 Fire</td>
|
|
<td>Same as 'Joy1 Booster'</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><b>Driving Controller (cannot be remapped, always associated with joystick controller)</b></p>
|
|
|
|
<table BORDER=2>
|
|
<tr>
|
|
<th>Left Driving</th>
|
|
<th>Right Driving</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>
|
|
<table BORDER=1 cellpadding=5>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Left Direction</td>
|
|
<td>Same as 'Joy0 Left'</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Right Direction</td>
|
|
<td>Same as 'Joy0 Right'</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Fire Button</td>
|
|
<td>Same as 'Joy0 Fire'</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
|
|
<td>
|
|
<table BORDER=1 cellpadding=5>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Left Direction</td>
|
|
<td>Same as 'Joy1 Left'</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Right Direction</td>
|
|
<td>Same as 'Joy1 Right'</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Fire Button</td>
|
|
<td>Same as 'Joy1 Fire'</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><b>Keypad Controller (can be remapped)</b></p>
|
|
|
|
<table BORDER=2>
|
|
<tr>
|
|
<th>Left Keypad</th>
|
|
<th>Right Keypad</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>
|
|
<table BORDER=1 cellpadding=5>
|
|
<tr>
|
|
<th>Pad Button</th>
|
|
<th>Key</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>1</td>
|
|
<td>1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>2</td>
|
|
<td>2</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>3</td>
|
|
<td>3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>4</td>
|
|
<td>Q</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>5</td>
|
|
<td>W</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>6</td>
|
|
<td>E</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>7</td>
|
|
<td>A</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>8</td>
|
|
<td>S</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>9</td>
|
|
<td>D</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>.</td>
|
|
<td>Z</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>0</td>
|
|
<td>X</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>#</td>
|
|
<td>C</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
|
|
<td>
|
|
<table BORDER=1 cellpadding=5>
|
|
<tr>
|
|
<th>Pad Button</th>
|
|
<th>Key</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>1</td>
|
|
<td>8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>2</td>
|
|
<td>9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>3</td>
|
|
<td>0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>4</td>
|
|
<td>I</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>5</td>
|
|
<td>O</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>6</td>
|
|
<td>P</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>7</td>
|
|
<td>K</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>8</td>
|
|
<td>L</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>9</td>
|
|
<td>;</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>.</td>
|
|
<td>,</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>0</td>
|
|
<td>.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>#</td>
|
|
<td>/</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><b>Developer Keys in TIA mode (cannot be remapped)</b></p>
|
|
|
|
<table BORDER=2 cellpadding=5>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key (Standard)</th>
|
|
<th>Key (OSX)</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Set "Display.YStart" to next <i>larger</i> value</td>
|
|
<td>Alt + PageUp</td>
|
|
<td>Shift-Cmd + PageUp</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Set "Display.YStart" to next <i>smaller</i> value</td>
|
|
<td>Alt + PageDown</td>
|
|
<td>Shift-Cmd + PageDown</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Set "Display.Height" to next <i>larger</i> value</td>
|
|
<td>Control + PageUp</td>
|
|
<td>Cmd + PageUp</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Set "Display.Height" to next <i>smaller</i> value</td>
|
|
<td>Control + PageDown</td>
|
|
<td>Cmd + PageDown</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle frame stats (scanline count/fps/bs type/etc)</td>
|
|
<td>Alt + l</td>
|
|
<td>Shift-Cmd + l</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Player0 object</td>
|
|
<td>Alt + z</td>
|
|
<td>Shift-Cmd + z</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Player1 object</td>
|
|
<td>Alt + x</td>
|
|
<td>Shift-Cmd + x</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Missile0 object</td>
|
|
<td>Alt + c</td>
|
|
<td>Shift-Cmd + c</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Missile1 object</td>
|
|
<td>Alt + v</td>
|
|
<td>Shift-Cmd + v</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Ball object</td>
|
|
<td>Alt + b</td>
|
|
<td>Shift-Cmd + b</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Playfield object</td>
|
|
<td>Alt + n</td>
|
|
<td>Shift-Cmd + n</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Turn all TIA objects off</td>
|
|
<td>Alt + .</td>
|
|
<td>Shift-Cmd + .</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Turn all TIA objects on</td>
|
|
<td>Alt + /</td>
|
|
<td>Shift-Cmd + /</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><b>Other Keys (cannot be remapped, except those marked with '*')</b></p>
|
|
|
|
<table BORDER=2 cellpadding=5>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key (Standard)</th>
|
|
<th>Key (OSX)</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Switch to next <i>larger</i> zoom level</td>
|
|
<td>Alt + =</td>
|
|
<td>Cmd + =</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Switch to next <i>smaller</i> zoom level</td>
|
|
<td>Alt + -</td>
|
|
<td>Cmd + -</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle fullscreen/windowed mode</td>
|
|
<td>Alt + Enter</td>
|
|
<td>Cmd + Enter</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Decrease volume (*)</td>
|
|
<td>Alt + [</td>
|
|
<td>Shift-Cmd + [</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Increase volume (*)</td>
|
|
<td>Alt + ]</td>
|
|
<td>Shift-Cmd + ]</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Grab mouse (keep mouse in game window)</td>
|
|
<td>Control + g</td>
|
|
<td>Cmd + g</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle display palette (<i>NTSC/PAL/SECAM</i>)</td>
|
|
<td>Control + f</td>
|
|
<td>Cmd + f</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Save current properties to a new properties file</td>
|
|
<td>Control + s</td>
|
|
<td>Cmd + s</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Set mouse to emulate paddle 0</td>
|
|
<td>Control + 0</td>
|
|
<td>Cmd + 0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Set mouse to emulate paddle 1</td>
|
|
<td>Control + 1</td>
|
|
<td>Cmd + 1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Set mouse to emulate paddle 2</td>
|
|
<td>Control + 2</td>
|
|
<td>Cmd + 2</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Set mouse to emulate paddle 3</td>
|
|
<td>Control + 3</td>
|
|
<td>Cmd + 3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Reload current ROM (TIA mode)</td>
|
|
<td>Control + r</td>
|
|
<td>Cmd + r</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Reload ROM listing (ROM launcher mode)</td>
|
|
<td>Control + r</td>
|
|
<td>Cmd + r</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Emulate 'frying' effect (*)</td>
|
|
<td>Backspace</td>
|
|
<td>Backspace</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle 'phosphor' effect</td>
|
|
<td>Alt + p</td>
|
|
<td>Shift-Cmd + p</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle palette</td>
|
|
<td>Control + p</td>
|
|
<td>Cmd + p</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle PAL color-loss effect</td>
|
|
<td>Control + l</td>
|
|
<td>Cmd + l</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><b>UI keys in Text Editing areas (cannot be remapped)</b></p>
|
|
|
|
<table BORDER=2 cellpadding=5>
|
|
<tr><th>Key</th><th>Editor Function</th></tr>
|
|
<tr><td>Home</td><td>Move cursor to beginning of line</td></tr>
|
|
<tr><td>End</td><td>Move cursor to end of line</td></tr>
|
|
<tr><td>Delete</td><td>Remove character to right of cursor</td></tr>
|
|
<tr><td>Backspace</td><td>Remove character to left of cursor</td></tr>
|
|
<tr><td>Control-a</td><td>Same function as 'Home'</td></tr>
|
|
<tr><td>Control-e</td><td>Same function as 'End'</td></tr>
|
|
<tr><td>Control-d</td><td>Same function as 'Delete'</td></tr>
|
|
<tr><td>Control-k</td><td>Remove all characters from cursor to end of line</td></tr>
|
|
<tr><td>Control-u</td><td>Remove all characters from cursor to beginning of line</td></tr>
|
|
<tr><td>Control-w</td><td>Remove entire word to left of cursor</td></tr>
|
|
<tr><td>Control-Left</td><td>Move cursor to beginning of word to the left</td></tr>
|
|
<tr><td>Control-Right</td><td>Move cursor to beginning of word to the right</td></tr>
|
|
<tr><td>Control-c</td><td>Copy entire line to clipboard (not complete)</td></tr>
|
|
<tr><td>Control-v</td><td>Paste clipboard contents (not complete)</td></tr>
|
|
</table>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br><br>
|
|
<p><h1>
|
|
<a name="Remapping">8. Event Remapping / Input Devices</a></h1>
|
|
<hr>
|
|
|
|
<p>Almost every event in Stella can be remapped to another key on the keyboard or
|
|
to buttons on up to eight joysticks/gamepads (see <b>Section 7 -
|
|
<a href="#Keyboard">Keyboard Layout</a></b> for those events which can/cannot be
|
|
remapped).</p>
|
|
|
|
<p>Note that there are currently two separate event modes in Stella; emulation
|
|
mode and user-interface (UI) mode. Each mode has separate mappings, so (for example)
|
|
while in emulation mode, the left arrow could mean 'joystick 0 left', while in UI
|
|
mode it could mean 'move cursor left'. Emulation mode occurs whenever you're
|
|
actually playing a game. UI mode occurs whenever a user interface is present
|
|
(ROM launcher, debugger, settings menu, etc). Because of these different modes,
|
|
there are two separate mapping areas.
|
|
|
|
<p>To remap an event:
|
|
<ol>
|
|
<li>Enter <b>Options menu</b> and click the <b>Input Settings</b> button.</li>
|
|
<li>If you wish to remap emulation events, click the 'Emul. Events' tab.
|
|
Otherwise, click the 'UI Events' tab for user interface events.</li>
|
|
<li>Select event you want to remap and click the 'Map' button.</li>
|
|
<li>Press a key or a joystick button, and that key/button will be bound
|
|
to the selected event. If nothing seems to happen, either Stella
|
|
can't see the input device, or the selected event doesn't support being
|
|
remapped to the input device.</li>
|
|
<li>Erase a mapping by clicking 'Erase', or cancel a remap in progress
|
|
by clicking 'Cancel'.</li>
|
|
<li>Reset default mappings by clicking 'Defaults'.</li>
|
|
</ol>
|
|
|
|
<p>The following screenshots illustrate the event remapping process:<br><br>
|
|
<img src="graphics/eventmapping.png">
|
|
<img src="graphics/eventmapping_remap.png">
|
|
|
|
<p>Virtual devices can be configured under the 'Virtual Devs' tab, shown below:<br><br>
|
|
<img src="graphics/eventmapping_virtualdevs.png"></p>
|
|
|
|
<p>Stelladaptor devices can be configured to either the left or right virtual
|
|
ports. See <b>Section 11 - <a href="#Adaptor">Stelladaptor Support</a></b>
|
|
for further information.</p>
|
|
|
|
<p>Joystick deadzone area for analog joysticks can be set here. The deadzone
|
|
can be adjusted in an interval from 0 - 29, which internally is converted to
|
|
the range 3200 - 32200 using the formula '3200 + DEADZONE * 1000'.</p>
|
|
|
|
<p>Paddle settings are also configured here. The mouse can emulate either paddle
|
|
0, 1, 2, or 3. Note that some paddle games don't default to paddle 0. In those
|
|
cases, the ROM properties will automatically set the mouse to emulate the paddle
|
|
used by Player 0. So, for example, a ROM that defaults to paddle 1 (Demons to Diamonds)
|
|
will set 'Mouse is paddle' to 1, and a ROM that defaults to paddle 3 (Tac-Scan) will
|
|
set 'Mouse is paddle' to 3.</p>
|
|
|
|
<p>Paddle speed is used when emulating a paddle using a digital device
|
|
(keyboard, digital joystick, etc). Because of the on/off nature of digital
|
|
devices, there are no smooth analog values as would be present on a real
|
|
paddle. When using digital devices, the paddle is moved a certain amount
|
|
each frame. This speed setting specifies how much movement will occur.</p>
|
|
|
|
<p>The serial port to which a real AtariVox is connected can be set here.
|
|
See <b>Section 12 - <a href="#AtariVox">AtariVox/SaveKey Support</a></b> for
|
|
further information.</p>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="ROMInfo">9. ROM Launcher</a></h1>
|
|
<hr>
|
|
|
|
<p>Several options are configurable in the ROM launcher. The size of the
|
|
launcher and fonts, as well as the 'ROM info viewer' can be changed in
|
|
<b>UI Settings => Launcher</b> dialog, as shown below:</p>
|
|
<img src="graphics/launcher_options.png">
|
|
<p>Most of the options are self-explanatory, except for the 'ROM Info
|
|
viewer', which is described below.</p>
|
|
|
|
<p>Stella supports viewing snapshots and ROM properties of the currently
|
|
selected ROM in the ROM launcher. Support is automatic, as long as your
|
|
snapshot directory contains snapshots in the appropriate format. An
|
|
archive of updated snapshots will be available on the Stella webpage.
|
|
This archive may be updated periodically as new ROMs are found, and also
|
|
for each new release of Stella. Note that the snapshots can be any size
|
|
generated by Stella; they will be resized accordingly.</p>
|
|
|
|
<p>Currently, there are several restrictions for this feature:</p>
|
|
<ol>
|
|
<li>The ROM info viewer can be shown in 1x or 2x mode only.</li>
|
|
<li>To view snapshots in 1x mode, the ROM launcher window must be sized at
|
|
least 640x480. If the launcher isn't large enough, the functionality
|
|
will be disabled.</li>
|
|
<li>To view snapshots in 2x mode, the ROM launcher window must be sized at
|
|
least 1000x760. If the launcher isn't large enough, an attempt will
|
|
be made to use 1x mode.</li>
|
|
</ol>
|
|
|
|
<p>The following snapshots illustrate the various font sizes and rom info
|
|
zoom levels:</p>
|
|
|
|
<p>ROM info viewer in 1x mode, UI sized 800x480, small launcher font:</p>
|
|
<img src="graphics/rominfo_1x_small.png">
|
|
|
|
<p>ROM info viewer in 1x mode, UI sized 1000x760, medium launcher font:</p>
|
|
<img src="graphics/rominfo_1x_large.png">
|
|
|
|
<p>ROM info viewer in 2x mode, UI sized 1400x900, large launcher font:</p>
|
|
<img src="graphics/rominfo_2x_small.png">
|
|
|
|
<p>The text box in the upper right corner can be used to narrow down the
|
|
results in the ROM listing. When this box is empty, all files are shown
|
|
(subject to the restrictions from the filtering option, explained below).
|
|
Typing characters here where show only those files that match that
|
|
pattern. For example, typing 'Activision' will show only files that
|
|
contain the word 'Activision' in their name. This is very useful for
|
|
quickly finding a group of related ROMs. Note that the search is not
|
|
case sensitive, so you don't need to worry about capital or lower-case
|
|
letters.</p>
|
|
|
|
<p>The ROM launcher also contains a context menu, selected by clicking the
|
|
right mouse button anywhere in the current window. This context menu
|
|
contains the following items:</p>
|
|
|
|
<p><ol>
|
|
<li><p><b>Override properties</b>: Selecting this option shows a dialog whereby
|
|
ROM properties can be temporarily overriden. Selecting options from this
|
|
dialog will cause all ROMs launched after that to use those properties
|
|
you specify. Clicking <b>Default</b> will disable its functionality,
|
|
and use ROM properties as defined by the ROM itself. The dialog is as
|
|
follows (See <b>Section 16 - <a href="#Properties">Game Properties</a></b>
|
|
for more information concerning ROM properties):</p>
|
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
|
<tr>
|
|
<td><img src="graphics/launcher_override.png"></td>
|
|
<td> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>For more information,<br>see Commandline</th></tr>
|
|
<tr><td>Bankswitch type</td><td>-bs</td></tr>
|
|
<tr><td>Left Difficulty</td><td>-ld</td></tr>
|
|
<tr><td>Right Difficulty</td><td>-rd</td></tr>
|
|
<tr><td>TV Type</td><td>-tv</td></tr>
|
|
<tr><td>Hold Select down</td><td>-holdselect</td></tr>
|
|
<tr><td>Hold Reset down</td><td>-holdreset</td></tr>
|
|
<tr><td>Hold Button 0 down</td><td>-holdbutton0</td></tr>
|
|
</table>
|
|
<p></p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
|
|
<li><p><b>Filter listing</b>: Selecting this option shows a dialog whereby
|
|
one can filter the types of files shown in the listing. The dialog is as
|
|
follows:</p>
|
|
<p><img src="graphics/launcher_filter.png"></p>
|
|
<p>Currently, the choices are as follows:</p>
|
|
<p><ul>
|
|
<li><b>All files</b> - self explanatory, show all files in the ROM
|
|
listing. This is the default, and emulates the behaviour of
|
|
all previous versions of Stella.</li>
|
|
<li><b>All roms</b> - show only files with a valid ROM extension.
|
|
Currently, this means extensions .a26, .bin, .rom, .gz, .zip.</li>
|
|
<li><b>ROMs ending with</b> - show only files with a ROM extension
|
|
as selected from the checkboxes.</li>
|
|
</ul></p>
|
|
</li>
|
|
|
|
<li><b>Reload listing</b>: Selecting this performs a reload of the
|
|
current listing. It is an alternative to pressing the Ctrl/Cmd-R
|
|
key combo.</li>
|
|
</ol></p>
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br><br>
|
|
<p><h1>
|
|
<a name="ROMAudit">10. ROM Audit Mode</a></h1>
|
|
<hr>
|
|
|
|
<p>Stella has the ability to rename all your ROMs according to the name
|
|
specified in the properties database. This is useful if you've downloaded
|
|
ROMs in DOS 8.3 naming format, and wish the filenames to be more descriptive,
|
|
or the current filenames are too large to see in the launcher.</p>
|
|
|
|
<p>This feature is accessible from <b>Options => Audit ROMs</b>, and is only
|
|
available while in ROM launcher mode. The dialog box for this feature
|
|
is as follows:</p>
|
|
<img src="graphics/romaudit.png">
|
|
|
|
<p>Simply select the ROM path with the 'Audit path' button, and click the
|
|
'Audit' button. The ROMs will then be renamed according to their internal
|
|
properties. When the operation is complete, the number of ROMs that were
|
|
renamed (as well as ones that weren't) will be shown.</p>
|
|
|
|
<p>There are several items to take note of:</p>
|
|
<ul>
|
|
<li><b>THIS OPERATION CANNOT BE UNDONE</b>. I cannot stress this
|
|
enough; if you aren't completely sure you want to rename your ROMs,
|
|
don't use this function. There is no undo feature, and one won't be
|
|
added.</li>
|
|
<li>Only filenames that Stella considers to be valid ROMs will be
|
|
considered. Currently, this means files that end in '.a26',
|
|
'.bin', '.rom', '.gz' and '.zip'. Files which don't have these
|
|
extensions will be ignored.</li>
|
|
<li>If a valid ROM doesn't have a properties entry, it will be
|
|
ignored.</li>
|
|
</ul>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="Adaptor">11. Stelladaptor Support</a></h1>
|
|
<hr>
|
|
|
|
<p>Stella supports real Atari 2600 joysticks, paddles and driving controllers
|
|
using the <a href="http://www.pixelspast.com/products">Stelladaptor</a> device.</p>
|
|
|
|
<p>Stella can use up to <b>two</b> Stelladaptors; any extra ones are ignored.
|
|
Stelladaptor devices will be automatically detected and configured. Devices
|
|
can be plugged/unplugged while the emulator is running, although you will need
|
|
to restart the game currently being emulated.</p>
|
|
|
|
<p>The detection and configuration is as follows:
|
|
|
|
<ul>
|
|
<li>The first Stelladaptor found will act as the <b>left game port</b>
|
|
on a real Atari. Depending on the device, Stella will detect it as
|
|
either the left joystick, paddles 0 & 1, or the left driving controller.</li>
|
|
|
|
<li>The second Stelladaptor found will act as the <b>right game port</b>
|
|
on a real Atari. Depending on the device, Stella will detect it as
|
|
either the right joystick, paddles 2 & 3, or the right driving controller.</li>
|
|
|
|
<li>Any other Stelladaptors will be ignored.</li>
|
|
|
|
<li>The assignment ordering of Stelladaptor to port can be redefined with
|
|
'sa1' and 'sa2' (see description in 'Starting a Game').</li>
|
|
</ul>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="AtariVox">12. AtariVox/SaveKey Support</a></h1>
|
|
<hr>
|
|
|
|
<p>Stella supports a real AtariVox device for the speech/SpeakJet portion
|
|
of the controller. You will need a real AtariVox device, located
|
|
<a href="http://www.richard.hutchinson.dsl.pipex.com/new_page_5.htm">here</a>,
|
|
as well as some means of connecting it to your computer (some sort of
|
|
serial port/USB adaptor). There should be drivers for your serial convertor,
|
|
which allow your particular operating system to 'see' the device (configuring
|
|
this is outside the scope of this document). Once your operating system
|
|
properly detects the AtariVox, you will need to tell Stella which serial
|
|
port it is connected to. This is done by using the '-avoxport' commandline
|
|
argument, or by setting it in the UI under the 'Virtual Devs' tab in
|
|
'Input Settings', as described in Section 8.</p>
|
|
|
|
<p>Note that you must use the entire name of the port as specified by
|
|
your operating system. For example, in Windows this would be COM1,
|
|
COM2, etc; Linux and OSX tend to use names similar to '/dev/xxxxxx'.
|
|
For now, only Linux/UNIX, OSX, and Win32 are supported.</p>
|
|
|
|
<p>Support for the EEPROM portion of the AtariVox and SaveKey is currently
|
|
emulated. That is, a file will be created on your computer simulating the
|
|
EEPROM; the actual EEPROM hardware itself will not be accessed or modified.
|
|
This is very useful in the testing stages of creating a new game, since
|
|
writing to a real EEPROM many times will eventually wear it out.</p>
|
|
|
|
<p>The location of the EEPROM files are configurable through the
|
|
'<i>-eepromdir</i>' commandline argument and within the application itself
|
|
(see <b>Section 5 - <a href="#Starting">Starting a Game</a></b>). If the
|
|
path for these files hasn't been set, the default location will depend on the
|
|
version of Stella, as follows:</p>
|
|
|
|
<p><table cellpadding="5" border="1">
|
|
<tr>
|
|
<td><b>Linux/Unix</b></td>
|
|
<td><i>$HOME/.stella/atarivox_eeprom.dat<br>
|
|
$HOME/.stella/savekey_eeprom.dat</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Macintosh</b></td>
|
|
<td><i>$HOME/.stella/atarivox_eeprom.dat<br>
|
|
$HOME/.stella/savekey_eeprom.dat</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Windows</b></td>
|
|
<td><i>%MY_DOCUMENTS%\Stella\atarivox_eeprom.dat<br>
|
|
%MY_DOCUMENTS%\Stella\savekey_eeprom.dat</i>
|
|
<b>OR</b><br>
|
|
<i>_BASEDIR_\atarivox_eeprom.dat<br>
|
|
_BASEDIR_\savekey_eeprom.dat<br></i>
|
|
(if a file named 'basedir.txt' exists in the application
|
|
directory containing the full pathname for _BASEDIR_)
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>Note that these EEPROM files will be created when necessary, and
|
|
initialized as a real EEPROM would be (containing all $FF). The
|
|
files can be manually deleted, which is very useful in testing
|
|
cases where a ROM is accessing the EEPROM for the first time.</p>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="Debugger">13. Developer Options/Integrated Debugger</a></h1>
|
|
<hr>
|
|
|
|
<p>Many options are available for ROM developers, which are described in
|
|
different sections of this manual, as follows:</p>
|
|
|
|
<p><ul>
|
|
<li>Developer key-combo shortcuts, used to change TIA state dynamically
|
|
(ie, while the emulation is still running). See the <b>Developer Keys
|
|
in TIA mode</b> options under <b>Section 7 -
|
|
<a href="#Keyboard">Keyboard Layout</a></b> for more information.</li>
|
|
|
|
<li>Commandline options influencing emulation state. See the <b>Command
|
|
Line</b> options under <b>Section 5 - <a href="#Starting">Starting a Game</a></b>)
|
|
for more information.</li>
|
|
|
|
<li>Viewing TIA/console information overlaid on the TIA image. This option
|
|
can be enabled from the commandline or using the Alt/ShiftCmd-L key combo,
|
|
and is extremely useful for viewing the current scanline count and associated
|
|
frames per second, bankswitch and display formats, etc. The following shows
|
|
an example of this information:
|
|
<p><img src="graphics/developer_stats.png"></p>
|
|
<p>The two lines of output describe the following:
|
|
<ol>
|
|
<li>Number of scanlines in current frame, associated framerate, and
|
|
resulting display format. Note that the framerate shown is the
|
|
<i>internal</i>, virtual framerate (it's calculated from the
|
|
number of scanlines). If the '*' character is present, it means
|
|
the display format was auto-detected as shown. For the given example,
|
|
the format was auto-detected as 'NTSC'.</li>
|
|
<li>Cartridge information. If the '*' character is present,
|
|
it means the bankswitch format was auto-detected as shown. The item
|
|
in round brackets indicates ROM size. For the given example,
|
|
the bankswitch type was auto-detected as 4K, and the file size was
|
|
4K (4096 bytes).</li>
|
|
</li>
|
|
</ol></p></li>
|
|
</ul></p>
|
|
|
|
<p>Finally, Stella contains an extensive, built-in debugger. Have a look at
|
|
<a href="debugger.html">this page</a> for integrated debugger documentation.</p>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="Settings">14. Settings File</a></h1>
|
|
<hr>
|
|
|
|
<p>Stella will remember when you change a setting either at the command line
|
|
or while the emulation is running, and use the settings the next time
|
|
you start the emulator. The settings are saved in a text file which can
|
|
be edited outside of Stella. This file can contain your default options,
|
|
and eliminates the need to specify them on the command line. Any
|
|
options specified on the command line will override those in the settings file.</p>
|
|
|
|
<p>The syntax for the settings file is very straightforward. Any line starting with
|
|
a ';' character is considered a comment and is ignored. Other lines must be of
|
|
the form: <b>command = value</b>, where <i>command</i> is the same as that
|
|
specified on the command line (without the '-' character), and <i>value</i>
|
|
is dependent on the command.</p>
|
|
|
|
<p>For example, the following table illustrates how command line and settings entries
|
|
are similar:</p>
|
|
|
|
<table BORDER=2>
|
|
<tr>
|
|
<th>Command Line</th>
|
|
<th>Settings File</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>-video gl</td>
|
|
<td>video = gl</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>-volume 75</td>
|
|
<td>volume = 75</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>-showinfo 1</td>
|
|
<td>showinfo = 1 (or showinfo = true)</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>The settings file has a special name/location depending on which version of Stella
|
|
you use, which is currently not configurable:</p>
|
|
|
|
<p><table cellpadding="5" border="1">
|
|
<tr>
|
|
<td><b>Linux/Unix</b></td>
|
|
<td><i>$HOME/.stella/stellarc</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Macintosh</b></td>
|
|
<td>Not applicable; settings are saved in <i>$HOME/Library/Preferences/StellaOSX.plist</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Windows</b></td>
|
|
<td><i>%MY_DOCUMENTS%\Stella\stella.ini</i>
|
|
<b>OR</b><br>
|
|
<i>_BASEDIR_\stella.ini</i>
|
|
(if a file named 'basedir.txt' exists in the application
|
|
directory containing the full pathname for _BASEDIR_)
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br><br>
|
|
<p><h1>
|
|
<a name="Cheats">15. Cheatcode Manager</a></h1>
|
|
<hr>
|
|
|
|
<p>Stella contains support for Bob Colbert's Cheetah cheat codes, as
|
|
well as an extended Stella-specific type of cheat code that works on
|
|
bankswitched ROMs.</p>
|
|
|
|
<p>To add/remove/edit a cheat code, enter the 'Cheat Code' dialog:<br><br>
|
|
<img src="graphics/cheat.png">
|
|
|
|
<p>Currently, there are three types of cheatcodes available, all of which
|
|
must be entered in hexidecimal format:
|
|
<ul>
|
|
<li><p>Per-frame RAM cheats:<br>
|
|
Evaluated each frame, and apply to RAM only. Format as follows:
|
|
<pre>
|
|
4-digit code: c041
|
|
c0 = address
|
|
41 = data
|
|
</pre>
|
|
</li>
|
|
|
|
<li>Cheetah codes, which are explained in detail on
|
|
<a href="http://members.cox.net/rcolbert/">Bob Colbert's web page</a>,
|
|
along with a list of codes for various games. Cheetah codes
|
|
don't support bankswitched ROMs, so they only work for 2K or 4K ROMs.
|
|
Format as follows:
|
|
<pre>
|
|
6-digit (cheetah) code: aaaddc
|
|
aaa = address - $f000
|
|
dd = data
|
|
c = count - 1
|
|
</pre>
|
|
</li>
|
|
|
|
<li>Stella extended cheats are similar to Cheetah codes, except that
|
|
they can be 7 or 8 digits long, with the extra digits used for the
|
|
bank number:
|
|
<pre>
|
|
7-digit (stella) code: baaaddc
|
|
b = bank (0 to $f)
|
|
aaa = address - $f000
|
|
dd = data
|
|
c = count - 1
|
|
|
|
8-digit (stella) code: bbaaaddc
|
|
bb = bank (0 to $ff)
|
|
aaa = address - $f000
|
|
dd = data
|
|
c = count - 1
|
|
</pre>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>There's also the concept of <i>one shot</i> codes. These codes work
|
|
exactly the same as above, except they aren't saved. They are evaluated
|
|
once and immediately discarded.
|
|
|
|
<p>Here are a few cheat codes we've found:</p>
|
|
<pre>
|
|
Pitfall (standard Cheetah codes):
|
|
5b0ea1 - infinite lives
|
|
723ea1 - infinite time
|
|
aa5??0 - set starting level, ?? = 01 to ff (d0 is kinda neat)
|
|
|
|
Battlezone (Stella extended codes):
|
|
1236ea1 - infinite lives
|
|
|
|
Ms Pac-Man (Stella extended codes):
|
|
108fea1 - infinite lives
|
|
</pre>
|
|
|
|
<p>The name of the cheat database file is configurable through the
|
|
'<i>-cheatfile</i>' commandline argument and within the application itself
|
|
(see <b>Section 5 - <a href="#Starting">Starting a Game</a></b>). If the
|
|
path for this file hasn't been set, the default filename will depend on the
|
|
version of Stella, as follows:</p>
|
|
|
|
<p><table cellpadding="5" border="1">
|
|
<tr>
|
|
<td><b>Linux/Unix</b></td>
|
|
<td><i>$HOME/.stella/stella.cht</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Macintosh</b></td>
|
|
<td><i>$HOME/.stella/stella.cht</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Windows</b></td>
|
|
<td><i>%MY_DOCUMENTS%\Stella\stella.cht</i>
|
|
<b>OR</b><br>
|
|
<i>_BASEDIR_\stella.cht</i>
|
|
(if a file named 'basedir.txt' exists in the application
|
|
directory containing the full pathname for _BASEDIR_)
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<p>Stella will require a restart for changes to this file to take effect.</p>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="Properties">16. Game Properties</a></h1>
|
|
<hr>
|
|
|
|
<p>Stella uses game properties to specify the "best" emulator settings for a
|
|
game. As of version 2.2 of Stella, a default database of properties are
|
|
built-in, but you may modify these through the use of a <b>stella.pro</b> file.
|
|
This per-user file will contain all properties modified by the user. So this
|
|
means that when you upgrade Stella, your personal properties settings are
|
|
preserved.</p>
|
|
|
|
<p>
|
|
<h2><b>Property File</b></h2>
|
|
|
|
<p>A property file consists of some number of blocks. Each block in the file
|
|
contains the properties for a single game. For example the general format of
|
|
a property file is:</p>
|
|
|
|
<p>
|
|
<pre>
|
|
; Comments
|
|
"Cartridge.MD5" "Value"
|
|
"Property" "Value"
|
|
""
|
|
|
|
; Comments
|
|
"Cartridge.MD5" "Value"
|
|
"Property" "Value"
|
|
""
|
|
|
|
. . .
|
|
|
|
; Comments
|
|
"Cartridge.MD5" "Value"
|
|
"Property" "Value"
|
|
""</pre>
|
|
|
|
<p>Every block in the property file must have a unique value for the
|
|
<i>Cartridge.MD5</i> property.</p>
|
|
|
|
<p>
|
|
<h2><b>Properties</b></h2>
|
|
|
|
<p>Each block in a property file consists of a set of properties for a single
|
|
game. Stella supports the properties described below:</p>
|
|
|
|
<table CELLSPACING="10">
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cartridge.MD5:</i></td>
|
|
<td>Indicates the MD5 checksum of the ROM image as a
|
|
string of hexadecimal digits. Stella uses this property while
|
|
attempting to match a game with its block of properties. If the
|
|
value of the property matches the MD5 checksum of the ROM image then
|
|
Stella uses that block of properties for the game. You can use the
|
|
GNU md5sum program, which is included with most Linux distributions,
|
|
to calculate the MD5 checksum of a ROM image.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cartridge.Manufacturer:</i></td>
|
|
<td>Indicates the game's manufacturer.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cartridge.ModelNo:</i></td>
|
|
<td>Indicates the manufacturer's model number for the game.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cartridge.Name:</i></td>
|
|
<td>Indicates the actual name of the game. When you save snapshots,
|
|
load/save state files, or use the 'ROM Audit' functionality,
|
|
this is the name that will be used for the respective file(s).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cartridge.Note:</i></td>
|
|
<td>Contains any special notes about playing the game.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cartridge.Rarity:</i></td>
|
|
<td>Indicates how rare a cartridge is, based on the scale described on AtariAge.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cartridge.Sound:</i></td>
|
|
<td>Indicates if the game should use 1 or 2 channels for sound output.
|
|
All original Atari 2600 machines supported 1 channel only,
|
|
but some homebrew games have been written to take advantage of stereo
|
|
sound. The value must be <b>Mono</b> or <b>Stereo</b>.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cartridge.Type:</i></td>
|
|
<td>Indicates the bank-switching type for the game.
|
|
The value of this property must be either <b>Auto-detect</b> or one of the following
|
|
(for more information about bank-switching see Kevin Horton's 2600 bankswitching
|
|
document or the documentation in each cartridges source code file). Types marked
|
|
as (*) do not currently have reliable auto-detection, or may not be fully
|
|
supported in the debugger:
|
|
<table cellpadding="2" border="1">
|
|
<tr><th> Type </th><th>Description</th></tr>
|
|
<tr><td>0840 </td><td>8K ECONObanking </td></tr>
|
|
<tr><td>2K </td><td>2K Atari </td></tr>
|
|
<tr><td>3E </td><td>32K Tigervision </td></tr>
|
|
<tr><td>3F </td><td>512K Tigervision </td></tr>
|
|
<tr><td>4A50 (*)</td><td>64K 4A50 + ram </td></tr>
|
|
<tr><td>4K </td><td>4K Atari </td></tr>
|
|
<tr><td>AR </td><td>Supercharger </td></tr>
|
|
<tr><td>CV </td><td>Commavid extra ram </td></tr>
|
|
<tr><td>DPC </td><td>Pitfall II </td></tr>
|
|
<tr><td>E0 </td><td>8K Parker Bros </td></tr>
|
|
<tr><td>E7 </td><td>16K M-network </td></tr>
|
|
<tr><td>EF </td><td>64K Homestar Runner </td></tr>
|
|
<tr><td>EFSC </td><td>64K Homestar Runner + ram</td></tr>
|
|
<tr><td>F4 </td><td>32K Atari </td></tr>
|
|
<tr><td>F4SC </td><td>32K Atari + ram </td></tr>
|
|
<tr><td>F6 </td><td>16K Atari </td></tr>
|
|
<tr><td>F6SC </td><td>16K Atari + ram </td></tr>
|
|
<tr><td>F8 </td><td>8K Atari </td></tr>
|
|
<tr><td>F8SC </td><td>8K Atari + ram </td></tr>
|
|
<tr><td>FASC </td><td>CBS RAM Plus </td></tr>
|
|
<tr><td>FE </td><td>8K Decathlon </td></tr>
|
|
<tr><td>MB </td><td>Dynacom Megaboy </td></tr>
|
|
<tr><td>MC </td><td>C. Wilkson Megacart </td></tr>
|
|
<tr><td>SB </td><td>128-256k SUPERbanking </td></tr>
|
|
<tr><td>UA </td><td>8K UA Ltd. </td></tr>
|
|
<tr><td>X07 (*)</td><td>64K AtariAge </td></tr>
|
|
</table></td>
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Console.LeftDifficulty:</i></td>
|
|
<td>Indicates the default difficulty setting for the left
|
|
player. The value must be <b>A</b> or <b>B</b>.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Console.RightDifficulty:</i></td>
|
|
<td>Indicates the default difficulty setting for the
|
|
right player. The value must be <b>A</b> or <b>B</b>.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Console.TelevisionType:</i></td>
|
|
<td>Indicates the default television setting for the
|
|
game. The value must be <b>Color</b> or <b>BlankAndWhite</b>.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Console.SwapPorts:</i></td>
|
|
<td>Indicates that the left and right ports should be
|
|
swapped internally. This is used for ROMs like 'Raiders' where the
|
|
Player 0 joystick is plugged into the right joystick port.
|
|
The value must be <b>Yes</b> or <b>No</b>.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Controller.Left:</i></td>
|
|
<td>Indicates what type of controller the left player
|
|
uses. The value must be <b>BoosterGrip</b>, <b>Driving</b>,
|
|
<b>Keyboard</b>, <b>Paddles</b>, <b>Trackball22</b>,
|
|
<b>Trackball80</b>, <b>AmigaMouse</b> or <b>Joystick</b>.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Controller.Right:</i></td>
|
|
<td>Indicates what type of controller the right player
|
|
uses. The value must be <b>BoosterGrip</b>, <b>Driving</b>,
|
|
<b>Keyboard</b>, <b>Paddles</b>, <b>Trackball22</b>,
|
|
<b>Trackball80</b>, <b>AmigaMouse</b>, <b>AtariVox</b>,
|
|
<b>SaveKey</b> or <b>Joystick</b>.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Controller.SwapPaddles:</i></td>
|
|
<td>Indicates that the left and right paddles in
|
|
a particular port should be swapped. This is used for ROMs like
|
|
'Demons to Diamonds' where the default paddle is paddle 1, not
|
|
paddle 0. Other ROMs such as 'Tac-Scan' default to paddle 3,
|
|
which can be set using both 'Controller.SwapPaddles' and
|
|
'Console.SwapPorts'. The value must be <b>Yes</b> or <b>No</b>.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Display.Format:</i></td>
|
|
<td>Indicates the television format the game was designed for. The value
|
|
must be <b>Auto-detect</b>, <b>NTSC</b>, <b>PAL</b>, <b>SECAM</b>, <b>NTSC50</b>,
|
|
<b>PAL60</b> or <b>SECAM60</b>.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Display.YStart:</i></td>
|
|
<td>Indicates the scan-line to start displaying at.
|
|
The value must be <i>n</i> such that 0 <= <i>n</i> <= 64.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Display.Height:</i></td>
|
|
<td>Indicates the number of scan-lines to display.
|
|
The value must be <i>n</i> such that 210 <= <i>n</i> <= 256.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Display.Phosphor:</i></td>
|
|
<td>Indicates whether the phosphor effect should be emulated or not.
|
|
The value must be <b>Yes</b> or <b>No</b>.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Display.PPBlend:</i></td>
|
|
<td>Indicates the amount of blending which will occur while using the
|
|
phosphor effect. The value must be <i>n</i> such that 0 <= <i>n</i>
|
|
<= 100. The default value is 77.</td>
|
|
</tr>
|
|
</table>
|
|
<!--
|
|
<p><b>Note:</b> Items marked as '*' are deprecated, and will probably be
|
|
removed in a future release.</p>
|
|
-->
|
|
<p>The name of the properties file is configurable through the
|
|
'<i>-propsfile</i>' commandline argument and within the application itself
|
|
(see <b>Section 5 - <a href="#Starting">Starting a Game</a></b>). If the
|
|
path for this file hasn't been set, the default filename will depend on the
|
|
version of Stella, as follows:</p>
|
|
|
|
<p><table cellpadding="5" border="1">
|
|
<tr>
|
|
<td><b>Linux/Unix</b></td>
|
|
<td><i>$HOME/.stella/stella.pro</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Macintosh</b></td>
|
|
<td><i>$HOME/.stella/stella.pro</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Windows</b></td>
|
|
<td><i>%MY_DOCUMENTS%\Stella\stella.pro</i>
|
|
<b>OR</b><br>
|
|
<i>_BASEDIR_\stella.pro</i>
|
|
(if a file named 'basedir.txt' exists in the application
|
|
directory containing the full pathname for _BASEDIR_)
|
|
</td>
|
|
|
|
</tr>
|
|
</table>
|
|
<p>Stella will require a restart for changes to this file to take effect.</p>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="Palette">17. Palette Support</a></h1>
|
|
<hr>
|
|
|
|
<p>An Atari 2600 palette consists of 128 colours, which are different
|
|
for the three major television standards (NTSC, PAL, SECAM).
|
|
Stella supports two built-in palettes and one user-defined palette for each format.
|
|
These are set using the '-palette' option, and are described as follows:</p>
|
|
<p><table cellpadding="5" border="1">
|
|
<tr>
|
|
<td><b>standard</b></td>
|
|
<td>The default palette from Stella 1.4 onwards.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>z26</b></td>
|
|
<td>The palette from the z26 emulator.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>user</b></td>
|
|
<td>An external palette file, supplied by the user.</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>Support for a user-defined palette is a new feature for Stella 2.3, and
|
|
is further described as follows:
|
|
<ul>
|
|
<li>The palette file must be at least 792 bytes long. Colours are stored
|
|
in 24-bit RGB, with the first byte for red, the second for green, the
|
|
third for blue, for a total of 3 bytes per colour.</li>
|
|
<li>The first 384 bytes of the file (128 * 3) will be used for the NTSC
|
|
palette. The next 384 bytes (128 * 3) will be for the PAL palette.
|
|
The next 24 bytes (8 * 3) will be for the SECAM palette, which
|
|
consists of eight distinct colours. Any extra data in the file
|
|
will be ignored.</li>
|
|
<li>The PAL colour-loss effect is calculated within Stella. You do not
|
|
need to specify those colours in the palette file.
|
|
</ul>
|
|
|
|
<p>The name of the palette file is configurable through the
|
|
'<i>-palettefile</i>' commandline argument and within the application itself
|
|
(see <b>Section 5 - <a href="#Starting">Starting a Game</a></b>). If the
|
|
path for this file hasn't been set, the default filename will depend on the
|
|
version of Stella, as follows:</p>
|
|
|
|
<p><table cellpadding="5" border="1">
|
|
<tr>
|
|
<td><b>Linux/Unix</b></td>
|
|
<td><i>$HOME/.stella/stella.pal</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Macintosh</b></td>
|
|
<td><i>$HOME/.stella/stella.pal</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Windows</b></td>
|
|
<td><i>%MY_DOCUMENTS%\Stella\stella.pal</i>
|
|
<b>OR</b><br>
|
|
<i>_BASEDIR_\stella.pal</i>
|
|
(if a file named 'basedir.txt' exists in the application
|
|
directory containing the full pathname for _BASEDIR_)
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<p>Note that to actually use the external palette, the palette file must
|
|
exist and be valid, <b>and</b> the palette option should be set to <i>user</i>
|
|
(in <b>Video Settings</b> dialog). The current ROM will have to be reloaded
|
|
for changes to this file to take effect.</p>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="Acknowledgments">18. Acknowledgments</a></h1>
|
|
<hr>
|
|
|
|
<p>Bradford W. Mott started developing Stella during the fall of 1995 and since
|
|
then a number of people from around the world have contributed to the project.
|
|
Some people have provided technical help while others have offered suggestions
|
|
and praise. The Stella Team is grateful for all the help and support it has
|
|
received over the years. The following is an incomplete list of the people who have
|
|
played a part in bringing Stella to you:</p>
|
|
|
|
<table CELLSPACING="15">
|
|
<tr>
|
|
<td VALIGN="TOP">Stephen Anthony</td>
|
|
<td>Ported Stella 1.1 to SDL. Added extra command line options to X11/SDL
|
|
versions. Added INI file support, faster startup, snapshot support,
|
|
and pause functionality to core. Converted Stella 1.1 manual to HTML.
|
|
Ported codebase to SDL for Windows/MacOSX. Added OpenGL support and
|
|
Stelladaptor support. Current maintainer for the Linux and Windows versions.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">David Aspell</td>
|
|
<td>Ported release 0.7 of Stella to Java</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Christopher Bennett</td>
|
|
<td>Helped discover a Superchanger emulation bug in release 1.0 of Stella</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Alexander Bilstein</td>
|
|
<td>Provided "A Brief History of the Atari 2600" for this manual</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Dan Boris</td>
|
|
<td>Provided technical information on the Supercharger</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Piero Cavina</td>
|
|
<td>Allowed "Oystron" to be included in the Stella distribution</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Bob Colbert</td>
|
|
<td>Allowed "Okie Dokie" to be included in the Stella distribution</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Joe D'Andrea</td>
|
|
<td>Author of the IRIX port of Stella until release 1.2</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Renato Ferreira</td>
|
|
<td>Provided code to support private colormaps under Unix</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Ron Fries</td>
|
|
<td>Author of the awesome TIA Sound library</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Aaron Giles</td>
|
|
<td>Author of the Power Macintosh version of Stella until release 1.1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Mark Grebe</td>
|
|
<td>Author of the Macintosh OSX version of Stella starting with the
|
|
1.4 release. Helped with Stelladaptor support.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Alex Herbert</td>
|
|
<td>Provided much information on AtariVox and SaveKey functionality</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Richard Hutchinson</td>
|
|
<td>Provided an AtariVox USB adaptor to help with AVox development</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Mark Hahn</td>
|
|
<td>Allowed "Elk Attack" to be included in the Stella distribution and
|
|
provided help with the TIA HMOVE blank bug</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Kevin Horton</td>
|
|
<td>Author of the definitive Atari 2600 bank-switching document</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Thomas Jentzsch</td>
|
|
<td>Provided updated NTSC palette and many ideas</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Kostas Nakos</td>
|
|
<td>Author/maintainer of the WinCE version of Stella starting with the
|
|
2.0 release</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Erik Kovach</td>
|
|
<td>Author of the property file for release 0.7, 1.0, 1.1, and 1.2 of Stella</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Daniel Marks</td>
|
|
<td>Provided improved keyboard joystick support for Stella release 0.1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">James Mcclain</td>
|
|
<td>Provided patches for the 1.2 release to get Stella to compile with GCC 3.0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">David McEwen</td>
|
|
<td>Author of the Acorn version of Stella</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Jeff Miller</td>
|
|
<td>Author of the Windows version of Stella until release 1.2</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Dan Mowczan</td>
|
|
<td>Provided a Supercharger to help with Stella's development</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Jack Nutting</td>
|
|
<td>Author of the OpenStep version of Stella</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">John Payson</td>
|
|
<td>Provided EEPROM emulation code for AtariVox and SaveKey support</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Manuel Polik</td>
|
|
<td>Author of the Windows version of Stella starting with the 1.2 release</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Jim Pragit</td>
|
|
<td>Author of the "Game Menu" emulator game shell</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">John Saeger</td>
|
|
<td>Participated in a helpful discussion on understanding the TIA's
|
|
RESPx multi-sprite trick</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Chris Salomon</td>
|
|
<td>Provided information and code to help implement Supercharger support</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Glenn Saunders</td>
|
|
<td>Provided a Supercharger to help with Stella's development</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Jason Scott</td>
|
|
<td>Organizer of the property file archive for early versions of
|
|
Stella; now he's helping with the web site</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">David Shaw</td>
|
|
<td>Provided make targets for the BSDI platform</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Raul Silva</td>
|
|
<td>Helped with design and graphics for an early version of the Stella
|
|
web site</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Chris Snell</td>
|
|
<td>Maintained a mirror of the Stella FTP site</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Darrell Spice Jr.</td>
|
|
<td>Author of the OS/2 version of Stella</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">John Stiles</td>
|
|
<td>Maintained the Macintosh version of Stella until release 1.2</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Eckhard Stolberg</td>
|
|
<td>Provided a description of the TIA bug that produces the star field
|
|
effect in Cosmic Ark, provided the PAL television palette, and
|
|
participated in a helpful discussion on understanding the TIA's RESPx
|
|
multi-sprite trick. Provided the Commavid, Megaboy, 4A50 and X07 support
|
|
for Stella as well as some improved Supercharger BIOS code.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Matthew Stroup</td>
|
|
<td>Author of the Amiga version of Stella</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Joel Sutton</td>
|
|
<td>Author of the FreeBSD version of Stella</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Greg Troutman</td>
|
|
<td>Allowed "This Planet Sucks" to be included in the Stella distribution</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Curt Vendel</td>
|
|
<td>Provided schematics of the TIA which are being used to improve the
|
|
TIA emulation.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">David Voswinkel</td>
|
|
<td>Maintainer of the PSP version of Stella starting with the 2.0 release</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Brian Watson</td>
|
|
<td>Helped with getting the illegal CPU instruction support working with Stella.
|
|
Brian also submitted a number of other changes, such as debugger support, which
|
|
have been finally integrated into the 2.0 release of Stella. Without
|
|
a doubt, there would be no debugger support in Stella if not for the
|
|
tireless work of Brian.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Keith Wilkins</td>
|
|
<td>Maintained the DOS version of Stella until release 0.7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Jeff Wisnia</td>
|
|
<td>Provided technical data sheet for the 6532 RIOT chip</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Albert Yarusso (aka Al from AtariAge)</td>
|
|
<td>Provided helpful feedback for the OSX port, and generously
|
|
donated an AtariVox device to help with development</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP">Alex Zaballa</td>
|
|
<td>Maintainer of the GP2X version of Stella starting with the 2.1 release</td>
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="License">19. License and Disclaimer</a></h1>
|
|
<hr>
|
|
|
|
<p>
|
|
<H2>GNU GENERAL PUBLIC LICENSE</h2>
|
|
<P>
|
|
Version 2, June 1991
|
|
|
|
</P>
|
|
|
|
<PRE>
|
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
|
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
|
|
|
Everyone is permitted to copy and distribute verbatim copies
|
|
of this license document, but changing it is not allowed.
|
|
</PRE>
|
|
|
|
|
|
|
|
<H2>Preamble</H2>
|
|
|
|
<P>
|
|
The licenses for most software are designed to take away your
|
|
freedom to share and change it. By contrast, the GNU General Public
|
|
License is intended to guarantee your freedom to share and change free
|
|
software--to make sure the software is free for all its users. This
|
|
General Public License applies to most of the Free Software
|
|
Foundation's software and to any other program whose authors commit to
|
|
using it. (Some other Free Software Foundation software is covered by
|
|
the GNU Library General Public License instead.) You can apply it to
|
|
your programs, too.
|
|
|
|
</P>
|
|
<P>
|
|
When we speak of free software, we are referring to freedom, not
|
|
price. Our General Public Licenses are designed to make sure that you
|
|
have the freedom to distribute copies of free software (and charge for
|
|
this service if you wish), that you receive source code or can get it
|
|
if you want it, that you can change the software or use pieces of it
|
|
in new free programs; and that you know you can do these things.
|
|
|
|
</P>
|
|
<P>
|
|
To protect your rights, we need to make restrictions that forbid
|
|
anyone to deny you these rights or to ask you to surrender the rights.
|
|
These restrictions translate to certain responsibilities for you if you
|
|
distribute copies of the software, or if you modify it.
|
|
|
|
</P>
|
|
<P>
|
|
For example, if you distribute copies of such a program, whether
|
|
gratis or for a fee, you must give the recipients all the rights that
|
|
you have. You must make sure that they, too, receive or can get the
|
|
source code. And you must show them these terms so they know their
|
|
rights.
|
|
|
|
</P>
|
|
<P>
|
|
We protect your rights with two steps: (1) copyright the software, and
|
|
(2) offer you this license which gives you legal permission to copy,
|
|
distribute and/or modify the software.
|
|
|
|
</P>
|
|
<P>
|
|
Also, for each author's protection and ours, we want to make certain
|
|
that everyone understands that there is no warranty for this free
|
|
software. If the software is modified by someone else and passed on, we
|
|
want its recipients to know that what they have is not the original, so
|
|
that any problems introduced by others will not reflect on the original
|
|
authors' reputations.
|
|
|
|
</P>
|
|
<P>
|
|
Finally, any free program is threatened constantly by software
|
|
patents. We wish to avoid the danger that redistributors of a free
|
|
program will individually obtain patent licenses, in effect making the
|
|
program proprietary. To prevent this, we have made it clear that any
|
|
patent must be licensed for everyone's free use or not licensed at all.
|
|
|
|
</P>
|
|
<P>
|
|
The precise terms and conditions for copying, distribution and
|
|
modification follow.
|
|
|
|
</P>
|
|
|
|
|
|
<H2>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</H2>
|
|
|
|
|
|
<P>
|
|
|
|
<STRONG>0.</STRONG>
|
|
This License applies to any program or other work which contains
|
|
a notice placed by the copyright holder saying it may be distributed
|
|
under the terms of this General Public License. The "Program", below,
|
|
refers to any such program or work, and a "work based on the Program"
|
|
means either the Program or any derivative work under copyright law:
|
|
that is to say, a work containing the Program or a portion of it,
|
|
either verbatim or with modifications and/or translated into another
|
|
language. (Hereinafter, translation is included without limitation in
|
|
the term "modification".) Each licensee is addressed as "you".
|
|
<P>
|
|
|
|
Activities other than copying, distribution and modification are not
|
|
covered by this License; they are outside its scope. The act of
|
|
running the Program is not restricted, and the output from the Program
|
|
is covered only if its contents constitute a work based on the
|
|
Program (independent of having been made by running the Program).
|
|
Whether that is true depends on what the Program does.
|
|
|
|
<P>
|
|
|
|
<STRONG>1.</STRONG>
|
|
You may copy and distribute verbatim copies of the Program's
|
|
source code as you receive it, in any medium, provided that you
|
|
conspicuously and appropriately publish on each copy an appropriate
|
|
copyright notice and disclaimer of warranty; keep intact all the
|
|
notices that refer to this License and to the absence of any warranty;
|
|
and give any other recipients of the Program a copy of this License
|
|
along with the Program.
|
|
<P>
|
|
|
|
You may charge a fee for the physical act of transferring a copy, and
|
|
you may at your option offer warranty protection in exchange for a fee.
|
|
<P>
|
|
|
|
<STRONG>2.</STRONG>
|
|
You may modify your copy or copies of the Program or any portion
|
|
of it, thus forming a work based on the Program, and copy and
|
|
distribute such modifications or work under the terms of Section 1
|
|
above, provided that you also meet all of these conditions:
|
|
<P>
|
|
|
|
<UL>
|
|
|
|
<LI><STRONG>a)</STRONG>
|
|
You must cause the modified files to carry prominent notices
|
|
stating that you changed the files and the date of any change.
|
|
|
|
<P>
|
|
<LI><STRONG>b)</STRONG>
|
|
You must cause any work that you distribute or publish, that in
|
|
whole or in part contains or is derived from the Program or any
|
|
part thereof, to be licensed as a whole at no charge to all third
|
|
parties under the terms of this License.
|
|
|
|
<P>
|
|
<LI><STRONG>c)</STRONG>
|
|
If the modified program normally reads commands interactively
|
|
when run, you must cause it, when started running for such
|
|
interactive use in the most ordinary way, to print or display an
|
|
announcement including an appropriate copyright notice and a
|
|
notice that there is no warranty (or else, saying that you provide
|
|
a warranty) and that users may redistribute the program under
|
|
these conditions, and telling the user how to view a copy of this
|
|
License. (Exception: if the Program itself is interactive but
|
|
does not normally print such an announcement, your work based on
|
|
the Program is not required to print an announcement.)
|
|
</UL>
|
|
|
|
These requirements apply to the modified work as a whole. If
|
|
identifiable sections of that work are not derived from the Program,
|
|
and can be reasonably considered independent and separate works in
|
|
themselves, then this License, and its terms, do not apply to those
|
|
sections when you distribute them as separate works. But when you
|
|
distribute the same sections as part of a whole which is a work based
|
|
on the Program, the distribution of the whole must be on the terms of
|
|
this License, whose permissions for other licensees extend to the
|
|
entire whole, and thus to each and every part regardless of who wrote it.
|
|
<P>
|
|
|
|
Thus, it is not the intent of this section to claim rights or contest
|
|
your rights to work written entirely by you; rather, the intent is to
|
|
exercise the right to control the distribution of derivative or
|
|
collective works based on the Program.
|
|
<P>
|
|
|
|
In addition, mere aggregation of another work not based on the Program
|
|
with the Program (or with a work based on the Program) on a volume of
|
|
a storage or distribution medium does not bring the other work under
|
|
the scope of this License.
|
|
|
|
<P>
|
|
|
|
<STRONG>3.</STRONG>
|
|
You may copy and distribute the Program (or a work based on it,
|
|
under Section 2) in object code or executable form under the terms of
|
|
Sections 1 and 2 above provided that you also do one of the following:
|
|
|
|
|
|
<!-- we use this doubled UL to get the sub-sections indented, -->
|
|
<!-- while making the bullets as unobvious as possible. -->
|
|
<UL>
|
|
|
|
<LI><STRONG>a)</STRONG>
|
|
Accompany it with the complete corresponding machine-readable
|
|
source code, which must be distributed under the terms of Sections
|
|
1 and 2 above on a medium customarily used for software interchange; or,
|
|
|
|
<P>
|
|
<LI><STRONG>b)</STRONG>
|
|
Accompany it with a written offer, valid for at least three
|
|
years, to give any third party, for a charge no more than your
|
|
cost of physically performing source distribution, a complete
|
|
machine-readable copy of the corresponding source code, to be
|
|
distributed under the terms of Sections 1 and 2 above on a medium
|
|
customarily used for software interchange; or,
|
|
|
|
<P>
|
|
<LI><STRONG>c)</STRONG>
|
|
Accompany it with the information you received as to the offer
|
|
to distribute corresponding source code. (This alternative is
|
|
allowed only for noncommercial distribution and only if you
|
|
received the program in object code or executable form with such
|
|
an offer, in accord with Subsection b above.)
|
|
</UL>
|
|
|
|
The source code for a work means the preferred form of the work for
|
|
making modifications to it. For an executable work, complete source
|
|
code means all the source code for all modules it contains, plus any
|
|
associated interface definition files, plus the scripts used to
|
|
control compilation and installation of the executable. However, as a
|
|
special exception, the source code distributed need not include
|
|
anything that is normally distributed (in either source or binary
|
|
form) with the major components (compiler, kernel, and so on) of the
|
|
operating system on which the executable runs, unless that component
|
|
itself accompanies the executable.
|
|
<P>
|
|
|
|
If distribution of executable or object code is made by offering
|
|
access to copy from a designated place, then offering equivalent
|
|
access to copy the source code from the same place counts as
|
|
distribution of the source code, even though third parties are not
|
|
compelled to copy the source along with the object code.
|
|
<P>
|
|
|
|
<STRONG>4.</STRONG>
|
|
You may not copy, modify, sublicense, or distribute the Program
|
|
except as expressly provided under this License. Any attempt
|
|
otherwise to copy, modify, sublicense or distribute the Program is
|
|
void, and will automatically terminate your rights under this License.
|
|
However, parties who have received copies, or rights, from you under
|
|
this License will not have their licenses terminated so long as such
|
|
parties remain in full compliance.
|
|
|
|
<P>
|
|
|
|
<STRONG>5.</STRONG>
|
|
You are not required to accept this License, since you have not
|
|
signed it. However, nothing else grants you permission to modify or
|
|
distribute the Program or its derivative works. These actions are
|
|
prohibited by law if you do not accept this License. Therefore, by
|
|
modifying or distributing the Program (or any work based on the
|
|
Program), you indicate your acceptance of this License to do so, and
|
|
all its terms and conditions for copying, distributing or modifying
|
|
the Program or works based on it.
|
|
|
|
<P>
|
|
|
|
<STRONG>6.</STRONG>
|
|
Each time you redistribute the Program (or any work based on the
|
|
Program), the recipient automatically receives a license from the
|
|
original licensor to copy, distribute or modify the Program subject to
|
|
these terms and conditions. You may not impose any further
|
|
restrictions on the recipients' exercise of the rights granted herein.
|
|
You are not responsible for enforcing compliance by third parties to
|
|
this License.
|
|
|
|
<P>
|
|
|
|
<STRONG>7.</STRONG>
|
|
If, as a consequence of a court judgment or allegation of patent
|
|
infringement or for any other reason (not limited to patent issues),
|
|
conditions are imposed on you (whether by court order, agreement or
|
|
otherwise) that contradict the conditions of this License, they do not
|
|
excuse you from the conditions of this License. If you cannot
|
|
distribute so as to satisfy simultaneously your obligations under this
|
|
License and any other pertinent obligations, then as a consequence you
|
|
may not distribute the Program at all. For example, if a patent
|
|
license would not permit royalty-free redistribution of the Program by
|
|
all those who receive copies directly or indirectly through you, then
|
|
the only way you could satisfy both it and this License would be to
|
|
refrain entirely from distribution of the Program.
|
|
<P>
|
|
|
|
If any portion of this section is held invalid or unenforceable under
|
|
any particular circumstance, the balance of the section is intended to
|
|
apply and the section as a whole is intended to apply in other
|
|
circumstances.
|
|
<P>
|
|
|
|
It is not the purpose of this section to induce you to infringe any
|
|
patents or other property right claims or to contest validity of any
|
|
such claims; this section has the sole purpose of protecting the
|
|
integrity of the free software distribution system, which is
|
|
implemented by public license practices. Many people have made
|
|
generous contributions to the wide range of software distributed
|
|
through that system in reliance on consistent application of that
|
|
system; it is up to the author/donor to decide if he or she is willing
|
|
to distribute software through any other system and a licensee cannot
|
|
impose that choice.
|
|
<P>
|
|
|
|
This section is intended to make thoroughly clear what is believed to
|
|
be a consequence of the rest of this License.
|
|
|
|
<P>
|
|
|
|
<STRONG>8.</STRONG>
|
|
If the distribution and/or use of the Program is restricted in
|
|
certain countries either by patents or by copyrighted interfaces, the
|
|
original copyright holder who places the Program under this License
|
|
may add an explicit geographical distribution limitation excluding
|
|
those countries, so that distribution is permitted only in or among
|
|
countries not thus excluded. In such case, this License incorporates
|
|
the limitation as if written in the body of this License.
|
|
|
|
<P>
|
|
|
|
<STRONG>9.</STRONG>
|
|
The Free Software Foundation may publish revised and/or new versions
|
|
of the General Public License from time to time. Such new versions will
|
|
be similar in spirit to the present version, but may differ in detail to
|
|
address new problems or concerns.
|
|
<P>
|
|
|
|
Each version is given a distinguishing version number. If the Program
|
|
specifies a version number of this License which applies to it and "any
|
|
later version", you have the option of following the terms and conditions
|
|
either of that version or of any later version published by the Free
|
|
Software Foundation. If the Program does not specify a version number of
|
|
this License, you may choose any version ever published by the Free Software
|
|
Foundation.
|
|
|
|
<P>
|
|
|
|
|
|
<STRONG>10.</STRONG>
|
|
If you wish to incorporate parts of the Program into other free
|
|
programs whose distribution conditions are different, write to the author
|
|
to ask for permission. For software which is copyrighted by the Free
|
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
|
make exceptions for this. Our decision will be guided by the two goals
|
|
of preserving the free status of all derivatives of our free software and
|
|
of promoting the sharing and reuse of software generally.
|
|
|
|
|
|
|
|
<P><STRONG>NO WARRANTY</STRONG></P>
|
|
|
|
<P>
|
|
|
|
<STRONG>11.</STRONG>
|
|
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
|
REPAIR OR CORRECTION.
|
|
|
|
<P>
|
|
|
|
<STRONG>12.</STRONG>
|
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
|
POSSIBILITY OF SUCH DAMAGES.
|
|
|
|
</body>
|
|
</html>
|