mirror of https://github.com/stella-emu/stella.git
5970 lines
225 KiB
HTML
5970 lines
225 KiB
HTML
<html>
|
|
<head>
|
|
<title>Stella - A multi-platform Atari 2600 VCS emulator</title>
|
|
<meta name="AppleTitle" content="docs">
|
|
<style>
|
|
table, th, td {
|
|
border: 1px solid;
|
|
padding: 4px;
|
|
padding-left: 8px;
|
|
padding-right: 8px;
|
|
border-collapse: collapse;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body bgcolor="#FFFFFF">
|
|
|
|
<center>
|
|
<b><font size="7">Stella</font></b>
|
|
<br><br>
|
|
<img src="graphics/stella_icon.png">
|
|
<h2><b>A multi-platform Atari 2600 VCS emulator</b></h2>
|
|
|
|
<h4><b>Release 7.0</b></h4>
|
|
<br>
|
|
|
|
<h2><b>User's Guide</b></h2>
|
|
</center>
|
|
<br>
|
|
|
|
<h2>Contents</h2>
|
|
<ul>
|
|
<li><a href="#History">A Brief History of the Atari 2600</a></li>
|
|
<li><a href="#Introduction">Introduction</a><br>
|
|
<ul><li><a href="#Features">Features</a></li></ul>
|
|
</li>
|
|
<li><a href="#QuickStart">Getting Started</a><br>
|
|
<ul>
|
|
<li><a href="#Requirements">Requirements</a></li>
|
|
<li><a href="#Installation">Installation</a></li>
|
|
<li><a href="#Games">Locating Game Images (aka ROMs)</a></li>
|
|
<li><a href="#Playing">Playing a Game</a></li>
|
|
<li><a href="#Keyboard">Keyboard Layout</a></li>
|
|
<li><a href="#Hotkeys">Hotkeys</a></li>
|
|
<li><a href="#ControlMap">Controller Map</a></li>
|
|
<li><a href="#TimeMachine">Stella's 'Time Machine'</a></li>
|
|
<li><a href="#HighScores">High Scores Saving</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#Advanced">Advanced Configuration</a><br>
|
|
<ul>
|
|
<li><a href="#CommandLine">Using the Command Line</a></li>
|
|
<li><a href="#Options">Changing Options</a></li>
|
|
<li><a href="#Remapping">Event Remapping/Input Devices</a></li>
|
|
<li><a href="#ROMInfo">ROM Launcher</a></li>
|
|
<ul>
|
|
<li><a href="#ROMInfoViewer">ROM Launcher Viewer</a></li>
|
|
<li><a href="#FavoriteROMs">Favorite ROMs and Directories</a></li>
|
|
<li><a href="#ROMLauncherContextMenu">ROM Launcher Context Menu</a></li>
|
|
</ul>
|
|
<li><a href="#ROMAudit">ROM Audit Mode</a></li>
|
|
<li><a href="#Adaptor">Stelladaptor/2600-daptor 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="#UserData">User Data</a></li>
|
|
<li><a href="#Cheats">Cheatcode Manager</a></li>
|
|
<li><a href="#Logs">Viewing the System Log</a></li>
|
|
<li><a href="#Properties">Game Properties</a></li>
|
|
<li><a href="#Palette">Palette Support</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#Acknowledgments">Acknowledgments</a></li>
|
|
<li><a href="#License">License and Disclaimer</a></li>
|
|
</ul>
|
|
|
|
<br><br><br>
|
|
|
|
<center><b>February 1999 - June 2022</b></center>
|
|
<center><b>The Stella Team</b></center>
|
|
<center><b><a href="https://stella-emu.github.io">Stella Homepage</a></b></center>
|
|
|
|
<br>
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="History">A Brief History of the Atari 2600</a></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">Introduction</a></h1>
|
|
<hr>
|
|
|
|
<p>
|
|
Stella is a freely distributed multi-platform Atari 2600 VCS emulator; originally
|
|
developed for Linux by Bradford W. Mott, it is now maintained by Stephen Anthony.
|
|
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>
|
|
</h1>
|
|
<h2><b><a name="Features">Features</a></b></h2>
|
|
|
|
<ul>
|
|
<li>High speed emulation using optimized C++20 code</li>
|
|
<li>Supports high quality TIA emulation using the cycle-exact TIA core from
|
|
<a href="https://github.com/6502ts/6502.ts">6502.ts</a> by
|
|
Christian Speckner</li>
|
|
<li>Supports high quality sound emulation using code derived from Chris Brenner's
|
|
Atari 2600 FPGA project, including cycle-exact audio, analog interference
|
|
from mixing of audio channels, as well as stereo sound support; dynamic
|
|
sound resampling is also included</li>
|
|
<li>Emulates the Atari 2600 Joystick, Paddle, Driving, CBS Booster Grip,
|
|
Sega Genesis, <a href="https://github.com/ascrnet/Joy2Bplus">Joy 2B+</a>,
|
|
QuadTari controllers using your computer's keyboard, joysticks or mouse</li>
|
|
<li>Emulates CX22/CX80 style Trak-Balls, Amiga/Atari mouse, MindLink controller
|
|
and the Light Gun using your computer's mouse</li>
|
|
<li>Emulates the Atari 2600 Keyboard controllers using your computer's keyboard</li>
|
|
<li>Emulates <a href="https://en.wikipedia.org/wiki/CompuMate">Spectravideo CompuMate</a> system using your computer's keyboard,
|
|
including mapping of CompuMate 'Backspace', 'Space' and 'Enter' functionality to
|
|
to the actual keys on your keyboard</li>
|
|
<li>Emulates the Kid Vid Voice Module</li>
|
|
<li>Supports autodetection for most common controller types</li>
|
|
<li>Support for real Atari 2600 controllers using the
|
|
<a href="http://www.grandideastudio.com/stelladaptor-2600">Stelladaptor</a> and
|
|
<a href="http://2600-daptor.com">2600-daptor/2600-daptor II</a></li>
|
|
<li>Support for the speech portion of a real
|
|
<a href="https://atariage.com/store/index.php?l=product_detail&p=1045">
|
|
AtariVox</a> device connected to your PC using a USB adaptor</li>
|
|
<li>Supports EEPROM emulation for <a href="https://atariage.com/store/index.php?l=product_detail&p=1045">
|
|
AtariVox</a> and <a href="https://www.vectrex.biz/MemCard.htm">SaveKey</a> controllers,
|
|
as well as FLASH support in various cartridge schemes</li>
|
|
<li>Supports all known bankswitching schemes (let us know if there's one we missed)</li>
|
|
<li>Supports DPC+/CDF(J)(+) bankswitching schemes from the <a href="https://harmony.atariage.com">Harmony Cart</a>,
|
|
including <a href="https://thumbulator.blogspot.ca">partial emulation of the ARM processor</a></li>
|
|
<li>Supports cartridge autodetection for almost all bankswitching schemes</li>
|
|
<li>Supports using ROM filename extensions to force specific bankswitching schemes</li>
|
|
<li>Supports using ROM filename to force specific display formats</li>
|
|
<li>Supports Supercharger single-load and multi-load games</li>
|
|
<li>Supports the usual raw A26/BIN/ROM formats, also when stored in ZIP files</li>
|
|
<li>Supports property file for setting the properties associated with games</li>
|
|
<li>Supports the NTSC, 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 most "undocumented features" of the TIA graphics chip used by
|
|
some games</li>
|
|
<li>TIA emulation supports full collision checking, with ability to disable
|
|
TIA sprites and collisions for each object separately</li>
|
|
<li>Full system state save/load functionality</li>
|
|
<li>Automatic save state creation ('Time Machine') which allows moving back and forth in the recorded timeline</li>
|
|
<li>Tracking of user favorites and popular or recently played ROMs.</li>
|
|
<li>High scores saving (internal or via PlusROM High Score Club)</li>
|
|
<li>Cross-platform UI including a built-in ROM launcher frontend</li>
|
|
<li>Built-in extensive debugger, including static analysis with the Distella disassembler
|
|
and dynamic analysis at runtime by tracking code/graphics/data sections, and
|
|
generation of DASM-compatible disassembly files</li>
|
|
<li>Emulation of CRT TV systems using <a href="https://slack.net/~ant/libs/ntsc.html">
|
|
Blargg filtering</a>, including presets for several common TV outputs
|
|
(Composite, S-Video, RGB, etc.), and ability to fully customize
|
|
many attributes (contrast, brightness, saturation, gamma, etc.).</li>
|
|
<li>Bezel support</li>
|
|
<li>Built-in ROM database with information partially compiled by
|
|
<a href="http://www.atarimania.com/rom_collection_archive_atari_2600_roms.html">
|
|
RomHunter</a></li>
|
|
</ul>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="QuickStart">Getting Started</a></h1>
|
|
<hr>
|
|
|
|
<h2><b><a name="Requirements">Requirements</a></b></h2>
|
|
|
|
<blockquote>
|
|
<p>The following sections outline the basic system requirements for running
|
|
Stella under various operating systems.</p>
|
|
|
|
<p>
|
|
<h3><b><u>General</u> (required for all versions of Stella)</b></h3>
|
|
<ul>
|
|
<li>SDL version 2.0.5 or greater, latest version highly recommended</li>
|
|
<li>15/16 bit color minimum; 24/32 bit color graphics card highly recommended</li>
|
|
<li>Enough RAM for the OS + 256MB RAM for the emulation; 512MB+ highly recommended</li>
|
|
<li>Joysticks or gamepads are highly recommended</li>
|
|
<li>Mouse or <a href="http://www.grandideastudio.com/stelladaptor-2600">Stelladaptor</a>/<a href="http://2600-daptor.com">2600-daptor</a>
|
|
with real paddles required for paddle emulation</li>
|
|
<li>Some ROM images (see <a href="https://www.atariage.com">AtariAge</a> for more information)</li>
|
|
</ul>
|
|
|
|
<p>
|
|
<h3><b><u>Linux/UNIX</u></b></h3>
|
|
<p>The Linux version of Stella is designed to work on a Linux Workstation with
|
|
the following:</p>
|
|
<ul>
|
|
<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 g++ v/11 or Clang v/10 (with C++20 support) and the make utility are required for compiling the Stella source code</li>
|
|
</ul>
|
|
|
|
<p>
|
|
<h3><b><u>Macintosh</u></b></h3>
|
|
|
|
<p>The Mac version of Stella is designed to work on an Apple Macintosh with
|
|
the following:</p>
|
|
<ul>
|
|
<li>macOS 10.7 or above</li>
|
|
<li>64-bit Intel processor</li>
|
|
<li>Xcode 8.0 is required to compile the Stella source code</li>
|
|
</ul>
|
|
|
|
<p>
|
|
<h3><b><u>Windows</u></b></h3>
|
|
|
|
<p>The Windows version of Stella is designed to work on Windows 7/8/10/11
|
|
with the following:</p>
|
|
|
|
<ul>
|
|
<li>Visual C++ 2019 Community is required to compile the Stella source code</li>
|
|
</ul>
|
|
|
|
<p>
|
|
<h3><b><u>Other</u></b></h3>
|
|
|
|
<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 and endian clean in Linux/Unix, macOS
|
|
and Windows. The Stella Team is interested in hearing about any problems you may
|
|
encounter with diverse operating systems and CPU types.</p>
|
|
</blockquote></br>
|
|
|
|
<h2><b><a name="Installation">Installation</a></b></h2>
|
|
|
|
<blockquote>
|
|
<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>
|
|
<h3><b><u>Linux/UNIX</u></b></h3>
|
|
<ul>
|
|
<li><b>Binary DEB</b> (stella-<i>release</i>-1_arch.deb)
|
|
<ul>
|
|
<li>Install the binary DEB with the following command:
|
|
<pre> dpkg -i stella-<i>release</i>-1_arch.deb</pre></li>
|
|
</ul>
|
|
</li>
|
|
<li><b>Binary RPM</b> (stella-<i>release</i>-1.arch.rpm)
|
|
<ul>
|
|
<li>Install the binary RPM with the following command:
|
|
<pre> rpm -Uvh stella-<i>release</i>-1.arch.rpm</pre></li>
|
|
</ul>
|
|
</li>
|
|
<li><b>Building and installing from source code</b>
|
|
<ul>
|
|
<li>See the developers build instructions at the
|
|
<a href="https://stella-emu.github.io/development.html">Stella Development Page</a>.
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>
|
|
<h3><b><u>Macintosh</u></b></h3>
|
|
<ul>
|
|
<li><b>Binary DMG file</b> (Stella-<i>release</i>-macos.dmg)
|
|
<ul>
|
|
<li>Double-click the disk image, open the 'Stella' folder, then copy the
|
|
<b>Stella.app</b> package to your 'Applications' folder.</li>
|
|
</ul>
|
|
</li>
|
|
<br/>
|
|
<li><b>Building and installing from source code</b>
|
|
<ul>
|
|
<li>See the developers build instructions at the
|
|
<a href="https://stella-emu.github.io/development.html">Stella Development Page</a>.
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>
|
|
<h3><b><u>Windows</u></b></h3>
|
|
<ul>
|
|
<li><b>Binary EXE installer</b> (stella-<i>release</i>-<i>arch</i>.exe)
|
|
<ol>
|
|
<li>Double-click on the installer and follow the onscreen instructions</li>
|
|
</ol>
|
|
</li>
|
|
<br/>
|
|
<li><b>Binary ZIP file</b> (stella-<i>release</i>-windows.zip)
|
|
<ol>
|
|
<li>Unzip the binary ZIP file using <b>Winzip</b> or <b>Total Commander</b></li>
|
|
<li>Copy the contents of either 32-bit or 64-bit directory somewhere on your system</li>
|
|
</ol>
|
|
</li>
|
|
<br/>
|
|
<li><b>Building and installing from source code</b>
|
|
<ul>
|
|
<li>See the developers build instructions at the
|
|
<a href="https://stella-emu.github.io/development.html">Stella Development Page</a>.
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
Note: Stella does <b>not</b> support paths and names with special chars (e.g. é, œ, š, ...) for Windows.
|
|
</blockquote></br>
|
|
|
|
<h2><b><a name="Games">Locating Game Images (aka ROMs)</a></b></h2>
|
|
|
|
<blockquote>
|
|
<p>
|
|
<h3><b><u>Cartridges</u></b></h3>
|
|
|
|
<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>
|
|
|
|
<p><ul>
|
|
<li>Search around the internet and find ROM images to download (websites such
|
|
as <a href="https://atariage.com">AtariAge</a> and
|
|
<a href="http://www.atarimania.com/rom_collection_archive_atari_2600_roms.html">
|
|
AtariMania/RomHunter</a> may be useful). Many homebrewers make their ROMs available too.</li>
|
|
|
|
<li>You can purchase the Atari 2600 Action Packs by Activision and use
|
|
their ROM images</li>
|
|
|
|
<li>If you're handy with a soldering iron then you can design and build a
|
|
device that plugs into a PC and read the data from the cartridge</li>
|
|
</ul>
|
|
|
|
<p><b>WARNING:</b> It may be illegal to use ROM images of games that you do not
|
|
actually own since these games may still be copyrighted.</p>
|
|
|
|
<p>
|
|
<h3><b><u>Supercharger Cassettes</u></b></h3>
|
|
|
|
<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>
|
|
|
|
<p>
|
|
<h3><b><u>Supported File formats</u></b></h3>
|
|
|
|
<p>Stella supports ROMs ending with extensions .a26, .bin, .rom, and .zip.
|
|
For the ZIP archive format, Stella will look into the archive and if it
|
|
contains only one ROM image file, Stella will automatically load it. If an
|
|
archive contains many such files, Stella will display a <i>virtual
|
|
filesystem</i> with the contents of the archive. This can be then browsed
|
|
like a normal directory.</p>
|
|
|
|
<p>Other extensions are also possible, namely to force a specific bankswitch scheme.
|
|
Normally, the bankswitching scheme for a ROM is determined automatically,
|
|
or manually by setting a <a href="#Properties">ROM property</a>, and you never
|
|
have to do anything yourself. However, it is also possible to force the
|
|
bankswitch type to use by adding a special filename extension. These extensions
|
|
are listed in the <a href="#Properties">ROM properties</a> section under
|
|
<a href="#PropertiesCartType">Cart.Type -> File Extension</a>.</p>
|
|
|
|
<p><b>Note:</b> These extensions are the same as those used by the Harmony Cart
|
|
and Unocart and are not case-sensitive, so you can name your files and have them
|
|
work across all applications. <u>Again, to be clear, this is only necessary when
|
|
you want to override the default bankswitching scheme for a ROM.</u> <b>This will
|
|
not normally be necessary.</b></p>
|
|
</blockquote></br>
|
|
|
|
<h2><b><a name="Playing">Playing a Game</a></b></h2>
|
|
|
|
<blockquote>
|
|
<p>Once Stella is installed and you have some ROM images you're almost ready to
|
|
start playing.</p>
|
|
|
|
<p>
|
|
<h3><b><u>Integrated GUI</u></b></h3>
|
|
|
|
<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 may have to navigate to your ROMs.
|
|
The path of the first ROM you play automatically defines the default ROM path. You
|
|
can change it later in the <b><a href="#ROMInfo">ROM Launcher</a></b> dialog.</p>
|
|
|
|
<p>At this point, you may want to set the locations for snapshot images. This
|
|
is described in more detail in <b><a href="#ROMInfo">ROM Launcher</a></b>.
|
|
These settings are optional, and can be left at the defaults if you won't be
|
|
using snapshots in the ROM launcher.</p>
|
|
|
|
<p>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 or Space key(s),
|
|
or button 0 on your joystick. If a game uses a more complex controller, see
|
|
<b>Getting Started - <a href="#Keyboard">Keyboard Layout</a></b>
|
|
for more information. To exit a game and re-enter the ROM launcher, press the 'Escape'
|
|
key.</p>
|
|
|
|
<p>Using the 'Search' textbox in the upper row of the ROM launcher, the
|
|
listing can be narrowed down, showing only the ROMs that match the pattern
|
|
you enter.</p>
|
|
|
|
<p>While the file listing is in focus, you can type some characters, and the listing
|
|
will 'jump' to the file that matches what you typed. This is case-insensitive. Hold
|
|
down the Shift key on the first character to select directories instead. The delay
|
|
between successive keypresses being treated as part of one word is controlled by the
|
|
'listdelay' option; see <b>User Interface Settings</b> to change this setting.</p>
|
|
|
|
<p>
|
|
<h3><a name ="CommandMenu"><b><u>Command Menu</u></b></a></h3>
|
|
|
|
<p>While playing a game, normally one would use the keyboard shortcuts for controlling the
|
|
'virtual' switches in Stella (e.g. the commands associated with the
|
|
function keys as described in
|
|
<b>Playing a Game - <a href="#Hotkeys">Hotkeys</a></b>).
|
|
However, another alternative is available. Pressing the '\' key (default) 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 and display the current state. You may find this useful if
|
|
you cannot remember all the function key events, or you wish to use Stella
|
|
without a keyboard (e.g. in a standalone gaming system).</p>
|
|
|
|
<p>Note: Clicking the `?` at the top right opens this document at the related
|
|
paragraph. This works for almost all dialogs. There is also a hotkey defined
|
|
for help (see <b><a href="#Hotkeys">Hotkeys</a></b>).</p>
|
|
</blockquote></br>
|
|
|
|
<h2><b><a name="Keyboard">Keyboard Layout</a></b></h2>
|
|
<blockquote>
|
|
|
|
<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>Advanced Configuration - <a href="#Remapping">Event Remapping</a></b>).
|
|
The tables below show the default settings.<br/><br/>
|
|
|
|
Note: All key names are based on the US QWERTY <a href="https://en.wikipedia.org/wiki/Keyboard_layout">
|
|
keyboard layout</a>. If you use a different layout some keys may differ. You can use the
|
|
following layout image as reference where to find the US keys on your keyboard.
|
|
</p>
|
|
<p><img src="graphics/qwertz.png"></p>
|
|
</blockquote></br>
|
|
|
|
<h2><b><a name="Hotkeys">Hotkeys</a></b></h2>
|
|
<blockquote>
|
|
<p><b>Console Controls (can be remapped)</b></p>
|
|
|
|
<table BORDER=2 cellpadding=4>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key (Standard)</th>
|
|
<th>Key (macOS)</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Exit Stella</td>
|
|
<td>Control + Q</td>
|
|
<td>Cmd + Q</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Exit game, enter <b><a href="#ROMInfo">ROM Launcher</a></b></td>
|
|
<td>Escape</td>
|
|
<td>Escape</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Enter/exit <a href="#Options"><b>Options Menu</b></a></td>
|
|
<td>Tab/Escape</td>
|
|
<td>Tab/Escape</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Enter/exit <a href="#CommandMenu"><b>Command Menu</b></a> </td>
|
|
<td>Backslash (\)/Escape</td>
|
|
<td>Backslash (\)/Escape</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Enter/exit <a href="debugger.html"><b>Debugger</b></a></td>
|
|
<td>Backquote (`)/Escape</td>
|
|
<td>Backquote (`)/Escape</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>Toggle Black/White TV</td>
|
|
<td>-</td>
|
|
<td>-</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle 7800 pause ¹</td>
|
|
<td>Alt + F3</td>
|
|
<td>Cmd + F3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Left Player Difficulty A</td>
|
|
<td>F5</td>
|
|
<td>F5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Left Player Difficulty B</td>
|
|
<td>F6</td>
|
|
<td>F6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Right Player Difficulty A</td>
|
|
<td>F7</td>
|
|
<td>F7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Right Player Difficulty B</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>Save all Time Machine states</td>
|
|
<td>Alt + F9</td>
|
|
<td>Cmd + F9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Change to previous state slot</td>
|
|
<td>Shift + F10</td>
|
|
<td>Shift + F10</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Change to next state slot</td>
|
|
<td>F10</td>
|
|
<td>F10</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Automatically change state slot</td>
|
|
<td>Alt + F10</td>
|
|
<td>Cmd + F10</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Load state from current slot</td>
|
|
<td>F11</td>
|
|
<td>F11</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Load all states into Time Machine</td>
|
|
<td>Alt + F11</td>
|
|
<td>Cmd + 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>Shift-Cmd + P</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td colspan="3"><center><font size="-1">
|
|
¹ only if "Console" is set to "Atari 7800" in <b><a href="#Debugger">Developer Settings</a></b>.
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</br>
|
|
<p><b>Joystick, Booster Grip (¹), Sega Genesis (²) & Joy 2B+ (³) Controller (can be remapped)</b></p>
|
|
|
|
<table style="border: hidden">
|
|
<tr>
|
|
<td style="padding: 0px">
|
|
<table>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Left Controller Key</th>
|
|
<th>Right Controller Key</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Up</td>
|
|
<td>Up arrow, Keypad 8</td>
|
|
<td>Y</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Down</td>
|
|
<td>Down arrow, Keypad 2</td>
|
|
<td>H</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Left</td>
|
|
<td>Left arrow, Keypad 4</td>
|
|
<td>G</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Right</td>
|
|
<td>Right arrow, Keypad 6</td>
|
|
<td>J</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Fire, Button 'B'</td>
|
|
<td>Left Control, Space, Keypad 5</td>
|
|
<td>F</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Top Booster Button ¹, Button 'C' ² ³</td>
|
|
<td>Right Shift, 4, Keypad 9</td>
|
|
<td>6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Handle Grip Trigger ¹, Button '3' ³</td>
|
|
<td>Right Control, 5, Keypad 3</td>
|
|
<td>7</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</br>
|
|
<p><b>Paddle Controller (digital emulation) (can be remapped)</b></p>
|
|
|
|
<table style="border: hidden">
|
|
<tr>
|
|
<td style="padding: 0px">
|
|
<table>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Left Paddles Key</th>
|
|
<th>Right Paddles Key</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle A Turn Left</td>
|
|
<td>Left arrow</td>
|
|
<td>G</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle A Turn Right</td>
|
|
<td>Right arrow</td>
|
|
<td>J</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle A Fire</td>
|
|
<td>Left Control, Space, Keypad 5</td>
|
|
<td>F</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle B Turn Left</td>
|
|
<td>Up arrow</td>
|
|
<td>Y</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle B Turn Right</td>
|
|
<td>Down arrow</td>
|
|
<td>H</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Paddle B Fire</td>
|
|
<td>Right Control, 4</td>
|
|
<td>6</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</br>
|
|
<p><b>Driving Controller (can be remapped)</b></p>
|
|
|
|
<table style="border: hidden">
|
|
<tr>
|
|
<td style="padding: 0px">
|
|
<table>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Left Driving Key</th>
|
|
<th>Right Driving Key</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Turn Left</td>
|
|
<td>Left arrow, Keypad 4</td>
|
|
<td>G</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Turn Right</td>
|
|
<td>Right arrow, Keypad 6</td>
|
|
<td>J</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Fire Button</td>
|
|
<td>Left Control, Space, Keypad 5</td>
|
|
<td>F</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</br>
|
|
<p><b>Trackball & Light Gun Controller (uses mouse, left port only)</b></p>
|
|
|
|
<table>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Left Trackball Key</th>
|
|
</tr>
|
|
<tr>
|
|
<td>Fire</td>
|
|
<td>Same as Left Joystick 'Fire'</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</br>
|
|
<p><b>Keyboard Controller (can be remapped)</b></p>
|
|
|
|
<table style="border: hidden">
|
|
<tr>
|
|
<td style="padding: 0px">
|
|
<table>
|
|
<tr>
|
|
<th>Pad Button</th>
|
|
<th>Left Keyboard Key</th>
|
|
<th>Right Keyboard Key</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>1</td>
|
|
<td>1</td>
|
|
<td>8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>2</td>
|
|
<td>2</td>
|
|
<td>9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>3</td>
|
|
<td>3</td>
|
|
<td>0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>4</td>
|
|
<td>Q</td>
|
|
<td>I</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>5</td>
|
|
<td>W</td>
|
|
<td>O</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>6</td>
|
|
<td>E</td>
|
|
<td>P</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>7</td>
|
|
<td>A</td>
|
|
<td>K</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>8</td>
|
|
<td>S</td>
|
|
<td>L</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>9</td>
|
|
<td>D</td>
|
|
<td>;</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>.</td>
|
|
<td>Z</td>
|
|
<td>,</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>0</td>
|
|
<td>X</td>
|
|
<td>.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>#</td>
|
|
<td>C</td>
|
|
<td>/</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</br>
|
|
<p><b>Kid Vid Voice Module (can be remapped via Keyboard Controller and Console Controls)</b></p>
|
|
|
|
<table BORDER=2>
|
|
<tr><th>Function</th> <th>Key</th> <th>Difficulty Switches ¹</th></tr>
|
|
<tr>
|
|
<td>Start game #1</td>
|
|
<td>8 (Right Pad Button '1')</td>
|
|
<td>F6 (Left = A), F8 (Right = B)</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Start game #2</td>
|
|
<td>9 (Right Pad Button '2')</td>
|
|
<td>F5 (Left = B), F8 (Right = A)</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Start game #3</td>
|
|
<td>0 (Right Pad Button '3')</td>
|
|
<td>F6 (Left = B), F7 (Right = B)</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Skip current song (except initial songs of</br>
|
|
Berenstain Bears and Harmony Smurf) ²</td>
|
|
<td>P (Right Pad Button '6'),</br>
|
|
F1 ('Select Game')</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="3">¹ Press F1 ('Select Game') to start the selected game.
|
|
² F4 ('Black/White TV') skip all allowed songs.</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</br>
|
|
<p><b>CompuMate Controller (cannot be remapped)</b></p>
|
|
|
|
<table BORDER=2>
|
|
<tr><th>CompuMate</th> <th>Key</th></tr>
|
|
<tr><td>0 - 9 </td><td>0 - 9 </td></tr>
|
|
<tr><td>A - Z </td><td>A - Z </td></tr>
|
|
<tr><td>Comma </td><td>Comma </td></tr>
|
|
<tr><td>Period </td><td>Period </td></tr>
|
|
<tr><td>Func </td><td>Control (left or right) </td></tr>
|
|
<tr><td>Shift </td><td>Shift (left or right) </td></tr>
|
|
<tr><td>Enter </td><td>Return/Enter </td></tr>
|
|
<tr><td>Space </td><td>Space </td></tr>
|
|
<tr><td>Func-Space </td><td>Backspace </td></tr>
|
|
<tr><td>+ </td><td>+ or Shift + 1 </td></tr>
|
|
<tr><td>- </td><td>- or Shift + 2</td></tr>
|
|
<tr><td>* </td><td>Shift + 3 </td></tr>
|
|
<tr><td>/ </td><td>/ or Shift + 4 </td></tr>
|
|
<tr><td>= </td><td>= or Shift + 5 </td></tr>
|
|
<tr><td>? </td><td>? (Shift + /) or Shift + 6 </td></tr>
|
|
<tr><td>$ </td><td>Shift + 7 </td></tr>
|
|
<tr><td>[ </td><td>[ or Shift + 8 </td></tr>
|
|
<tr><td>] </td><td>] or Shift + 9 </td></tr>
|
|
<tr><td>" </td><td>" (Shift + ') or Shift + 0 </td></tr>
|
|
</table>
|
|
|
|
</br>
|
|
<p><b>Audio & Video Keys (can be remapped)</b></p>
|
|
<table BORDER=2 cellpadding=4>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key (Standard)</th>
|
|
<th>Key (macOS)</th>
|
|
</tr>
|
|
<tr>
|
|
<td>Toggle sound</td>
|
|
<td>Control + ]</td>
|
|
<td>Control + ]</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Decrease</i> volume</td>
|
|
<td>Alt + [</td>
|
|
<td>Cmd + [</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Increase</i> volume</td>
|
|
<td>Alt + ]</td>
|
|
<td>Cmd + ]</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Switch to next <i>larger</i> zoom level in windowed mode,
|
|
</br>toggle stretching in fullscreen mode</td>
|
|
<td>Alt + =</td>
|
|
<td>Cmd + =</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Switch to next <i>smaller</i> zoom level in windowed mode,
|
|
</br>toggle stretching in fullscreen mode</td>
|
|
<td>Alt + -</td>
|
|
<td>Cmd + -</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Toggle windowed/fullscreen mode</td>
|
|
<td>Alt + Return</td>
|
|
<td>Cmd + Return</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Toggle adapting display refresh rate to game frame rate
|
|
</br>Note: Not available for macOS, also some renderers may not support this</td>
|
|
<td>Alt + R</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Decrease</i> overscan in fullscreen mode</td>
|
|
<td>Shift + PageDown</td>
|
|
<td>Shift-Fn + Down arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> overscan in fullscreen mode</td>
|
|
<td>Shift + PageUp</td>
|
|
<td>Shift-Fn + Up arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move display <i>down</i> (uses "Display.VCenter")</td>
|
|
<td>Alt + PageDown</td>
|
|
<td>Cmd-Fn + Down arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move display <i>up</i> (uses "Display.VCenter")</td>
|
|
<td>Alt + PageUp</td>
|
|
<td>Cmd-Fn + Up arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Toggle aspect ratio correct scaling</td>
|
|
<td>Shift-Control + C</td>
|
|
<td>Shift-Control + C</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Decrease</i> vertical display size</td>
|
|
<td>Shift-Alt + PageUp</td>
|
|
<td>Shift-Cmd-Fn + Up arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> vertical display size</td>
|
|
<td>Shift-Alt + PageDown</td>
|
|
<td>Shift-Cmd-Fn + Down arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Switch to <i>previous</i> display format (NTSC/PAL/SECAM etc.)</td>
|
|
<td>Shift-Control + F</td>
|
|
<td>Shift-Control + F</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Switch to <i>next</i> display format (NTSC/PAL/SECAM etc.)</td>
|
|
<td>Control + F</td>
|
|
<td>Control + F</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Toggle display interpolation (not available for Software renderer)</td>
|
|
<td>Control + I</td>
|
|
<td>Control + I</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Toggle bezel display</td>
|
|
<td>Control + B</td>
|
|
<td>Control + B</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="3"><center><font size="-1">
|
|
These settings can also be changed using <a href="#GlobalKeys"><b>Global Keys</a></font></center>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</br>
|
|
<p><b>Palettes Keys (can be remapped)</b></p>
|
|
<table BORDER=2 cellpadding=4>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key (Standard)</th>
|
|
<th>Key (macOS)</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Select <i>previous</i> palette (Standard/z26/User/Custom)</td>
|
|
<td>Shift-Control + P</td>
|
|
<td>Shift-Control + P</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Select <i>next</i> palette (Standard/z26/User/Custom)</td>
|
|
<td>Control + P</td>
|
|
<td>Control + P</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Select <i>previous</i> palette attribute</td>
|
|
<td>Shift-Alt + 9</td>
|
|
<td>Shift-Cmd + 9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Select <i>next</i> palette attribute</td>
|
|
<td>Alt + 9</td>
|
|
<td>Cmd + 9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Decrease</i> selected palette attribute</td>
|
|
<td>Shift-Alt + 0</td>
|
|
<td>Shift-Cmd + 0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Increase</i> selected palette attribute</td>
|
|
<td>Alt + 0</td>
|
|
<td>Cmd + 0</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="3"><center><font size="-1">
|
|
These settings can also be changed using <a href="#GlobalKeys"><b>Global Keys</a></font></center>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</br>
|
|
<p><b>TV Effects Keys (can be remapped)</b></p>
|
|
|
|
<table BORDER=2 cellpadding=4>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key (Standard)</th>
|
|
<th>Key (macOS)</th>
|
|
</tr>
|
|
<tr>
|
|
<td>Select <i>previous</i> TV effects preset</td>
|
|
<td>Shift-Alt + 1</td>
|
|
<td>Shift-Cmd + 1</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select <i>next</i> TV effects preset</td>
|
|
<td>Alt + 1</td>
|
|
<td>Cmd + 1</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select <i>previous</i> 'Custom' mode attribute (*)</td>
|
|
<td>Shift-Alt + 2</td>
|
|
<td>Shift-Cmd + 2</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select <i>next</i> 'Custom' mode attribute (*)</td>
|
|
<td>Alt + 2</td>
|
|
<td>Cmd + 2</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Decrease</i> 'Custom' selected attribute value (*)</td>
|
|
<td>Shift-Alt + 3</td>
|
|
<td>Shift-Cmd + 3</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> 'Custom' selected attribute value (*)</td>
|
|
<td>Alt + 3</td>
|
|
<td>Cmd + 3</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select <i>previous</i> 'phosphor' enabling mode</td>
|
|
<td>-</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select <i>next</i> 'phosphor' enabling mode</td>
|
|
<td>Ctrl-Alt + P</td>
|
|
<td>Ctrl-Cmd + P</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Toggle 'phosphor' mode</td>
|
|
<td>Alt + P</td>
|
|
<td>Cmd + P</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Decrease</i> 'phosphor' blend</td>
|
|
<td>Shift-Alt + 4</td>
|
|
<td>Shift-Cmd + 4</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> 'phosphor' blend</td>
|
|
<td>Alt + 4</td>
|
|
<td>Cmd + 4</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Decrease</i> scanlines intensity</td>
|
|
<td>Shift-Alt + 5</td>
|
|
<td>Shift-Cmd + 5</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> scanlines intensity</td>
|
|
<td>Alt + 5</td>
|
|
<td>Cmd + 5</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Switch to <i>previous</i> scanlines mask</td>
|
|
<td>Shift-Alt + 6</td>
|
|
<td>Shift-Cmd + 6</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Switch to <i>next</i> scanlines mask</td>
|
|
<td>Alt + 6</td>
|
|
<td>Cmd + 6</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="3"><center><font size="-1">
|
|
These settings can also be changed using <a href="#GlobalKeys"><b>Global Keys</a></font></center>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="3"><center><font size="-1">
|
|
Items marked as (*) will also switch to 'Custom' TV effects mode</font></center></td>
|
|
</tr>
|
|
</table>
|
|
|
|
</br>
|
|
<p><b>Input Devices & Ports Keys (can be remapped)</b></p>
|
|
|
|
<table BORDER=2 cellpadding=4>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key (Standard)</th>
|
|
<th>Key (macOS)</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Decrease</i> analog joystick dead zone for digital controllers</td>
|
|
<td>Shift-Control + F1</td>
|
|
<td>Shift-Control + F1</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> analog joystick dead zone for digital controllers</td>
|
|
<td>Control + F1</td>
|
|
<td>Control + F1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Decrease</i> analog joystick dead zone for analog controllers</td>
|
|
<td>Shift-Control-Alt + F1</td>
|
|
<td>Shift-Control-Cmd + F1</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> analog joystick dead zone for analog controllers</td>
|
|
<td>Control-Alt + F1</td>
|
|
<td>Control-Cmd + F1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Decrease</i> analog paddle sensitivity</td>
|
|
<td>Shift-Control + F2</td>
|
|
<td>Shift-Control + F2</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> analog paddle sensitivity</td>
|
|
<td>Control + F2</td>
|
|
<td>Control + F2</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Decrease</i> analog paddle linearity</td>
|
|
<td>Shift-Control-Alt + F2</td>
|
|
<td>Shift-Control-Cmd + F2</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> analog paddle linearity</td>
|
|
<td>Control-Alt + F2</td>
|
|
<td>Control-Cmd + F2</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Decrease</i> analog paddle dejitter averaging</td>
|
|
<td>Shift-Control + F3</td>
|
|
<td>Shift-Control + F3</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> analog paddle dejitter averaging</td>
|
|
<td>Control + F3</td>
|
|
<td>Control + F3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Decrease</i> analog paddle dejitter reaction</td>
|
|
<td>Shift-Control + F4</td>
|
|
<td>Shift-Control + F4</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> analog paddle dejitter reaction</td>
|
|
<td>Control + F4</td>
|
|
<td>Control + F4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Decrease</i> digital paddle sensitivity</td>
|
|
<td>Shift-Control + F5</td>
|
|
<td>Shift-Control + F5</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> digital paddle sensitivity</td>
|
|
<td>Control + F5</td>
|
|
<td>Control + F5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle autofire</td>
|
|
<td>Alt + A</td>
|
|
<td>Cmd + A</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Decrease</i> autofire rate</td>
|
|
<td>Shift-Control + A</td>
|
|
<td>Shift-Control + A</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> autofire rate</td>
|
|
<td>Control + A</td>
|
|
<td>Control + A</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle allowing all four directions on joystick</br>
|
|
to be pressed simultaneously</td>
|
|
<td>Control + F6</td>
|
|
<td>Control + F6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle use of modifier key combos</td>
|
|
<td>Control + F7</td>
|
|
<td>Control + F7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Swap Stelladaptor/2600-daptor port ordering</td>
|
|
<td>Control + 1</td>
|
|
<td>Control + 1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Select <i>previous</i> controllers emulated by the mouse
|
|
</br>(all, analog, none)</td>
|
|
<td>Shift-Control + F8</td>
|
|
<td>Shift-Control + F8</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select <i>next</i> controllers emulated by the mouse
|
|
</br>(all, analog, none)</td>
|
|
<td>Control + F8</td>
|
|
<td>Control + F8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Decrease</i> mouse paddle sensitivity</td>
|
|
<td>Shift-Control + F9</td>
|
|
<td>Shift-Control + F9</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> mouse paddle sensitivity</td>
|
|
<td>Control + F9</td>
|
|
<td>Control + F9</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Decrease</i> mouse trackball sensitivity</td>
|
|
<td>Shift-Control + F10</td>
|
|
<td>Shift-Control + F10</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> mouse trackball sensitivity</td>
|
|
<td>Control + F10</td>
|
|
<td>Control + F10</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Decrease</i> digital and mouse driving controller sensitivity</td>
|
|
<td>Shift-Control + F11</td>
|
|
<td>Shift-Control + F11</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> digital and mouse driving controller sensitivity</td>
|
|
<td>Control + F11</td>
|
|
<td>Control + F11</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Select <i>previous</i> mouse cursor visiblity option
|
|
(-UI, -Emulation/</br>-UI, +Emulation/+UI, -Emulation/+UI, +Emulation)</td>
|
|
<td>Shift-Control + F12</td>
|
|
<td>Shift-Control + F12</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select <i>next</i> mouse cursor visiblity option
|
|
(-UI, -Emulation/</br>-UI, +Emulation/+UI, -Emulation/+UI, +Emulation)</td>
|
|
<td>Control + F12</td>
|
|
<td>Control + F12</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle grab mouse</td>
|
|
<td>Control + G</td>
|
|
<td>Control + G</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Select <i>previous</i> left port controller type</td>
|
|
<td>Shift-Control + 2</td>
|
|
<td>Shift-Control + 2</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select <i>next</i> left port controller type</td>
|
|
<td>Control + 2</td>
|
|
<td>Control + 2</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Select <i>previous</i> right port controller type</td>
|
|
<td>Shift-Control + 3</td>
|
|
<td>Shift-Control + 3</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select <i>next</i> right port controller type</td>
|
|
<td>Control + 3</td>
|
|
<td>Control + 3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle swap left and right controller ports</td>
|
|
<td>Control + 4</td>
|
|
<td>Control + 4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle swap paddles</td>
|
|
<td>Control + 5</td>
|
|
<td>Control + 5</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Decrease</i> horizontal center of paddles </td>
|
|
<td>Shift-Control + 6</td>
|
|
<td>Shift-Control + 6</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> horizontal center of paddles </td>
|
|
<td>Control + 6</td>
|
|
<td>Control + 6</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Decrease</i> vertical center of paddles </td>
|
|
<td>Shift-Control + 7</td>
|
|
<td>Shift-Control + 7</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> vertical center of paddles </td>
|
|
<td>Control + 7</td>
|
|
<td>Control + 7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Switch mouse to <i>previous</i> controller emulation mode</br>(see <b><a href="#ControllerProps">Controller Properties</a></b>)</td>
|
|
<td>Shift-Control + 0</td>
|
|
<td>Shift-Control + 0</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Switch mouse to <i>next</i> controller emulation modes</br>(see <b><a href="#ControllerProps">Controller Properties</a></b>)</td>
|
|
<td>Control + 0</td>
|
|
<td>Control + 0</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Decrease</i> mouse paddle axes range</td>
|
|
<td>Shift-Control + 8</td>
|
|
<td>Shift-Control + 8</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> mouse paddle axes range</td>
|
|
<td>Control + 8</td>
|
|
<td>Control + 8</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td colspan="3"><center><font size="-1">
|
|
These settings can also be changed using <a href="#GlobalKeys"><b>Global Keys</a></font></center>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</br>
|
|
<a name="DeveloperKeys"></a>
|
|
<p><b>Developer Keys (can be remapped)</b></p>
|
|
|
|
<table BORDER=2 cellpadding=4>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key (Standard)</th>
|
|
<th>Key (macOS)</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle <b><a href="#Debugger">Developer Settings</a></b> sets (player/developer)</td>
|
|
<td>Alt + D</td>
|
|
<td>Cmd + D</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle frame stats</br>(scanline count/FPS/BS type etc.)</td>
|
|
<td>Alt + L</td>
|
|
<td>Cmd + L</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Player0 object</td>
|
|
<td>Alt + Z</td>
|
|
<td>Cmd + Z</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Player1 object</td>
|
|
<td>Alt + X</td>
|
|
<td>Cmd + X</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Missile0 object</td>
|
|
<td>Alt + C</td>
|
|
<td>Cmd + C</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Missile1 object</td>
|
|
<td>Alt + V</td>
|
|
<td>Cmd + V</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Ball object</td>
|
|
<td>Alt + B</td>
|
|
<td>Cmd + B</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Playfield object</td>
|
|
<td>Alt + N</td>
|
|
<td>Cmd + N</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle all TIA objects</td>
|
|
<td>Alt + Comma</td>
|
|
<td>Cmd + Comma</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Player0 collisions</td>
|
|
<td>Shift-Alt + Z</td>
|
|
<td>Shift-Cmd + Z</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Player1 collisions</td>
|
|
<td>Shift-Alt + X</td>
|
|
<td>Shift-Cmd + X</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Missile0 collisions</td>
|
|
<td>Shift-Alt + C</td>
|
|
<td>Shift-Cmd + C</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Missile1 collisions</td>
|
|
<td>Shift-Alt + V</td>
|
|
<td>Shift-Cmd + V</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Ball collisions</td>
|
|
<td>Shift-Alt + B</td>
|
|
<td>Shift-Cmd + B</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA Playfield collisions</td>
|
|
<td>Shift-Alt + N</td>
|
|
<td>Shift-Cmd + N</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle all TIA collisions</td>
|
|
<td>Shift-Alt + Comma</td>
|
|
<td>Shift-Cmd + Comma</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TIA 'Fixed Debug Colors' mode</td>
|
|
<td>Alt + .</td>
|
|
<td>Cmd + .</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle PAL color-loss effect</td>
|
|
<td>Control + L</td>
|
|
<td>Control + L</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Toggle TV 'Jitter' effect</td>
|
|
<td>Alt + J</td>
|
|
<td>Cmd + J</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Decrease</i> TV jitter sensitivity</td>
|
|
<td>Shift-Control-Alt + J</td>
|
|
<td>Shift-Control-Cmd + J</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Increase</i> TV jitter sensitivity</td>
|
|
<td>Control-Alt + J</td>
|
|
<td>Control-Cmd + J</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Decrease</i> TV jitter roll time</td>
|
|
<td>Shift-Control + J</td>
|
|
<td>Shift-Control + J</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><i>Increase</i> TV jitter roll time</td>
|
|
<td>Control + J</td>
|
|
<td>Control + J</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td colspan="3"><center><font size="-1">
|
|
These settings can also be changed using <a href="#GlobalKeys"><b>Global Keys</a></font></center>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</br>
|
|
<p><b><a name="GlobalKeys">Global Keys</a> (can be remapped)</b></p>
|
|
<p>These keys allow selecting and changing settings without having to remember
|
|
the dedicated hotkeys. The global keys are grouped by 'Audio & Video',
|
|
'Input Devices & Ports' and 'Debug' settings.</p>
|
|
<table BORDER=2 cellpadding=4>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key (Standard)</th>
|
|
<th>Key (macOS)</th>
|
|
</tr>
|
|
<tr>
|
|
<td>Select <i>previous</i> setting group</td>
|
|
<td>Control + End</td>
|
|
<td>Control-Fn + Left arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select <i>next</i> setting group</td>
|
|
<td>Control + Home</td>
|
|
<td>Control-Fn + Right arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select <i>previous</i> setting</td>
|
|
<td>End</td>
|
|
<td>Fn + Left arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select <i>next</i> setting</td>
|
|
<td>Home</td>
|
|
<td>Fn + Right arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Decrease</i> current setting</td>
|
|
<td>PageDown</td>
|
|
<td>Fn + Down arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> current setting
|
|
<td>PageUp</td>
|
|
<td>Fn + Up arrow</td>
|
|
</tr>
|
|
</table>
|
|
<p>Notes:
|
|
<ul>
|
|
<li>Only available if UI messages are enabled.</li>
|
|
<li>Currently not available settings are automatically skipped.</li>
|
|
<li>If a setting was previously selected via a dedicated hotkey, its
|
|
value can also be directly changed with the global keys.</li>
|
|
</ul>
|
|
</p>
|
|
|
|
</br>
|
|
<p><b>Other Emulation Keys (can be remapped)</b></p>
|
|
|
|
<table BORDER=2 cellpadding=4>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key (Standard)</th>
|
|
<th>Key (macOS)</th>
|
|
</tr>
|
|
<tr>
|
|
<td>Load <i>previous</i> game in ROM (multicart ROM)</td>
|
|
<td>Shift-Control + R</td>
|
|
<td>Shift-Control + R</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Reload current ROM (singlecart ROM)<br>
|
|
Load <i>next</i> game in ROM (multicart ROM)</td>
|
|
<td>Control + R</td>
|
|
<td>Control + R</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Emulate 'frying' effect</td>
|
|
<td>Shift + Backspace</td>
|
|
<td>Shift + Backspace</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Decrease</i> emulation speed (disables 'Turbo' mode)</td>
|
|
<td>Shift-Control + S</td>
|
|
<td>Shift-Control + S</td>
|
|
</tr>
|
|
<tr>
|
|
<td><i>Increase</i> emulation speed (disables 'Turbo' mode)</td>
|
|
<td>Control + S</td>
|
|
<td>Control + S</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Toggle 'Turbo' mode (maximum emulation speed)</td>
|
|
<td>Control + T</td>
|
|
<td>Control + T</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Save continuous PNG snapshots</br>(per interval defined in <a href="#Snapshots"><b>Snapshot Settings</b></a>)</td>
|
|
<td>Control-Alt + S</td>
|
|
<td>Control-Cmd + S</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Save continuous PNG snapshots (every frame)</td>
|
|
<td>Shift-Control-Alt + S</td>
|
|
<td>Shift-Control-Cmd + S</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Open the <a href="#HighScores"><b>High Scores</b></a> dialog.</td>
|
|
<td>Insert</td>
|
|
<td>Insert</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Toggle 'Time Machine' mode</td>
|
|
<td>Alt + T</td>
|
|
<td>Cmd + T</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Enter/Exit the <a href="#TimeMachine"><b>Time Machine</b></a> dialog</td>
|
|
<td>Shift + T to enter, Shift + T/Escape to exit and continue with emulation</td>
|
|
<td>Shift + T to enter, Shift + T/Escape to exit and continue with emulation</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Playback the <a href="#TimeMachine"><b>Time Machine</b></a> from current state (from the TM dialog only)</td>
|
|
<td>Space</td>
|
|
<td>Space</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Start/Stop playback (exist/enters the <a href="#TimeMachine"><b>Time Machine</b></a> dialog)</td>
|
|
<td>Shift + Space</td>
|
|
<td>Shift + Space</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Rewind by one state (enters the <a href="#TimeMachine"><b>Time Machine</b></a> dialog)</td>
|
|
<td>Alt + Left arrow</td>
|
|
<td>Cmd + Left arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Rewind by 10 states (enters the <a href="#TimeMachine"><b>Time Machine</b></a> dialog)</td>
|
|
<td>Shift-Alt + Left arrow</td>
|
|
<td>Shift-Cmd + Left arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Rewind all states (enters the <a href="#TimeMachine"><b>Time Machine</b></a> dialog)</td>
|
|
<td>Alt + Down arrow</td>
|
|
<td>Cmd + Down arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Unwind by one state (enters the <a href="#TimeMachine"><b>Time Machine</b></a> dialog)</td>
|
|
<td>Alt + Right arrow</td>
|
|
<td>Cmd + Right arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Unwind by 10 states (enters the <a href="#TimeMachine"><b>Time Machine</b></a> dialog)</td>
|
|
<td>Shift-Alt + Right arrow</td>
|
|
<td>Shift-Cmd + Right arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Unwind all states (enters the <a href="#TimeMachine"><b>Time Machine</b></a> dialog)</td>
|
|
<td>Alt + Up arrow</td>
|
|
<td>Cmd + Up arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Enter/Exit the PlusROM backends setup dialog</td>
|
|
<td>Shift-Control-Alt + P to enter, Shift-Control-Alt + P/Escape to exit and continue with emulation</td>
|
|
<td>Shift-Control-Cmd + P to enter, Shift-Control-Cmd + P/Escape to exit and continue with emulation</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</br>
|
|
<p><b>UI Keys (can be remapped)</b></p>
|
|
|
|
<table BORDER=2 cellpadding=4>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key (Standard)</th>
|
|
<th>Key (macOS)</th>
|
|
<th>Controller</th>
|
|
</tr>
|
|
<tr>
|
|
<td>Open context-sensitive help</td>
|
|
<td>F1</td>
|
|
<td>Shift-Cmd + ?</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move Up</td>
|
|
<td>Up arrow</td>
|
|
<td>Up arrow</td>
|
|
<td>Up</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move Down</td>
|
|
<td>Down arrow</td>
|
|
<td>Down arrow</td>
|
|
<td>Down</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move Left</td>
|
|
<td>Left arrow</td>
|
|
<td>Left arrow</td>
|
|
<td>Down</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move Right</td>
|
|
<td>Right arrow</td>
|
|
<td>Right arrow</td>
|
|
<td>Up</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move Home</td>
|
|
<td>Home</td>
|
|
<td>Home</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move End</td>
|
|
<td>End</td>
|
|
<td>End</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move Page Up</td>
|
|
<td>Page Up</td>
|
|
<td>Page Up</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move Page Down</td>
|
|
<td>Page Down</td>
|
|
<td>Page Down</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>OK</td>
|
|
<td>-</td>
|
|
<td>-</td>
|
|
<td>Button 1/X + Up, Button 2/A</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Cancel</td>
|
|
<td>Escape</td>
|
|
<td>Escape</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select item</td>
|
|
<td>Return/Enter/Space</td>
|
|
<td>Return/Enter/Space</td>
|
|
<td>Button 1/X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move to previous object</td>
|
|
<td>Shift + Tab</td>
|
|
<td>Shift + Tab</td>
|
|
<td>Left</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move to next object</td>
|
|
<td>Tab</td>
|
|
<td>Tab</td>
|
|
<td>Right</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move to previous tab</td>
|
|
<td>Shift-Control + Tab</td>
|
|
<td>Shift-Control + Tab</td>
|
|
<td>Button 1/X + Left, Button 4/Y</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move to next tab</td>
|
|
<td>Control + Tab</td>
|
|
<td>Control + Tab</td>
|
|
<td>Button 1/X + Right, Button 3/B</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Toggle windowed/fullscreen mode</td>
|
|
<td>Alt + Return</td>
|
|
<td>Cmd + Return</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Toggle UI theme</td>
|
|
<td>Alt + T</td>
|
|
<td>Cmd + T</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Exit Stella</td>
|
|
<td>Control + Q</td>
|
|
<td>Cmd + Q</td>
|
|
<td>-</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</br>
|
|
<p><b>Additional Launcher Keys (most cannot be remapped)</b></p>
|
|
<table BORDER=2 cellpadding=4>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key (Standard)</th>
|
|
<th>Key (macOS)</th>
|
|
<th>Controller</th>
|
|
</tr>
|
|
<tr>
|
|
<td>Go to initial directory (also in other file dialogs)</td>
|
|
<td>Alt + Home</td>
|
|
<td>Cmd + Home</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Go to previous directory in history (also in other file dialogs)</td>
|
|
<td>Alt + Left arrow</td>
|
|
<td>Cmd + Left arrow</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Go to next directory in history (also in other file dialogs)</td>
|
|
<td>Alt + Right arrow</td>
|
|
<td>Cmd + Right arrow</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Go to parent directory (also in other file dialogs)</td>
|
|
<td>Backspace, Alt + Up arrow</td>
|
|
<td>Backspace, Cmd + Up arrow</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move Page Up</td>
|
|
<td>Page Up</td>
|
|
<td>Page Up</td>
|
|
<td>Button 1/X + Left</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move Page Down</td>
|
|
<td>Page Down</td>
|
|
<td>Page Down</td>
|
|
<td>Button 1/X + Right</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Remove from 'Recently Played' or 'Most Popular' folder</td>
|
|
<td>Control + X</td>
|
|
<td>Control + X</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Toggle favorite</td>
|
|
<td>Control + F</td>
|
|
<td>Control + F</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Open Game properties dialog</td>
|
|
<td>Control + G</td>
|
|
<td>Control + G</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Open Power-On options dialog</td>
|
|
<td>Control + P</td>
|
|
<td>Control + P</td>
|
|
<td>Button 2/A</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Open High Scores dialog (if available for selected ROM)</td>
|
|
<td>Control + H</td>
|
|
<td>Control + H</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Toggle file extensions display</td>
|
|
<td>Control + E</td>
|
|
<td>Control + E</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Toggle search ROMs in subdirectories too</td>
|
|
<td>Control + D</td>
|
|
<td>Control + D</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Toggle favorites sorting (normal or alternative)</td>
|
|
<td>Control + S</td>
|
|
<td>Control + S</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Reload ROM listing</td>
|
|
<td>Control + R</td>
|
|
<td>Control + R</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Load random ROM</td>
|
|
<td>Alt + R</td>
|
|
<td>Cmd + R</td>
|
|
<td>-</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Open Options dialog</td>
|
|
<td>Control + O</td>
|
|
<td>Control + O</td>
|
|
<td>Button 4/Y</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Open context menu</td>
|
|
<td>-</td>
|
|
<td>-</td>
|
|
<td>Hold Button</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</br>
|
|
<p><b>UI Keys in Text Editing areas (cannot be remapped)</b></p>
|
|
|
|
<table BORDER=2 cellpadding=4>
|
|
<tr>
|
|
<th>Function</th>
|
|
<th>Key (Standard)</th>
|
|
<th>Key (macOS)</th>
|
|
</tr>
|
|
<tr>
|
|
<td>Move cursor to previous character</td>
|
|
<td>Left arrow</td>
|
|
<td>Left arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move cursor to next character</td>
|
|
<td>Right arrow</td>
|
|
<td>Right arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move cursor to beginning of current word</td>
|
|
<td>Control + Left arrow</td>
|
|
<td>Option + Left arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move cursor to beginning of next word</td>
|
|
<td>Control + Right arrow</td>
|
|
<td>Option + Right arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move cursor to beginning of line</td>
|
|
<td>Home</td>
|
|
<td>Home, Control + A, Cmd + Left arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Move cursor to end of line</td>
|
|
<td>End</td>
|
|
<td>End, Control + E, Cmd + Right arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Delete character to left of cursor</td>
|
|
<td>Backspace</td>
|
|
<td>Backspace</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Delete character to right of cursor</td>
|
|
<td>Delete, Control + D</td>
|
|
<td>Delete, Control + D</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Delete word to left of cursor</td>
|
|
<td>Control + Backspace, Control + W</td>
|
|
<td>Option + Backspace, Control + W</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Delete word to right of cursor</td>
|
|
<td>Control + Delete, Alt + D</td>
|
|
<td>Option + Delete</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Delete all text to beginning of line</td>
|
|
<td>Control + Home, Control + U</td>
|
|
<td>Cmd + Backspace, Control + U</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Delete all text to end of line</td>
|
|
<td>Control + End, Control + K</td>
|
|
<td>Control + K</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select character to left of cursor</td>
|
|
<td>Shift + Left arrow</td>
|
|
<td>Shift + Left arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select character to right of cursor</td>
|
|
<td>Shift + Right arrow</td>
|
|
<td>Shift + Right arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select all text to beginning of current word</td>
|
|
<td>Shift-Control + Left arrow</td>
|
|
<td>Shift-Option + Left arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select all text to beginning of next word</td>
|
|
<td>Shift-Control + Right arrow</td>
|
|
<td>Shift-Option + Right arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select all text to beginning of line</td>
|
|
<td>Shift + Home</td>
|
|
<td>Shift + Home, Shift-Control + A, Shift-Cmd + Left arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select all text to end of line</td>
|
|
<td>Shift + End</td>
|
|
<td>Shift + End, Shift-Control + E, Shift-Cmd + Right arrow</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select all text</td>
|
|
<td>Control + A</td>
|
|
<td>Cmd + A</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Cut selected text</td>
|
|
<td>Control + X, Shift + Delete</td>
|
|
<td>Cmd + X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Copy selected text</td>
|
|
<td>Control + C, Control + Insert</td>
|
|
<td>Cmd + C</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Paste at cursor and replace selection</td>
|
|
<td>Control + V, Shift + Insert</td>
|
|
<td>Cmd + V</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Undo last operation</td>
|
|
<td>Control + Z</td>
|
|
<td>Cmd + Z</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Redo last operation</td>
|
|
<td>Control + Y, Shift-Control + Z</td>
|
|
<td>Cmd + Y, Shift-Cmd + Z</td>
|
|
</tr>
|
|
</table>
|
|
</br>
|
|
|
|
</blockquote></br>
|
|
|
|
<h2><b><a name="ControlMap">Controller Map</a></b></h2>
|
|
<blockquote>
|
|
|
|
<p>Some Atari (virtual) controllers are simulated with more than one computer controller, and
|
|
there are several special cases where controllers are active in certain modes only, as the table
|
|
below shows. Items marked as <b>(+ extra)</b> indicate that the computer controller may not have
|
|
enough buttons/axes etc. to fully emulate the device, so extra functionality must be mapped to other
|
|
controllers.</p>
|
|
|
|
<table BORDER=2 cellpadding=4>
|
|
<tr>
|
|
<th></th>
|
|
<th colspan="5">Computer</th>
|
|
</tr>
|
|
<tr>
|
|
<th>Virtual<br>Controller</th>
|
|
<th>Keyboard</th>
|
|
<th>Joystick</th>
|
|
<th>Mouse<br>(auto mode)</th>
|
|
<th>Mouse<br>(specific axis)</th>
|
|
<th>Stelladaptor/<br>2600-daptor</th>
|
|
</tr>
|
|
<tr>
|
|
<th> Joystick</th>
|
|
<td> ✓</td>
|
|
<td> ✓</td>
|
|
<td> ✓</td>
|
|
<td> ✕</td>
|
|
<td> ✓</td>
|
|
</tr>
|
|
<tr>
|
|
<th> Paddles</th>
|
|
<td> ✓</td>
|
|
<td> ✓</td>
|
|
<td> ✓</td>
|
|
<td> ✓</td>
|
|
<td> ✓</td>
|
|
</tr>
|
|
<tr>
|
|
<th> Booster Grip</th>
|
|
<td> ✓</td>
|
|
<td> ✓ (+ extra)</td>
|
|
<td> ✓ (+ extra)</td>
|
|
<td> ✕</td>
|
|
<td> ✓ (+ extra)</td>
|
|
</tr>
|
|
<tr>
|
|
<th> Sega Genesis</th>
|
|
<td> ✓</td>
|
|
<td> ✓ (+ extra)</td>
|
|
<td> ✓</td>
|
|
<td> ✕</td>
|
|
<td> ✕</td>
|
|
</tr>
|
|
<tr>
|
|
<th> Joy 2B+</th>
|
|
<td> ✓</td>
|
|
<td> ✓ (+ extra)</td>
|
|
<td> ✓ (+ extra)</td>
|
|
<td> ✕</td>
|
|
<td> ✕ (+ extra)</td>
|
|
</tr>
|
|
<tr>
|
|
<th> Keyboard</th>
|
|
<td> ✓</td>
|
|
<td> ✓ (+ extra)</td>
|
|
<td> ✕</td>
|
|
<td> ✕</td>
|
|
<td> ✓ (2600-daptor II)</td>
|
|
</tr>
|
|
<tr>
|
|
<th> Driving</th>
|
|
<td> ✓</td>
|
|
<td> ✓</td>
|
|
<td> ✓</td>
|
|
<td> ✕</td>
|
|
<td> ✓</td>
|
|
</tr>
|
|
<tr>
|
|
<th> Trak-Ball/Mouse</th>
|
|
<td> ✕</td>
|
|
<td> ✕</td>
|
|
<td> ✓</td>
|
|
<td> ✓ (axis ignored)</td>
|
|
<td> ✓</td>
|
|
</tr>
|
|
<tr>
|
|
<th> CompuMate</th>
|
|
<td> ✓</td>
|
|
<td> ✕</td>
|
|
<td> ✕</td>
|
|
<td> ✕</td>
|
|
<td> ✕</td>
|
|
</tr>
|
|
<tr>
|
|
<th> Light Gun</th>
|
|
<td> ✕</td>
|
|
<td> ✕</td>
|
|
<td> ✓</td>
|
|
<td> ✓ (axis ignored)</td>
|
|
<td> ✕</td>
|
|
</tr>
|
|
<tr>
|
|
<th> MindLink</th>
|
|
<td> ✕</td>
|
|
<td> ✕</td>
|
|
<td> ✓</td>
|
|
<td> ✓ (axis ignored)</td>
|
|
<td> ✕</td>
|
|
</tr>
|
|
<tr>
|
|
<th> AtariVox</th>
|
|
<td> N/A</td>
|
|
<td> N/A</td>
|
|
<td> N/A</td>
|
|
<td> N/A</td>
|
|
<td> voice (2600-daptor II)</td>
|
|
</tr>
|
|
<tr>
|
|
<th> SaveKey</th>
|
|
<td> N/A</td>
|
|
<td> N/A</td>
|
|
<td> N/A</td>
|
|
<td> N/A</td>
|
|
<td> N/A</td>
|
|
</tr>
|
|
</table>
|
|
</blockquote></br>
|
|
|
|
|
|
<br><br>
|
|
<p><h2>
|
|
<a name="TimeMachine">Stella's 'Time Machine'</a></h2>
|
|
<blockquote>
|
|
|
|
<p>A special feature of Stella is the 'Time Machine' mode. In this mode, Stella
|
|
automatically creates savestates in regular, user-defined intervals. At any time,
|
|
the user can interrupt the current emulation and navigate back and forth
|
|
within the saved timeline.
|
|
This can be done either by using the Time Machine hotkeys described in
|
|
<a href="#Hotkeys"><b>Hotkeys</b> - Other Keys</a> or by using the Time Machine
|
|
dialog. This dialog is automatically entered when using one of the Time Machine
|
|
hotkeys. The hotkeys continue to function within the dialog.</p>
|
|
|
|
<p><b>Time Machine</b> dialog:</p>
|
|
<td><img src="graphics/timemachine.png"></td>
|
|
|
|
<p>The dialog items are explained in the following two tables.</p>
|
|
|
|
<p><b>Top row (left to right)</b></p>
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Description</th></tr>
|
|
<tr><td>Current state</td><td>Shows the currently loaded state's number</td></tr>
|
|
<tr><td>'Timeline' slider</td><td>Shows the position of the current state in the
|
|
recorded timeline. A state can be selected by dragging the slider with the mouse.
|
|
To visualize state compression, small marks split the timeline into five, equally
|
|
sized state number intervals.</td></tr>
|
|
<tr><td>Total states</td><td>Shows the total number of save states in the
|
|
Time Machine</td></tr>
|
|
</table>
|
|
<p><b>Bottom row (left to right)</b></p>
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Description</th></tr>
|
|
<tr><td>Current time</td><td>Shows the time of the currently selected state,
|
|
relative to the first one</td></tr>
|
|
<tr><td>'Start/Stop' button</td><td>Starts or stops the Time Machine</td></tr>
|
|
<tr><td>'Exit' button</td><td>Exits the dialog and continues emulation from the current state</td></tr>
|
|
<tr><td>'Rewind All' button</td><td>Navigates back to the begin of the timeline</td></tr>
|
|
<tr><td>'Rewind One' button</td><td>Navigates back by one state</td></tr>
|
|
<tr><td>'Playback' button</td><td>Starts playback from the current state</td></tr>
|
|
<tr><td>'Unwind One' button</td><td>Navigates forward by one state</td></tr>
|
|
<tr><td>'Unwind All' button</td><td>Navigates forward to the end of the timeline</td></tr>
|
|
<tr><td>'Save All' button</td><td>Saves all Time Machine states to disk</td></tr>
|
|
<tr><td>'Load All' button</td><td>Loades all states from disk into Time Machine</td></tr>
|
|
<tr><td>Navigation info</td><td>Informs about the interval of the user's last
|
|
Time Machine navigation. The interval can vary if the timeline is compressed.</td></tr>
|
|
<tr><td>Total time</td><td>Shows the total time covered by the save states
|
|
(aka 'Horizon')</td></tr>
|
|
</table>
|
|
<br>
|
|
Instead of using a mouse to click the buttons, you can also use the defined
|
|
<a href="#Hotkeys">Hotkeys</a>. Plus a few extra hotkeys for handling single
|
|
states and saving snapshots.
|
|
|
|
<p>The 'Time Machine' mode can be configured by the user. For details see
|
|
<a href="#Debugger"><b>Developer Options</b> - Time Machine</a></h2> tab.</p>
|
|
</blockquote></br>
|
|
|
|
<br>
|
|
<p><h2>
|
|
<a name="Highscores">High Scores Saving</a></h2>
|
|
<blockquote>
|
|
|
|
<p>Stella allows the user to save high scores when the required definitions
|
|
for a ROM exist. For a number of popular classic and homebrew games (see <b>
|
|
<a href="#HighScoreGames">High Scores - supported games</a></b>) this has
|
|
been done already.</p>
|
|
|
|
<p>To save a score, the High Score dialog can be opened by pressing 'Insert'
|
|
any time while a game is played. It will provide the current variation and
|
|
score and allow the user to add this as a new high score. Of course this
|
|
makes most sense when a game is over. Note: In multiplayer games, only the
|
|
score of the first player can be saved.</p>
|
|
|
|
<p><b>High Scores</b> dialog:</p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td><img src="graphics/highscores.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Description</th></tr>
|
|
<tr><td>Top row</td><td>Displays the current game's name.</td></tr>
|
|
<tr><td>Variation</td><td>By default the current game's variation is
|
|
selected. By changing the variation, the high scores of other
|
|
variations can be reviewed.</td></tr>
|
|
<tr><td>High scores table</td><td>This table displays up to ten high scores
|
|
for the current game variation.
|
|
<ul>
|
|
<li>Besides 'Rank' and 'Score' an optional special value (e.g.
|
|
'Level', 'Wave' or 'Round') is displayed.</li>
|
|
<li>In the 'Name' column, the player's initials are displayed.
|
|
These can be entered when a new high score is added to the list.</li>
|
|
<li>'Date' and 'Time' record when the high score was added.</li>
|
|
<li>The buttons at the right allow deleting individual high
|
|
scores from the list.</li>
|
|
</ul>
|
|
</td></tr>
|
|
<tr><td>MD5/Props</td><td>Display the checksums of the current ROM and the
|
|
high score properties defined for it. This can be useful for
|
|
comparing and verifying high scores.</td></tr>
|
|
<tr><td>Reset</td><td>Resets all high scores of the currently selected
|
|
variation.</td></tr>
|
|
<tr><td>Save</td><td>Saves the updated high scores and closes the dialog.
|
|
</td></tr>
|
|
<tr><td>Cancel</td><td>Closes the dialog without saving.</td></tr>
|
|
</table>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>For details how to configure high scores definitions for a game see
|
|
<a href="#HighScoreProps"><b>High Scores Properties</b></a></h2>.</p>
|
|
</blockquote></br>
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br>
|
|
<p><h1>
|
|
<a name="Advanced">Advanced Configuration</a></h1>
|
|
<hr>
|
|
|
|
<p>The default options in Stella are meant to cater to as many situations as
|
|
possible. As such, you may never need to change many of its options. However,
|
|
Stella is very configurable, and if you want to change its behaviour in some way,
|
|
there's likely a configuration option to do so. The remainder of this (lengthy)
|
|
section details every configurable option.</p>
|
|
|
|
<h2><b><a name="CommandLine">Using the Command Line</a></b></h2>
|
|
<blockquote>
|
|
|
|
<p>In addition to the built in ROM launcher, Stella can also be used from the
|
|
command line (assuming your operating system has a command line).</p>
|
|
|
|
<p>To run Stella from the command line, 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 <direct3d|metal|opengl|opengles2|opengles|software></pre></td>
|
|
<td>Use the given rendering backend (where applicable); default is the best available
|
|
mode detected.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-vsync <1|0></pre></td>
|
|
<td>Synchronize screen updates to the vertical blank period.
|
|
This can result in smoother updates, and eliminate tearing.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-fullscreen <1|0></pre></td>
|
|
<td>Enable fullscreen mode.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-center <1|0></pre></td>
|
|
<td>Center all windows (if possible).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-windowedpos <XxY></pre></td>
|
|
<td>Set the window position in windowed emulator mode.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-display <number></pre></td>
|
|
<td>Set the display for Stella's emulator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-palette <standard|z26|user|custom></pre></td>
|
|
<td>Set the palette to either normal Stella, the one used in the z26
|
|
emulator, a user-defined palette, or a custom palette generated
|
|
from user-defined parameters.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pal.phase_ntsc <number></pre></td>
|
|
<td>Adjust phase shift of 'custom' NTSC palette.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pal.phase_pal <number></pre></td>
|
|
<td>Adjust phase shift of 'custom' PAL palette.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pal.red_scale <number></pre></td>
|
|
<td>Adjust red scale of 'custom' palette (range -1.0 to 1.0).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pal.red_shift <number></pre></td>
|
|
<td>Adjust red shift of 'custom' palette (range -22.5 to 22.5).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pal.green_scale <number></pre></td>
|
|
<td>Adjust green scale of 'custom' palette (range -1.0 to 1.0).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pal.green_shift <number></pre></td>
|
|
<td>Adjust green shift of 'custom' palette (range -22.5 to 22.5).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pal.blue_scale <number></pre></td>
|
|
<td>Adjust blue scale of 'custom' palette (range -1.0 to 1.0).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pal.blue_shift <number></pre></td>
|
|
<td>Adjust blue shift of 'custom' palette (range -22.5 to 22.5).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pal.hue <number></pre></td>
|
|
<td>Adjust hue of current palette (range -1.0 to 1.0).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pal.saturation <number></pre></td>
|
|
<td>Adjust saturation of current palette (range -1.0 to 1.0).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pal.contrast <number></pre></td>
|
|
<td>Adjust contrast of current palette (range -1.0 to 1.0).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pal.brightness <number></pre></td>
|
|
<td>Adjust brightness of current palette (range -1.0 to 1.0).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pal.gamma <number></pre></td>
|
|
<td>Adjust gamma of current palette (range -1.0 to 1.0).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-detectpal60 <1|0></pre></td>
|
|
<td>Enable autodetection of PAL-60 based on colors used..</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-detectntsc50 <1|0></pre></td>
|
|
<td>Enable autodetection of NTSC-50 based on colors used..</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-speed <number></pre></td>
|
|
<td>Control the emulation speed (as a percentage, 10 - 1000).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-turbo <1|0></pre></td>
|
|
<td>Enable 'Turbo' mode for maximum emulation speed.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-uimessages <1|0></pre></td>
|
|
<td>Enable or disable display of message in the UI. Note that messages
|
|
indicating serious errors override this setting, and are always
|
|
shown.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><pre>-autopause <1|0></pre></td>
|
|
<td>Enable or disable automatic pause/continue of emulation when
|
|
Stella loses/gains focus.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><pre>-pausedim <1|0></pre></td>
|
|
<td>Enable or disable emulation dimming in pause mode.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-bezel.show <1|0></pre></td>
|
|
<td>Enable or disable bezel display.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><pre>-bezel.dir <path></pre></td>
|
|
<td>Specifies from where bezel images are loaded.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><pre>-bezel.windowed <1|0></pre></td>
|
|
<td>Enable bezels in windowed modes as well.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><pre>-bezel.win.auto<1|0></pre></td>
|
|
<td>Enable manually set bezel's emulation window position.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><pre>-bezel.win.left<1|0></pre></td>
|
|
<td>Set left position of bezel's emulation window.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><pre>-bezel.win.right<1|0></pre></td>
|
|
<td>Set right position of bezel's emulation window.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><pre>-bezel.win.top<1|0></pre></td>
|
|
<td>Set top position of bezel's emulation window.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><pre>-bezel.win.bottom<1|0></pre></td>
|
|
<td>Set bottom position of bezel's emulation window.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-audio.enabled <1|0></pre></td>
|
|
<td>Enable or disable sound generation.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-audio.volume <0 - 100></pre></td>
|
|
<td>Set the volume.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-audio.device <number></pre></td>
|
|
<td>Set the audio device (0 = default).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-audio.preset <1 - 5></pre></td>
|
|
<td>Set an audio preset. Numbers in sequence represent presets for
|
|
'custom', 'low quality, medium lag', 'high quality, medium lag',
|
|
'high quality, low lag' and 'ultra quality, minimal lag'.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-audio.fragment_size <128|256|512|1024|2048|4096></pre></td>
|
|
<td>Set the number of samples in a single fragment processed by the audio driver.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-audio.sample_rate <44100|48000|96000></pre></td>
|
|
<td>Set sound sample output frequency.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-audio.resampling_quality <1|2|3></pre></td>
|
|
<td>Set resampling quality to low (1), high (2) or ultra (3).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-audio.headroom <0 - 20></pre></td>
|
|
<td>Set number of additional half-frames to prebuffer.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-audio.buffer_size <0 - 20></pre></td>
|
|
<td>Set maximum number of additional half-frames to buffer.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-audio.stereo <1|0></pre></td>
|
|
<td>Enable or disable stereo mode for all ROMs.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-audio.dpc_pitch <10000 - 30000></pre></td>
|
|
<td>Set the pitch of Pitfall II music.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tia.zoom <zoom></pre></td>
|
|
<td>Use the specified zoom level (integer) while in TIA/emulation mode.
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tia.vsizeadjust <-5 - 5></pre></td>
|
|
<td>Adjust the display height of the TIA image
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tia.inter <1|0></pre></td>
|
|
<td>Use interpolation for the TIA image (results in blending/smoothing
|
|
of the image, not available for Software renderer).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tia.fs_stretch <1|0></pre></td>
|
|
<td>Stretch TIA image completely while in fullscreen mode, vs. keeping the correct
|
|
aspect ratio.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tia.fs_refresh <1|0></pre></td>
|
|
<td>While in fullscreen mode, adapt the display's refresh rate to the game's frame rate
|
|
to minimize judder.
|
|
</br>Note: Not available for macOS, also some renderers may not support this</br></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tia.fs_overscan <0 - 10></pre></td>
|
|
<td>Add overscan to TIA image while in fullscreen mode</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tia.dbgcolors <roygbp></pre></td>
|
|
<td>Assign the colours (R)ed, (O)range, (Y)ellow, (G)reen, (P)urple and (B)lue
|
|
to each graphical register P0/M0/P1/M1/PF/BL, respectively. Currently,
|
|
these can be changed around to apply different colours to the
|
|
respective register.
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tia.correct_aspect <1|0></pre></td>
|
|
<td>Enable aspect ratio correct scaling.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tv.filter <0 - 5></pre></td>
|
|
<td>Blargg TV effects, 0 is disabled, next numbers in
|
|
sequence represent presets for 'RGB', 'S-Video', 'Composite', 'Bad Adjust'
|
|
and 'Custom' modes.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tv.sharpness <number></pre></td>
|
|
<td>Blargg TV effects 'sharpness' (only available in custom mode,
|
|
range -1.0 to 1.0).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tv.resolution <number></pre></td>
|
|
<td>Blargg TV effects 'resolution' (only available in custom mode,
|
|
range -1.0 to 1.0).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tv.artifacts <number></pre></td>
|
|
<td>Blargg TV effects 'artifacts' (only available in custom mode,
|
|
range -1.0 to 1.0).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tv.fringing <number></pre></td>
|
|
<td>Blargg TV effects 'fringing' (only available in custom mode,
|
|
range -1.0 to 1.0).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tv.bleed <number></pre></td>
|
|
<td>Blargg TV effects 'bleed' (only available in custom mode,
|
|
range -1.0 to 1.0).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tv.phosphor <byrom|always|autoon|auto></pre></td>
|
|
<td>Determine how phosphor mode is enabled. If 'byrom', then the ROM
|
|
properties determine whether phosphor mode is used for each ROM.
|
|
Else the ROM properties entry is ignored. If 'always', then the
|
|
phosphor mode is always enabled. If 'autoon', then the phosphor
|
|
mode is enabled automatically. If 'auto', then the phosphor mode
|
|
is enabled/disabled on automatically.
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tv.phosblend <0 - 100></pre></td>
|
|
<td>Enable phosphor blending level; 0 implies no mixing, and 100
|
|
is full mixing (not recommended). Note that this doesn't actually
|
|
enable phosphor mode; that is done for each ROM in the ROM properties.
|
|
Higher blend values will intensify the phosphor effect. Depending on your
|
|
display and personal preferences, the optimal default for you may vary.
|
|
Slow LCDs (especially for office use) may only need a low blend of
|
|
around 30, while fast switching gamer LCDs may need about 70 to look
|
|
similar to a CRT.
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tv.scanlines <0 - 100></pre></td>
|
|
<td>Set TV effects scanlines intensity, where 0 means completely off.
|
|
</br>Note: No scanlines in 1x mode snapshots</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tv.scanmask <standard|thin|pixel|aperture|mame></pre></td>
|
|
<td>Set the scanlines mask.
|
|
</br>Note: All masks (except 'standard') work better at higher zoom levels.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-cheat <code></pre></td>
|
|
<td>Use the specified cheatcode (see <a href="#Cheats"><b>Cheat</b></a> section for description).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-loglevel <0|1|2></pre></td>
|
|
<td>Indicate level of logging to perform while the application is running. Zero completely disables logging (except for serious errors), while the remaining numbers show increasingly more detail.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-logtoconsole <1|0></pre></td>
|
|
<td>Indicate that logged output should be printed to the console/command line as it's being collected. An internal log will still be kept, and the amount of logging is still controlled by 'loglevel'.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-joydeadzone <0 - 29></pre></td>
|
|
<td>Set the joystick axis dead zone area for analog joysticks/gamepads
|
|
emulating digital controllers.
|
|
All values within the dead zone are treated as zero-axis values,
|
|
while only those values outside are registered as valid input.</br>
|
|
Dead zone is calculated as 3200 + value * 1000. So the possible dead
|
|
zone values range from 3200 to 32200 (= 10% - 98%).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-adeadzone <0 - 29></pre></td>
|
|
<td>Set the joystick axis dead zone area for analog joysticks/gamepads
|
|
emulating analog controllers. All values within the dead zone are
|
|
treated as zero-axis values, while only those values outside are
|
|
registered as valid input. </br>
|
|
Dead zone is calculated as value * 565. So the possible dead zone
|
|
values range from 0 to 16384 (= 0% - 50%)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-psense <0 - 30></pre></td>
|
|
<td>Sensitivity for emulation of paddles when using analog controllers.
|
|
Larger numbers are causing faster movement.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-plinear <25 - 100></pre></td>
|
|
<td>Linearity of analog paddles. Lower numbers allow finer control
|
|
around the paddle center.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-dejitter.base <0 - 10></pre></td>
|
|
<td>Strength of analog paddle input averaging. Higher values will make
|
|
the movement smoother, but also less responsive.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-dejitter.diff <0 - 10></pre></td>
|
|
<td>Impact of fast analog paddle movement on input averaging. Higher
|
|
values will reduce the movement smoothing while the paddle is moved
|
|
fast, making fast paddle movements more responsive.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-dsense <number></pre></td>
|
|
<td>Sensitivity for emulation of paddles when using a digital device
|
|
(i.e. joystick digital axis or button, keyboard key, etc.).
|
|
Valid range of values is from 1 to 20, with larger numbers causing
|
|
faster movement.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-autofire <1|0></pre></td>
|
|
<td>Set auto fire mode on or off.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-autofirerate <0 - 30></pre></td>
|
|
<td>Automatic trigger rate of the fire buttons in Hz (0 = disabled)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-joyallow4 <1|0></pre></td>
|
|
<td>Allow all 4 directions on a joystick to be pressed
|
|
simultaneously.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-modcombo <1|0></pre></td>
|
|
<td>Use modifier (Shift/Alt/Control/Cmd) + x key combos. This is normally enabled,
|
|
since the 'Quit' command is tied to 'Control + Q'. However, there are times
|
|
when you want to disable them.</br>
|
|
E.g. a 2-player game is using either the 'F' or 'R' keys for movement,
|
|
and pressing Control (for Fire) will perform an unwanted action
|
|
associated with 'Control + F' or 'Control + R' default keys.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-saport <lr|rl></pre></td>
|
|
<td>Determine how to enumerate the Stelladaptor/2600-daptor devices in the
|
|
order they are found: 'lr' means first is left port, second is right port,
|
|
'rl' means the opposite.</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>-usemouse <always|analog|never></pre></td>
|
|
<td>Use mouse as a controller as specified by ROM properties in specific case.
|
|
Always and never are self-explanatory, analog means only for analog-type devices
|
|
(paddles, trackball, etc.).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-msense <number></pre></td>
|
|
<td>Sensitivity for emulation of paddles when using a mouse.
|
|
Valid range of values is from 1 to 20, with larger numbers causing
|
|
faster movement.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tsense <number></pre></td>
|
|
<td>Sensitivity for emulation of trackball controllers when using a mouse.
|
|
Valid range of values is from 1 to 20, with larger numbers causing
|
|
faster movement.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-dcsense <number></pre></td>
|
|
<td>Sensitivity for emulation of driving controllers when using a mouse
|
|
or a digital device. Valid range of values is from 1 to 20, with larger
|
|
numbers causing faster movement.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-cursor <0|1|2|3></pre></td>
|
|
<td>Set mouse cursor state in UI/emulation modes.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-grabmouse <1|0></pre></td>
|
|
<td>Lock the mouse cursor in the game window in emulation mode.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-autoslot <1|0></pre></td>
|
|
<td>Automatically change to the next available save state slot after
|
|
saving a ROM state file.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-saveonexit <none|current|all></pre></td>
|
|
<td>Automatically save no, current or all states when exiting emulation. The latter
|
|
also loads all states when entering emulation.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-fastscbios <1|0></pre></td>
|
|
<td>Disable Supercharger BIOS progress loading bars.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-threads <1|0></pre></td>
|
|
<td>Enable multi-threaded video rendering (may not improve performance on all systems).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-snapsavedir <path></pre></td>
|
|
<td>The directory to save snapshot files to.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-snaploaddir <path></pre></td>
|
|
<td>The directory to load ROM info viewer snaposhot files from.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-snapname <int|rom></pre></td>
|
|
<td>When saving snapshots, use either the internal ROM database name or
|
|
the actual ROM filename.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-sssingle <1|0></pre></td>
|
|
<td>Generate single snapshot instead of many, overwriting
|
|
any previous snapshots.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-ss1x <1|0></pre></td>
|
|
<td>Ignore any scaling applied to the TIA image, and save
|
|
snapshot in unscaled (1x) mode.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-ssinterval <number></pre></td>
|
|
<td>Set the interval in seconds between taking snapshots in continuous
|
|
snapshot mode (currently 1 - 10).</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>Print 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>-exitlauncher <1|0></pre></td>
|
|
<td>Always exit to ROM launcher when exiting a ROM (normally, an exit to
|
|
launcher only happens when started with the launcher).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-launcherpos <XxY></pre></td>
|
|
<td>Set the window position in windowed ROM launcher mode.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-launcherdisplay <number></pre></td>
|
|
<td>Set the display for the ROM launcher.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-launcherres <WxH></pre></td>
|
|
<td>Set the size of the ROM launcher.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-launcherfont <small|low_medium|medium|large|large12|large14|large16></pre></td>
|
|
<td>Set the size of the font in the ROM launcher.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-launcherbuttons <1|0></pre></td>
|
|
<td>Enable bottom buttons in the ROM launcher.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-launcherextensions <1|0></pre></td>
|
|
<td>Display file extensions in the ROM launcher.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-launchersubdirs <1|0></pre></td>
|
|
<td>Specifies whether the ROM launcher lists files from current
|
|
directory only or all subdirectories too.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-favorites <1|0></pre></td>
|
|
<td>Enable favorites tracking and display.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-altsorting <1|0></pre></td>
|
|
<td>Use alternative sorting in virtual favorites folders.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-maxrecentroms <number></pre></td>
|
|
<td>Set number of ROMs tracked in 'Recently Played' folder (default = 20).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-romviewer <float></pre></td>
|
|
<td>Hide ROM Info Viewer in ROM launcher mode (0) or use the
|
|
given zoom level.
|
|
</br>Note: The zoom level is converted into a percentage in the UI.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-uipalette <standard|classic|light|dark></pre></td>
|
|
<td>Define default palette/theme for UI elements.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-uipalette2 <standard|classic|light|dark></pre></td>
|
|
<td>Define alternative palette/theme for UI elements.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-altpalette <1|0></pre></td>
|
|
<td>Use alternative palette/theme for UI elements.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-dialogfont <small|low_medium|medium|large|large12|large14|large16></pre></td>
|
|
<td>Set the size of the font in the dialogs.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-dialogpos <0 - 4></pre></td>
|
|
<td>Set the position of dialogs within Stella windows (0 = center).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-hidpi <0|1></pre></td>
|
|
<td>Enable the HiDPI mode which scales the UI by a factor of two.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-confirmexit <0|1></pre></td>
|
|
<td>Display a popup when emulation is exited.</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 file listings (value can range
|
|
from 300-1000). Use '0' to disable list-skipping completely.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-mwheel <lines></pre></td>
|
|
<td>Set the number of lines the mousewheel will scroll in the UI (1 - 10).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-mdouble <speed></pre></td>
|
|
<td>Set the mouse double click speed in the UI (100 - 900 ms).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-ctrldelay <delay></pre></td>
|
|
<td>Set the delay before controller input will start repeating in the UI (200 - 1000 ms).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-ctrlrate <rate></pre></td>
|
|
<td>Set the controller repeat rate in the UI (2 - 30 repeats/s).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-romdir <dir></pre></td>
|
|
<td>Set the path where the ROM launcher will start.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-followlauncher <0|1></pre></td>
|
|
<td>Make the start path follow ROM launcher navigation.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-userdir <dir></pre></td>
|
|
<td>Set the path to save user files (property exports, debugger saves) to.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-saveuserdir <0|1></pre></td>
|
|
<td>Update the user path when navigating in browser.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-maxres <WxH></pre></td>
|
|
<td>Useful for developers, this sets the maximum size of window that
|
|
can be created, allowing to simulate testing on 'smaller' systems.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-basedir <dir></pre></td>
|
|
<td>Override the base directory for all config files.
|
|
<br>Note: Not available for macOS</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-baseinappdir</pre></td>
|
|
<td>Override the base directory for all config files by attempting to use
|
|
the application directory.
|
|
<br>Note: Only available for Windows</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-plusroms.nick <name></pre></td>
|
|
<td>Define a nickname for the PlusROM backends</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-plusroms.id <id></pre></td>
|
|
<td>Define a temporary ID for the PlusROM backends (32 chars, hex)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-filterbstypes <1|0></pre></td>
|
|
<td>Enable filtering of bankswitch type list in <a href="#EmulationProps"><b>Emulation Properties</b></a> by ROM size.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-help</pre></td>
|
|
<td>Print a help message describing these options, and then
|
|
exit Stella.</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<a name="DeveloperCommandLine"></a>
|
|
<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>-dis.resolve <1|0></pre></td>
|
|
<td>Try to differentiate between tentative code vs. data sections in the
|
|
disassembler via static code analysis. See the <b>Debugger -
|
|
<a href="debugger.html#DisassemblySettings">ROM Disassembly Settings</b></a> for more information.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-dis.gfxformat <2|16></pre></td>
|
|
<td>Switch between displaying/editing GFX and PGFX sections in either
|
|
binary or hexidecimal in the disassembler.
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-dis.showaddr <1|0></pre></td>
|
|
<td>Show/hide program counter addresses as labels in the disassembler.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-dis.relocate <1|0></pre></td>
|
|
<td>Relocate calls out of address range in the disassembler.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-dbg.pos <XxY></pre></td>
|
|
<td>Set the window position in windowed debugger mode.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-dbg.display <number></pre></td>
|
|
<td>Set the display for the debugger.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-dbg.res <WxH></pre></td>
|
|
<td>Set the size of the debugger window.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-dbg.fontsize <small|medium|large|></pre></td>
|
|
<td>Set the font size in the debugger window.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-dbg.fontstyle <0|1|2|3></pre></td>
|
|
<td>How to use bold fonts in the debugger window. '0' means all normal font,
|
|
'1' is bold labels only, '2' is bold non-labels only, '3' is all bold font.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-dbg.ghostreadstrap <1|0></pre></td>
|
|
<td>Debugger considers/ignores 'ghost' reads for trap addresses</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-dbg.uhex <0|1></pre></td>
|
|
<td>Lower-/uppercase HEX display</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>-holdjoy0 <U,D,L,R,F></pre></td>
|
|
<td>Start the emulator with the left joystick direction/button held down
|
|
(ie, use 'UF' for up and fire). After entering the emulation, you will
|
|
have to press and release the direction again to release the event.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-holdjoy1 <U,D,L,R,F></pre></td>
|
|
<td>Start the emulator with the right joystick direction/button held down
|
|
(ie, use 'UF' for up and fire). After entering the emulation, you will
|
|
have to press and release the direction again to release the event.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-holdselect</pre></td>
|
|
<td>Start the emulator with the Game Select switch held down. After entering
|
|
the emulation, you will have to press and release 'Select' to release the
|
|
event.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-holdreset</pre></td>
|
|
<td>Start the emulator with the Game Reset switch held down. After entering
|
|
the emulation, you will have to press and release 'Reset' to release the
|
|
event.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-bs <type></pre></td>
|
|
<td>Set "Cart.Type" property. See the <a href="#EmulationProps"><b>Emulation Properties</b></a> section
|
|
for valid types.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-type <type></pre></td>
|
|
<td>Same as using -bs.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-startbank <bank></pre></td>
|
|
<td>Set "Cart.StartBank" property.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-channels <Mono|Stereo></pre></td>
|
|
<td>Set "Cart.Sound" property.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-ld <A|B></pre></td>
|
|
<td>Set "Console.LeftDiff" property.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-rd <A|B></pre></td>
|
|
<td>Set "Console.RightDiff" property.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-tv <Color|BW></pre></td>
|
|
<td>Set "Console.TVType" 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 <a href="#ControllerProps"><b>Controller Properties</b></a>
|
|
section for valid types.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-lq1 <type></pre></td>
|
|
<td>Set "Controller.Left1" property for QuadTari. See the <a href="#Quadtari"><b>QuadTari Properties</b></a>
|
|
section for valid types.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-lq2 <type></pre></td>
|
|
<td>Set "Controller.Left2" property for QuadTari. See the <a href="#Quadtari"><b>QuadTari Properties</b></a>
|
|
section for valid types.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-rc <type></pre></td>
|
|
<td>Set "Controller.Right" property. See the <a href="#ControllerProps"><b>Controller Properties</b></a>
|
|
section for valid types.</td>
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
<td><pre>-rq1 <type></pre></td>
|
|
<td>Set "Controller.Right1" property for QuadTari. See the <a href="#Quadtari"><b>QuadTari Properties</b></a>
|
|
section for valid types.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-rq2 <type></pre></td>
|
|
<td>Set "Controller.Right2" property for QuadTari. See the <a href="#Quadtari"><b>QuadTari Properties</b></a>
|
|
section for valid types.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-bc <type></pre></td>
|
|
<td>Set both "Controller.Left" and "Controller.Right" properties.
|
|
See the <a href="#ControllerProps"><b>Controller Properties</b></a> section for valid types.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-aq <type></pre></td>
|
|
<td>Set "Controller.Left1", "Controller.Left2", "Controller.Right1" and "Controller.Right2" properties for QuadTari.
|
|
See the <a href="#Quadtari"><b>QuadTari Properties</b></a> section for valid types.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-cp <Yes|No></pre></td>
|
|
<td>Set "Controller.SwapPaddles" property.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pxcenter <-10..30></pre></td>
|
|
<td>Set "Controller.PaddlesXCenter" property.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-pycenter <-10..30></pre></td>
|
|
<td>Set "Controller.PaddlesYCenter" property.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-ma <Auto|XY></pre></td>
|
|
<td>Set "Controller.MouseAxis" property.
|
|
See the <a href="#ControllerProps"><b>Controller Properties</b></a> section for valid types.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-format <format></pre></td>
|
|
<td>Set "Display.Format" property. See the <a href="#EmulationProps"><b>Emulation Properties</b></a> section
|
|
for valid formats.</td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><pre>-vcenter <number></pre></td>
|
|
<td>Set "Display.VCenter" property (-5..5).</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 whatever is specified for tv.phosblend.</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>The following are almost all available in two sets, one for players (prefixed by "plr.") and one
|
|
for developers (prefixd by "dev."). 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>-dev.settings <1|0></pre></td>
|
|
<td>Select developer (1) or player (0) set.</td>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>stats <1|0></pre></td>
|
|
<td>Overlay console info on the TIA image during emulation.</td>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>detectedinfo <1|0></pre></td>
|
|
<td>Display detected settings info when a ROM is loaded.</td>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>console <2600|7800></pre></td>
|
|
<td>Select console for B/W and Pause key handling and RAM initialization.</td>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>bankrandom <1|0></pre></td>
|
|
<td>On reset, randomize the startup bank (only for selected bankswitch types).</td>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>tiarandom <1|0></pre></td>
|
|
<td>On reset, randomize the TIA registers.</td>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>ramrandom <1|0></pre></td>
|
|
<td>On reset, either randomize all RAM content, or initialize with zero (console = 2600)/startup values (console = 7800) instead.</td>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>cpurandom <S,A,X,Y,P></pre></td>
|
|
<td>On reset, randomize the content of the specified CPU registers.</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.hsrandom <1|0></pre></td>
|
|
<td>When this option is enabled, peeks to hotspots return semi-random values.</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.tiadriven <1|0></pre></td>
|
|
<td>Set unused TIA pins to be randomly driven high or low on a read/peek.
|
|
If disabled, use the last databus value for those pins instead.</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.rwportbreak <1|0></pre></td>
|
|
<td>Since the 2600 has no dedicated R/W line, different addresses are
|
|
used for RAM read or write access.</br>
|
|
If the code reads from such a write address, this causes an unwanted,
|
|
semi-random write to that address.</br>
|
|
When this option is enabled, such reads interrupt emulation and the
|
|
debugger is entered.</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.wrportbreak <1|0></pre></td>
|
|
<td>Same as above.</br>
|
|
If the code writes to such a read address, nothing happens. But a
|
|
developer should be made aware of it, because this indicates a problem
|
|
with the code.</br>
|
|
When this option is enabled, such writes interrupt emulation and the
|
|
debugger is entered.</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.thumb.trapfatal <1|0></pre></td>
|
|
<td>When enabled, this allows the Thumb ARM emulation to
|
|
throw an exception and enter the debugger on fatal errors. When disabled, such
|
|
fatal errors are simply logged, and emulation continues. Do not use this
|
|
unless you know exactly what you're doing, as it changes the behaviour as
|
|
compared to real hardware.</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.thumb.incycles <1|0></pre></td>
|
|
<td>When enabled, ARM emulation cycles are added to 6507 system cycles. This
|
|
allows detecting timer overruns, but will also distort audio.</br>
|
|
Note: The ARM emulation cycles are only a coarse approximation.
|
|
</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.thumb.cyclefactor <float></pre></td>
|
|
<td>Defines the ARM cycle count correction factor (default = 0.95).</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.thumb.chiptype <0|1></pre></td>
|
|
<td>Selects the emulated chip type (0 = LPC2103, 1 = LPC2104 family). This
|
|
setting affects the CPU clock, the Flash memory access clock cycles and
|
|
the number of Flash banks.</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.thumb.mammode <0..3></pre></td>
|
|
<td>Selects the Memory Accelerator Module (MAM) mode.</br>
|
|
Note: Mode X (3) is for testing only. It reduces Flash memory access
|
|
clock cycles to always 1.</td>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>extaccess <1|0></pre></td>
|
|
<td>When enabled, each external access (AtariVox/SaveKey EEPROM, PlusROM, Supercharger...)
|
|
is signalled by a message.</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.tia.type <standard|koolaidman|</br> cosmicark|pesco|quickstep|matchie|</br> indy500|heman|custom></pre></td>
|
|
<td>Set emulated TIA type. Only with 'custom' the following TIA options become relevant.</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.tia.plinvphase <1|0></pre></td>
|
|
<td>Enable/disable inverted HMOVE clock phase for players (Kool Aid Man glitch).</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.tia.msinvphase <1|0></pre></td>
|
|
<td>Enable/disable inverted HMOVE clock phase for missiles (Cosmic Ark stars glitch).</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.tia.blinvphase <1|0></pre></td>
|
|
<td>Enable/disable inverted HMOVE clock phase for ball.</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.tia.delaypfbits <1|0></pre></td>
|
|
<td>Enable/disable playfield bits delayed by one color clock (stray playfield pixels in Pesco).</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.tia.delaypfcolor <1|0></pre></td>
|
|
<td>Enable/disable playfield color delayed by one color clock (colored step borders in Quick Step!).</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.tia.pfscoreglitch <1|0></pre></td>
|
|
<td>Enable/disable earlier playfield score mode color color switch (center vertical line in Matchie).</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.tia.delaybkcolor <1|0></pre></td>
|
|
<td>Enable/disable background color delayed by one color clock (stray pixels in Indy 500 menu hack).</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.tia.delayplswap <1|0></pre></td>
|
|
<td>Enable/disable player swap delayed by one color clock (He-Man title glitch).</td>
|
|
</tr><tr>
|
|
<td><pre>-dev.tia.delayblswap <1|0></pre></td>
|
|
<td>Enable/disable ball swap delayed by one color clock.</td>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>tv.jitter <1|0></pre></td>
|
|
<td>Enable TV jitter/roll effect, when there are too many or too few scanlines
|
|
per frame.</td>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>tv.jitter_sense <1 - 10></pre></td>
|
|
<td>When TV jitter/roll effect is enabled, determines the sensitivy to varying frame timings.</td>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>tv.jitter_recovery <1 - 20></pre></td>
|
|
<td>When TV jitter/roll effect is enabled, determines the recovery time for screen rolling
|
|
(recovery spread over multiple frames).</td>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>colorloss <1|0></pre></td>
|
|
<td>Enable/disable the PAL color-loss effect.</td>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>debugcolors <1|0></pre></td>
|
|
<td>Enable/disable the fixed debug colors.</td>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>timemachine <1|0></pre></td>
|
|
<td>Enable/disable the Time Machine.</td>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>tm.size <20 - 1000></pre></td>
|
|
<td>Define the Time Machine buffer size.</td>
|
|
</tr><tr>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>tm.uncompressed <0 - 1000></pre></td>
|
|
<td>Define the uncompressed Time Machine buffer size. Must be <= Time Machine buffer size.</td>
|
|
</tr><tr>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>tm.interval <1f|3f|10f|30f|</br> 1s|3s|10s></pre></td>
|
|
<td>Define the interval between two save states.</td>
|
|
</tr><tr>
|
|
</tr><tr>
|
|
<td><pre>-<plr.|dev.>tm.horizon <3s|10s|30s|1m|3m|</br> 10m|30m|60m></pre></td>
|
|
<td>Define the horizon of the Time Machine.</td>
|
|
</tr>
|
|
</table>
|
|
</blockquote></br>
|
|
|
|
<h2><b><a name="Options">Changing Options</a></b></h2>
|
|
<blockquote>
|
|
|
|
<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><a name="VideoAudio">Video & Audio Settings</a></b> dialog <a name="VideoAudioDisplay">(Display):</a></p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td valign="top"><img src="graphics/options_video.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see <a href="#CommandLine">Command Line</a></th></tr>
|
|
<tr><td>Renderer</td><td>Use specified rendering mode.</td><td>-video</td></tr>
|
|
<tr><td>Interpolation</td><td>Enable interpolation of the TIA image (not available for Software renderer).</td><td>-tia.inter</td></tr>
|
|
<tr><td>Zoom</td><td>Adjust the zoom level of the TIA image</td><td>-tia.zoom</td></tr>
|
|
<tr><td>Fullscreen</td><td>Self-explanatory - Note that colors may slightly change.
|
|
This depends on the OS and renderer used.</td><td>-fullscreen</td></tr>
|
|
<tr><td>Stretch</td><td>In fullscreen mode, completely fill screen with the TIA image.</td><td>-tia.fs_stretch</td></tr>
|
|
<tr><td>Adapt display...</td><td>In fullscreen mode, adapt the display's refresh rate to the game's frame rate to minimize judder.
|
|
</br>Note: Not available for macOS, also some renderers may not support this</td><td>-tia.fs_refresh</td></tr>
|
|
<tr><td>Overscan</td><td>In fullscreen mode, add overscan to the TIA image.</td><td>-tia.fs_overscan</td></tr>
|
|
<tr><td>Correct aspect ratio</td><td>Enable aspect ratio correct scaling.
|
|
</br>Note: Creates a cleaner looking TIA image when disabled (like z26 and old versions of Stella) vs. a correctly emulated aspect ratio when enabled.</td><td>-tia.correct_aspect</td></tr>
|
|
<tr><td>V-Size adjust</td><td>Adjust the height of the TIA image.</td><td>-tia.vsizeadjust</td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
|
|
<p><b>Video & Audio Settings</b> dialog <a name="VideoAudioPalettes">(Palettes):</a></p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td valign="top"><img src="graphics/options_video_palettes.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see <a href="#CommandLine">Command Line</a></th></tr>
|
|
<tr><td>Palette</td><td>Palette used for emulation mode</td><td>-palette</td></tr>
|
|
<tr><td>NTSC/PAL phase</td><td>Adjust phase shift of 'Custom' NTSC or PAL (depends on game) palette.</td><td>-pal.phase_ntsc<br/>-pal.phase_pal</td></tr>
|
|
<tr><td>R</td><td>Adjust red scale and shift of 'Custom' palette</td><td>-pal.red_scale<br/>-pal.red_shift</td></tr>
|
|
<tr><td>G</td><td>Adjust green scale and shift of 'Custom' palette</td><td>-pal.green_scale<br/>-pal.green_shift</td></tr>
|
|
<tr><td>B</td><td>Adjust blue scale and shift of 'Custom' palette</td><td>-pal.blue_scale<br/>-pal.blue_shift</td></tr>
|
|
<tr><td>Hue</td><td>Adjust hue of currently selected palette</td><td>-pal.hue</td></tr>
|
|
<tr><td>Saturation</td><td>Adjust saturation of currently selected palette</td><td>-pal.saturation</td></tr>
|
|
<tr><td>Contrast</td><td>Adjust contrast of currently selected palette</td><td>-pal.contrast</td></tr>
|
|
<tr><td>Brightness</td><td>Adjust brightness of currently selected palette</td><td>-pal.brightness</td></tr>
|
|
<tr><td>Gamma</td><td>Adjust gamma of currently selected palette</td><td>-pal.gamma</td></tr>
|
|
<tr><td>Autodetection</td><td>Enable autodetection of PAL-60/NTSC-50 based on colors used.</br>
|
|
Note: The detection is not very reliable and therefore uses very conservative parameters to avoid false positives.</td><td>-detectpal60<br/>-detectntsc50</td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
|
|
<p><b>Video & Audio Settings</b> dialog <a name="VideoAudioEffects">(TV Effects)</a>:</p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td valign="top"><img src="graphics/options_video_tv.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see <a href="#CommandLine">Command Line</a></th></tr>
|
|
<tr><td>TV mode</td><td>Disable TV effects, or select TV preset</td><td>-tv.filter</td></tr>
|
|
<tr><td>Adjustable sliders</td><td>Set specific attribute in 'Custom' TV mode</td><td>-tv.sharpness<br/>-tv.resolution, etc.</td></tr>
|
|
<tr><td>Phosphor</td><td>Select mode for enabling phosphor</td><td>-tv.phosphor</td></tr>
|
|
<tr><td>Blend (phosphor)</td><td>Blend level to use in phosphor modes for all ROMs and automatic ones
|
|
(level needs to be manually adjusted for your particular hardware)</td><td>-tv.phosblend</td></tr>
|
|
<tr><td>(Scanlines) Intensity</td><td>Sets scanlines black-level intensity.</br>
|
|
Note: No scanlines in 1x mode snapshots</td><td>-tv.scanlines</td></tr>
|
|
<tr><td>(Scanlines) Mask</td><td>Sets the scanlines mask.</br>
|
|
Note: All masks (except 'standard') work better at higher zoom levels</td><td>-tv.scanmask</td></tr>
|
|
<tr><td>Clone RGB</td><td>Copy 'RGB' attributes to 'Custom' TV mode sliders</td><td> </td></tr>
|
|
<tr><td>Clone S-Video</td><td>Copy 'S-Video' attributes to 'Custom' TV mode sliders</td><td> </td></tr>
|
|
<tr><td>Clone Composite</td><td>Copy 'Composite' attributes to 'Custom' TV mode sliders</td><td> </td></tr>
|
|
<tr><td>Clone Bad adjust</td><td>Copy 'Bad Adjust' attributes to 'Custom' TV mode sliders</td><td> </td></tr>
|
|
<tr><td>Revert</td><td>Revert attribute sliders to previously saved 'Custom' TV mode settings</td><td> </td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
|
|
<p><b>Video & Audio Settings</b> dialog <a name="VideoAudioBezels">(Bezels)</a>:</p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td valign="top"><img src="graphics/options_bezels.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see <a href="#CommandLine">Command Line</a></th></tr>
|
|
<tr><td>Enable bezels</td><td>Enables the bezel display, if a matching bezel image or a
|
|
default image (named 'default.png') can be found in the bezel path.</td><td>-bezel.show</td></tr>
|
|
<tr><td>Bezel path</td><td>Specifies the path from where bezel images are loaded.</td><td>-bezel.dir</td></tr>
|
|
<tr><td>Windowed modes</td><td>Enable bezels in windowed modes as well.</td><td>-bezel.windowed</td></tr>
|
|
<tr><td>Manual emulation window</td><td>Enable manually set bezel's emulation window position.</td><td>-bezel.win.auto</td></tr>
|
|
<tr><td>Left</td><td>Set left position of bezel's emulation window.</td><td>-bezel.win.left</td></tr>
|
|
<tr><td>Right</td><td>Set right position of bezel's emulation window.</td><td>-bezel.win.right</td></tr>
|
|
<tr><td>Top</td><td>Set top position of bezel's emulation window.</td><td>-bezel.win.top</td></tr>
|
|
<tr><td>Bottom</td><td>Set bottom position of bezel's emulation window.</td><td>-bezel.win.bottom</td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
|
|
<p><b>Video & Audio Settings</b> dialog <a name="VideoAudioAudio">(Audio)</a>:</p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td valign="top"><img src="graphics/options_audio.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see <a href="#CommandLine">Command Line</a></th></tr>
|
|
<tr><td>Enable audio</td><td>Self-explanatory</td><td>-audio.enabled</td></tr>
|
|
<tr><td>Volume</td><td>Self-explanatory</td><td>-audio.volume</td></tr>
|
|
<tr><td>Device</td><td>Use the specified audio device.</td><td>-audio.device</td></tr>
|
|
<tr><td>Mode</td><td>Select an audio preset or choose 'Custom' for manual configuration.</td><td>-audio.preset</td></tr>
|
|
<tr><td>Fragment size</td><td>The number of samples in a single fragment processed by the audio driver. Smaller values mean less latency, but may lead to dropouts (depending on OS and hardware).</td><td>-audio.fragment_size</td></tr>
|
|
<tr><td>Sample rate</td><td>
|
|
Output samples per second. Higher values reduce artifacts from resampling and decrease latency,
|
|
but may lead to dropouts (depending on OS and hardware).
|
|
</td><td>-audio.sample_rate</td></tr>
|
|
<tr><td>Resampling quality</td><td>
|
|
Chooses the algorithm used for resampling (= converting TIA output to the target sample rate).
|
|
'High' and 'ultra' use a high-quality Lanczos filter
|
|
but require slightly more CPU, while 'low' may lead to audible screeching artifacts in
|
|
some games (notably Quadrun).
|
|
</td><td>-audio.resampling_quality</td></tr>
|
|
<tr><td>Headroom</td><td>Number of frames to buffer before playback starts. Higher values increase latency, but reduce the potential for dropouts.</td><td>-audio.headroom</td></tr>
|
|
<tr><td>Buffer size</td><td>Maximum size of the audio buffer. Higher values increase maximum latency, but reduce the potential for dropouts.</td><td>-audio.buffer_size</td></tr>
|
|
<tr><td>Stereo for all ROMs</td><td>Enable stereo mode for all ROMs.</td><td>-audio.stereo</td></tr>
|
|
<tr><td>Pitfall II music pitch</td><td>Defines the pitch of Pitfall II music (which may vary between carts).</td><td>-audio.dpc_pitch</td></tr>
|
|
</table>
|
|
<p>
|
|
<strong>IMPORTANT:</strong> In order to maintain a stable stream of audio data, emulation speed must be
|
|
synchronized with the audio hardware. Buffering happens in multiple places (OS = fragment size, Stella =
|
|
headroom and buffer size) and improves the tolerance to speed fluctuations, but introduces latency which
|
|
manifests as a lag between audio and video.
|
|
</p><p>
|
|
Too aggressive settings for your combination of hardware and software (high sample rate,
|
|
low fragment size, low headroom, low buffer size) may lead to audio dropouts whose effect may range from
|
|
isolated popping artifacts to garbled audio. You can check the system log for related messages. If you
|
|
get recurring messages about audio overruns and underruns (isolates underruns / overruns are normal
|
|
and a consequence of host system activity), you might have to adjust your settings.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
|
|
<p><b><a name="Emulation">Emulation</a></b> dialog:</p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td valign="top"><img src="graphics/options_emulation.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see <a href="#CommandLine">Command Line</a></th></tr>
|
|
<tr><td>Emulation speed</td><td>Emulation speed</td><td>-speed</td></tr>
|
|
<tr><td>VSync</td><td>Enable vertical synced updates</td><td>-vsync</td></tr>
|
|
<tr><td>Turbo</td><td>Enable 'Turbo' mode for maximum emulation speed. This overwrites 'Emulation speed' setting and disables 'VSync'.</td><td>-turbo</td></tr>
|
|
<tr><td>Multi-threading</td><td>Enable multi-threaded rendering</td><td>-threads</td></tr>
|
|
<tr><td>Fast SuperCharger load</td><td>Skip progress loading bars for SuperCharger ROMs</td><td>-fastscbios</td></tr>
|
|
<tr><td>Show UI messages</td><td>Overlay UI messages onscreen</td><td>-uimessages</td></tr>
|
|
<tr><td>
|
|
Automatic pause</td><td>Enable or disable automatic pause/continue of emulation
|
|
when Stella loses/gains focus.</td><td>-autopause
|
|
</td></tr>
|
|
<tr><td>Confirm exiting...</td><td>Display a popup when emulation is exited</td><td>-confirmexit</td></tr>
|
|
<tr>
|
|
<td>When entering/exiting emulation:</td>
|
|
<td>
|
|
Automatically save no, current or all Time Machine states when exiting emulation.<br/>
|
|
The latter also loads all states when entering emulation. When this is enabled, you
|
|
can always continue your game session from where you exited it. Even including the
|
|
Time Machine buffer!
|
|
</td>
|
|
<td>-saveonexit</td>
|
|
</tr><tr>
|
|
<td>Automatically change...</td>
|
|
<td>
|
|
Automatically change to the next available save state slot after saving a ROM state file.
|
|
</td>
|
|
<td>-autoslot</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
|
|
<p><b><a name="Input">Input Settings</a></b> dialog:</p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td valign="top"><img src="graphics/eventmapping.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top"><br>This dialog is described in further detail in
|
|
<b>Advanced Configuration - <a href="#Remapping">Event Remapping</a></b>.</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
|
|
<p><b><a name="UserInterface">User Interface Settings</b></a> dialog (2 tabs):</p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td valign="top"><img src="graphics/options_misc.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see <a href="#CommandLine">Command Line</a></th></tr>
|
|
<tr><td>Theme #1</td><td>Default theme to use for UI elements (see examples)</td><td>-uipalette</td></tr>
|
|
<tr><td>Theme #2</td><td>Alternative theme to use for UI elements (see examples)</td><td>-uipalette2</td></tr>
|
|
<tr><td>Dialogs font</td><td>The font used in the dialogs</td><td>-dialogfont</td></tr>
|
|
<tr><td>HiDPI mode</td><td>Scale the UI by a factor of two when enabled</td><td>-hidpi</td></tr>
|
|
<tr><td>Dialogs position</td><td>Position of dialogs with Stella window</td><td>-dialogpos</td></tr>
|
|
<tr><td>Center windows</td><td>Attempt to center application windows, else position at last position</td><td>-center</td></tr>
|
|
<tr><td>List input delay</td><td>Maximum delay between keypresses in filelist-widgets before a search string resets. </td><td>-listdelay</td></tr>
|
|
<tr><td>Mouse wheel scroll</td><td>Number of lines a mouse scroll will move in list-widgets</td><td>-mwheel</td></tr>
|
|
<tr><td>Double-click speed</td><td>Speed of mouse double-clicks</td><td>-mdouble</td></tr>
|
|
<tr><td>Controller repeat delay</td><td>Delay before controller input repeats</td><td>-ctrldelay</td></tr>
|
|
<tr><td>Controller repeat rate</td><td>Rate of controller input repeats</td><td>-ctrlrate</td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
<tr style="border:hidden">
|
|
<td><img src="graphics/options_misc_dark.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td><img src="graphics/options_misc_classic.png"></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="3"><center><img src="graphics/options_misc_light.png"></center></td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td><img src="graphics/options_ui.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top"><br>This tab is described in further detail in
|
|
<b>Advanced Configuration - <a href="#ROMInfo">ROM Launcher</a></b>.</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<a name="Snapshots"></a>
|
|
<p><b>Snapshot Settings</b> dialog:</p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td valign="top">
|
|
<img src="graphics/launcher_options_snapshots.png">
|
|
<br><br>
|
|
A snapshot archive can be downloaded <a href="https://stella-emu.github.io/stella-snapshots.zip">here</a>.
|
|
</td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see <a href="#CommandLine">Command Line</a></th></tr>
|
|
<tr><td>Save path</td><td>Specifies where to save snapshots</td><td>-snapsavedir</td></tr>
|
|
<!--<tr><td>Load path</td><td>Specifies where to load snapshots</td><td>-snaploaddir</td></tr> -->
|
|
<tr><td>Continuous snapshot interval</td><td>Interval (in seconds) between snapshots</td><td>-ssinterval</td></tr>
|
|
<tr><td>Use actual ROM name</td><td>Use the actual ROM filename instead of the internal ROM database name</td><td>-snapname</td></tr>
|
|
<tr><td>Overwrite existing files</td><td>Whether to overwrite old snapshots</td><td>-sssingle</td></tr>
|
|
<tr><td>Create pixel-exact image (no zoom/post-processing)</td><td>Save snapshot using the exact pixels from the TIA image, without zoom or any post-processing effects</td><td>-ss1x</td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<p><b><a name="Developer">Developer Settings</a></b> dialog:</p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td><img src="graphics/options_developer.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top"><br>This tab is described in further detail in
|
|
<b>Advanced Configuration - <a href="#Debugger">Developer Options/Integrated Debugger</a></b>.</td>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<p><b><a name="GameProperties">Game Properties</a></b> dialog:</p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td><img src="graphics/options_gameinfo_emulation.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top"><br>This dialog allows you to change all ROM properties
|
|
as described in <b>Advanced Configuration - <a href="#Properties">Game Properties</a></b>.
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<p><b><a name="Audit">Audit ROMs</a></b> dialog:</p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td><img src="graphics/romaudit.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top"><br>This dialog is described in further detail in
|
|
<b>Advanced Configuration - <a href="#ROMAudit">ROM Audit Mode</a></b>.</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
</blockquote></br>
|
|
|
|
<h2><b><a name="Remapping">Event Remapping/Input Devices</a></b></h2>
|
|
<blockquote>
|
|
|
|
<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>Getting Started -
|
|
<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.).
|
|
|
|
<p>To remap an event:
|
|
<ol>
|
|
<li>Enter <b>Options Menu</b> and click the <b>Input Settings</b> button.</li>
|
|
<li>Click the 'Event Mappings' tab. Here you can also filter the list of events by type.
|
|
<li>Select the event you want to remap and click the 'Map' button.</li>
|
|
<li>Now define the input:
|
|
<ul>
|
|
<li>Either press a key, a modifier key (Control, Shift...) or a modifier+key combination.</li>
|
|
<li>Or use a controller direction, a button or a button+controller direction combination.</li>
|
|
</ul>Then that key (combination) or controller action will be bound to the selected event.</br>
|
|
Notes:<ul>
|
|
<li>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>The same input can be used for multiple controller types (e.g. 'Right' for 'Left Joystick Right' and 'Left Paddle A Turn Right').</li>
|
|
<li>If the same input is used again for the same controller type, the old mapping will be removed.</li>
|
|
<li>Events which are available in both event modes can be remapped individually.</li>
|
|
<li>Left and right modifiers are mapped separately when used alone.</li>
|
|
</ul></li>
|
|
</ol>
|
|
You can also:
|
|
<ul>
|
|
<li>Cancel a remap in progress by clicking 'Cancel'. <br/>Note: Pressing 'ESC' will map that key,
|
|
<b>not</b> abort the mapping.</li>
|
|
<li>Erase all event's mappings by clicking 'Erase'.</li>
|
|
<li>Reset the event to its default mapping by clicking 'Reset'.</li>
|
|
<li>Reset <b>all</b> emulation or UI event mappings to default by clicking 'Defaults'.
|
|
<br/>Note: Controllers are by default automatically mapped to left or right controller
|
|
port events, depending on their ID (even/odd). But you can assign each controller to a
|
|
fixed port in the 'Controller Database' dialog in the 'Devices & Ports' tab. </li>
|
|
</ul>
|
|
|
|
<p>The following screenshots illustrate the event remapping process:<br><br>
|
|
<img src="graphics/eventmapping.png">
|
|
|
|
<img src="graphics/eventmapping_remap.png">
|
|
|
|
<p>Finally there is a <a name="Combo">'Combo'</a> button in the 'Emulation Events' tab, accessible
|
|
only when a Combo event has been selected from the list of events on the left.
|
|
Clicking 'Combo' will show a dialog similar to the following:</p>
|
|
<img src="graphics/eventmapping_combo.png">
|
|
<p>In this dialog, you can assign various events to the selected combo event.
|
|
Note that this only assigns multiple events to the combo; you still need
|
|
to map the combo event itself to some action, as described in the 'remap an
|
|
event' section above.</p>
|
|
|
|
</p></br>
|
|
|
|
<p><b><a name="DevicesPorts">Device and port</a></b> settings can be configured under the 'Devices & Ports' tab, shown below:</p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td valign="top"><img src="graphics/eventmapping_devsports.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see <a href="#CommandLine">Command Line</a></th></tr>
|
|
<tr><td>Digital dead zone size</td><td>Dead zone area for axes on joysticks/gamepads emulating
|
|
digital controllers
|
|
</td><td>-joydeadzone</td></tr>
|
|
<tr><td>Analog dead zone size</td><td>Dead zone area for axes on joysticks/gamepads emulating
|
|
analog controllers
|
|
</td><td>-adeadzone</td></tr>
|
|
<tr><td>(Analog paddle) Sensitivity</td><td>Sensitivity of analog paddles</td><td>-psense</td></tr>
|
|
<tr><td>(Analog paddle) Linearity</td><td>Linearity of analog paddles</td><td>-plinear</td></tr>
|
|
<tr><td>(Analog paddle) Dejitter averaging</td><td>Strength of paddle input averaging, suppresses paddle jitter<br>
|
|
Note: The 2600-daptor has built-in dejitter, so there should be no need to use Stella's dejitter.
|
|
</td><td>-dejitter.base</td></tr>
|
|
<tr><td>(Analog paddle) Dejitter reaction</td><td>Strength of paddle reaction to fast paddle movements, suppresses paddle jitter</td><td>-dejitter.diff</td></tr>
|
|
<tr><td>Digital paddle sensitivity</td><td>Sensitivity used when emulating a paddle using a digital device</td><td>-dsense</td></tr>
|
|
<tr><td>Autofire</td><td>Set auto fire mode on or off</td><td>-autofire</td></tr>
|
|
<tr><td>(Autofire) Rate</td><td>Automatic trigger rate of the fire buttons in Hz</td><td>-autofirerate</td></tr>
|
|
<tr><td>Allow all 4 directions ...</td><td>Allow all 4 joystick directions to be pressed simultaneously</td><td>-joyallow4</td></tr>
|
|
<tr><td>Use modifier key combos</td><td>Enable using modifier keys in keyboard actions</td><td>-modcombo</td></tr>
|
|
<tr><td>Swap Stelladaptor ports</td><td>Swap the order of the detected Stelladaptors/2600-daptors (see <b>Advanced Configuration - <a href="#Adaptor">Stelladaptor/2600-daptor Support</a></b>)</td><td>-saport</td></tr>
|
|
<tr><td>Controller Database</td><td>Show all controllers that Stella knows about and allow assigning them to a default mapping port and removing them</td><td> </td></tr>
|
|
<tr><td>Erase EEPROM</td><td>Erase the whole AtariVox/SaveKey flash memory</td><td> </td></tr>
|
|
<tr><td>AtariVox serial port</td><td>Described in further detail in <b>Advanced Configuration - <a href="#AtariVox">AtariVox/SaveKey Support</a></b> </td><td>-avoxport</td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><b><a name="Mouse">Mouse</a></b> settings can be configured under the 'Mouse' tab, shown below:</p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td><img src="graphics/eventmapping_mouse.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see <a href="#CommandLine">Command Line</a></th></tr>
|
|
<tr><td>Use mouse as ...</td><td>Allow the mouse to emulate various controllers</td><td>-usemouse</td></tr>
|
|
<tr><td>(Sensitivity) Paddle</td><td>Sensitivity used when emulating a paddle using a mouse</td><td>-msense</td></tr>
|
|
<tr><td>(Sensitivity) Trackball</td><td>Sensitivity used when emulating a trackball device using a mouse</td><td>-tsense</td></tr>
|
|
<tr><td>(Sensitivity) Driving controller</td><td>Sensitivity used when emulating a driving controller device using a mouse or a digital device</td><td>-dcsense</td></tr>
|
|
<tr><td>Mouse cursor visibility</td><td>Show/hide cursor depending on current state</td><td>-cursor</td></tr>
|
|
<tr><td>Grab mouse ...</td><td>Keep mouse in window in emulation mode<br/>(only when used as controller)<br/>
|
|
Note: The sensitivity may greatly vary when the mouse is not grabbed.</td><td>-grabmouse</td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</blockquote></br>
|
|
|
|
<h2><b><a name="ROMInfo">ROM Launcher</a></b></h2>
|
|
<blockquote>
|
|
|
|
<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
|
|
the <b>UI Settings - Launcher</b> dialog, as shown below:</p>
|
|
<img src="graphics/options_ui.png">
|
|
<p>Most of the options are self-explanatory, except for the 'ROM info
|
|
width' and 'Image path...', which are described below.</p>
|
|
|
|
<h3><b><a name="ROMInfoViewer">ROM Info Viewer</a></b></h3>
|
|
|
|
<p>Stella supports viewing images and ROM properties of the currently
|
|
selected ROM in the ROM launcher. Image support is automatic, as long as your
|
|
image directory contains any images in the appropriate format. The label (if
|
|
existing) and the number of matching images are displayed under the
|
|
current image. The mouse, the ROM Launcher hotkeys or the controller can be
|
|
used to browse multiple images of a ROM.</p>
|
|
|
|
Notes:
|
|
<li>The images can have PNG or JPG format.</li>
|
|
<li>The image names must be identical to either Stella's ROM properties cart
|
|
name or the ROM's filename.</li>
|
|
<li>For displaying additional images per ROM, the image names must be
|
|
extended with '_#', where '#' is a number.</li>
|
|
<li>The image label is read from the image's metadata. For PNGs, the 'iTxt'
|
|
chunk, keyword 'Title', for JPGs, the EXIF field 'ImageDescription' is used.
|
|
</li>
|
|
|
|
<p>An <a href="https://stella-emu.github.io/stella-snapshots.zip">archive</a> of
|
|
updated snapshots is available on the Stella webpage. For links to even more
|
|
launcher images and bezels, look <a href="https://stella-emu.github.io/downloads.html">here</a>.
|
|
This archive may be updated periodically as new ROMs are found, and also
|
|
for each new release of Stella. In case no snapshot is found, you can
|
|
provide a default image named 'default_snapshot.png' or 'default_snapshot.jpg'.
|
|
Note that the snapshots can be any size (e.g. generated by Stella); they
|
|
will be resized accordingly.</p>
|
|
|
|
The ROM Info Viewer's width can be defined between 0% (off) and 100%. The
|
|
value is relative to the launcher width. For too small or too large values,
|
|
Stella will automatically correct the width at runtime so that the ROM names
|
|
and the current ROM's information always have enough space.
|
|
|
|
<p>The following snapshots illustrate the various font sizes and rom info
|
|
widths:</p>
|
|
|
|
<p>ROM Info Viewer width at 40%, UI sized 800x480, small launcher font, bottom buttons enabled:</p>
|
|
<img src="graphics/rominfo_1x_small.png">
|
|
|
|
<p>ROM Info Viewer width at 32%, UI sized 900x720, medium launcher font, bottom buttons disabled:</p>
|
|
<img src="graphics/rominfo_1x_large.png">
|
|
|
|
<p>ROM Info Viewer width at 50% , UI sized 1280x900, large launcher font, bottom buttons disabled:</p>
|
|
<img src="graphics/rominfo_2x_small.png">
|
|
|
|
<p>The dialog items at the top can be used to navigate your folders and to define the listed files:</p>
|
|
|
|
<ul>
|
|
<li>
|
|
<img src="graphics/navigation_buttons.png" style="vertical-align: middle; margin-top: 4px; margin-bottom: 4px; margin-right: 4px">
|
|
Quick folder navigation buttons; the path display allows direct navigation by clicking an element.
|
|
</li><li>
|
|
<img src="graphics/open_help.png" style="vertical-align: middle; margin-top: 4px; margin-bottom: 4px; margin-right: 4px">
|
|
Open this help for the launcher.
|
|
</li><li>
|
|
<img src="graphics/reload_list.png" style="vertical-align: middle; margin-top: 4px; margin-bottom: 4px; margin-right: 4px">
|
|
Reload the file list.
|
|
</li><li>
|
|
The 'Filter' text box can be used to narrow down the results in the
|
|
ROM listing. When this box is empty, all files are shown. Typing
|
|
characters here will 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.</br>
|
|
Note that the search is not case sensitive, so you don't need to worry
|
|
about capital or lower-case letters. You also can use '*' and '?' as
|
|
wildcards. E.g. for '(198?)*atari' only ROMs from the 1980s made by
|
|
Atari will be listed.
|
|
</li><li>
|
|
<img src="graphics/show_current_dir.png" style="vertical-align: middle; margin-top: 4px; margin-bottom: 4px">
|
|
<img src="graphics/show_sub_dirs.png" style="vertical-align: middle; margin-top: 4px; margin-bottom: 4px; margin-right: 4px">
|
|
Display either files from current directory only, or all subdirectories too.
|
|
</li><li>
|
|
<img src="graphics/select_random_rom.png" style="vertical-align: middle; margin-top: 4px; margin-bottom: 4px; margin-right: 4px">
|
|
Load a random ROM from the current file list.
|
|
</li>
|
|
</ul>
|
|
</br>
|
|
|
|
<h3><b><a name="FavoriteROMs">Favorite ROMs and Directories</a></b></h3>
|
|
Stella allows to manually favor ROMs and directories and also automatially
|
|
tracks all played ROMs. These ROMs are presented in three virtual directories:
|
|
<ul>
|
|
<li>
|
|
<p><b>Favorites</b>: Lists all ROMs and directories manually favored by
|
|
the user (see
|
|
<b><a href="#ROMLauncherContextMenu">ROM Launcher Context Menu</a></b>).
|
|
</p>
|
|
</li>
|
|
<li>
|
|
<p><b>Recently Played</b>: Contains the recently played ROMs. By default
|
|
the latest 20 ROMs are tracked (the <b><a href="#CommandLine">Command Line</a></b>
|
|
parameter '-maxrecentroms' allows changing the number of tracked ROMs).</p>
|
|
</li>
|
|
<li>
|
|
<p><b>Most Popular</b>: Stella automatically creates a list of most
|
|
frequently and lately played ROMs. This list is presented here.</p>
|
|
</li>
|
|
</ul>
|
|
<p>The directories are only displayed when they are not empty (e.g. no
|
|
favored ROMs) and are only present in the current ROM path. Their default ROM
|
|
sort order can be changed (see
|
|
<b><a href="#ROMLauncherContextMenu">ROM Launcher Context Menu</a></b>).</p>
|
|
</br>
|
|
|
|
<h3><b><a name="ROMLauncherContextMenu">ROM Launcher Context Menu</a></b></h3>
|
|
|
|
<p>The ROM launcher also contains a context menu, opened by clicking the
|
|
right mouse button in the ROM list or by a long controller button press.
|
|
This context menu can contain the following items:</p>
|
|
|
|
<p><ul>
|
|
<li>
|
|
<p><b>Remove from recently played/most popular</b> (or 'Control + X'):
|
|
Removes the selected ROM from the current virtual folder.</p>
|
|
</li>
|
|
<li>
|
|
<p><b>Add to/remove from favorites</b> (or 'Control + F'): Toggles the
|
|
favorite state of the selected ROM or directory.</p>
|
|
</li>
|
|
<li>
|
|
<p><b>Game properties</b> (or 'Control + G'): Opens the
|
|
<b><a href="#Properties">Game properties</a></b> dialog.</p>
|
|
</li>
|
|
<li><p><b><a name="PowerOn">Power-on options</a></b> (or 'Control + P'):
|
|
Opens a dialog whereby ROM properties can be temporarily overridden, and
|
|
joystick/console buttons can be temporarily held down. Selecting options
|
|
from this dialog will cause all ROMs launched after that to use those
|
|
properties you specify. Clicking <b>Defaults</b> will disable its
|
|
functionality, and use ROM properties as defined by the ROM itself. The dialog is as
|
|
follows (see <b>Advanced Configuration - <a href="#Properties">Game Properties</a></b>
|
|
for more information concerning ROM properties):</p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td><img src="graphics/launcher_override.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>For more information,<br>see <a href="#CommandLine">Commandline</a></th></tr>
|
|
<tr><td>Bankswitch type</td><td>-bs</td></tr>
|
|
<tr><td>TV type</td><td>-tv</td></tr>
|
|
<tr><td>Left difficulty</td><td>-ld</td></tr>
|
|
<tr><td>Right difficulty</td><td>-rd</td></tr>
|
|
<tr><td>Left joy items</td><td>-holdjoy0</td></tr>
|
|
<tr><td>Right joy items</td><td>-holdjoy1</td></tr>
|
|
<tr><td>Console: Select</td><td>-holdselect</td></tr>
|
|
<tr><td>Console: Reset</td><td>-holdreset</td></tr>
|
|
<tr><td>Start in Debugger mode</td><td>-debug</td></tr>
|
|
</table>
|
|
<p></p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<li>
|
|
<p><b>High scores</b> (or 'Control + H'): Opens the
|
|
<b><a href="#HighScores"></b>High Scores</a> dialog for the selected ROM.
|
|
Only available if high score properties have been setup for the ROM.</p>
|
|
</li>
|
|
<li>
|
|
<p><b>Enable/disable file extensions</b> (or 'Control + E'): Toggles the
|
|
display of the file extensions.</p>
|
|
</li>
|
|
<li>
|
|
<p><b>Toggle alternative sorting</b> (or 'Control + S'): Toggles
|
|
alternative sorting in the virtual directories.</p>
|
|
</li>
|
|
<li>
|
|
<p><b>Include/exclude subdirectories</b> (or 'Control + D'): Toggles searching
|
|
of ROMs in current directory only or all subdirectories too.</p>
|
|
</li>
|
|
<li>
|
|
<p><b>Reload listing</b> (or 'Control + R'): Performs a reload of the
|
|
current file listing. </p>
|
|
</li>
|
|
</ul></p>
|
|
</blockquote></br>
|
|
|
|
|
|
|
|
<h2><b><a name="ROMAudit">ROM Audit Mode</a></b></h2>
|
|
<blockquote>
|
|
|
|
<p>Stella has the ability to rename all your ROMs according to the name
|
|
specified in the ROM 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 with extensions described in
|
|
"Supported File formats". 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>
|
|
</blockquote></br>
|
|
|
|
<h2><b><a name="Adaptor">Stelladaptor/2600-daptor Support</a></b></h2>
|
|
|
|
<blockquote>
|
|
<p>Stella supports real Atari 2600 joysticks, paddles, driving controllers
|
|
and trackballs (CX22/CX80 'Trak-Ball', Atari and Amiga mouse) using the
|
|
<a href="http://www.grandideastudio.com/stelladaptor-2600">Stelladaptor</a> and
|
|
<a href="http://2600-daptor.com">2600-daptor</a> devices.</p>
|
|
|
|
<p>Stella can use up to <b>two</b> adaptors; any extra ones are ignored.
|
|
Stelladaptor devices will be automatically detected and configured. The
|
|
actual controllers 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 device 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, left paddles A & B, the left driving controller,
|
|
left keyboard, etc.</li>
|
|
|
|
<li>The second device 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, right paddles A & B, the right driving controller,
|
|
right keyboard, etc.</li>
|
|
|
|
<li>Any other devices will be ignored.</li>
|
|
|
|
<li>The assignment ordering of Stelladaptor/2600-daptor to port can be redefined with
|
|
'saport' (see description in <a href="#CommandLine"><b>Using the Command Line</b></a>) and dynamically with the 'Control + 1' key
|
|
combo.</li>
|
|
</ul>
|
|
</blockquote></br>
|
|
|
|
<h2><b><a name="AtariVox">AtariVox/SaveKey Support</a></b></h2>
|
|
<blockquote>
|
|
|
|
<p>Stella supports a real AtariVox device for the speech/SpeakJet portion
|
|
of the controller. You will need a real AtariVox device
|
|
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' command line
|
|
argument, or by setting it in the UI under the 'Devices & Ports' tab in
|
|
<b>Advanced Configuration - <a href="#Remapping">Input Devices</a></b>.</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 macOS tend to use names similar to '/dev/xxxxxx'.
|
|
For now, only Linux/UNIX, macOS, and Windows 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 EEPROM files will depend on the version of Stella, as follows:</p>
|
|
|
|
<p><table cellpadding="4" border="1">
|
|
<tr>
|
|
<td><b>Linux/Unix</b></td>
|
|
<td><i>$HOME/.config/stella/nvram/atarivox_eeprom.dat<br>
|
|
$HOME/.config/stella/nvram/savekey_eeprom.dat</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Macintosh</b></td>
|
|
<td><i>$HOME/Library/Application Support/Stella/nvram/atarivox_eeprom.dat<br>
|
|
$HOME/Library/Application Support/Stella/nvram/savekey_eeprom.dat</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Windows</b></td>
|
|
<td><i>%APPDATA%\Stella\nvram\atarivox_eeprom.dat<br>
|
|
%APPDATA%\Stella\nvram\savekey_eeprom.dat</i></td>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>If using 'basedir'<br>or 'baseinappdir'</b></td>
|
|
<td><i>_BASEDIR_/nvram/atarivox_eeprom.dat<br>
|
|
_BASEDIR_/nvram/savekey_eeprom.dat</i></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. You can also
|
|
reset the EEPROM to a clean state.</p>
|
|
</blockquote></br>
|
|
|
|
<h2><b><a name="Debugger">Developer Options/Integrated Debugger</a></b></h2>
|
|
<blockquote>
|
|
|
|
<p>Several developer related options can be configured in the 'Developer Settings' dialog.
|
|
Two sets ('Player settings', 'Developer settings') allow easy adjustment of all settings
|
|
for different use cases (playing or developing games) at once.</p>
|
|
|
|
<p><b>Developer Settings</b> dialog <a name="DeveloperEmulator">(Emulator)</a></p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td valign="top"><img src="graphics/options_developer_emulation.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr>
|
|
<th>Item</th>
|
|
<th>Brief description</th>
|
|
<th>For more information,<br>see <a href="#CommandLine">Command Line</a></th>
|
|
</tr>
|
|
<tr>
|
|
<td>Player/Developer settings</td>
|
|
<td>Selects the active settings set</td>
|
|
<td>-dev.settings</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Console info overlay</td>
|
|
<td>Overlay console info on the TIA image during emulation.</td>
|
|
<td>-plr.stats<br/>-dev.stats</td></tr>
|
|
<tr>
|
|
<td>Detected settings info</td>
|
|
<td>Display detected settings when a ROM is loaded</td>
|
|
<td>-plr.detectedinfo<br/>-dev.detectedinfo</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Display external access message</td>
|
|
<td>Display a message for any external access
|
|
(AtariVox/SaveKey EEPROM, PlusROM, Supercharger...)</td>
|
|
<td>-plr.extaccess<br/>-dev.extaccess</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Console</td>
|
|
<td>Select the console type, this affects Color/B&W/Pause key
|
|
emulation and zero-page RAM initialization</td>
|
|
<td>-plr.console <br/>-dev.console</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Random startup bank</td>
|
|
<td>Randomize the startup bank (only for selected bankswitch types)</td>
|
|
<td>-plr.bankrandom<br/>-dev.bankrandom</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Randomize TIA</td>
|
|
<td>Randomize TIA registers when loading a ROM</td>
|
|
<td>-plr.tiarandom<br/>-dev.tiarandom</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Randomize zero-page ...</td>
|
|
<td>When loading a ROM, randomize all RAM content instead of
|
|
initializing with all zeroes (for 'Console' = 'Atari 2600' only)</td>
|
|
<td>-plr.ramrandom<br/>-dev.ramrandom</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Randomize CPU</td>
|
|
<td>When loading a ROM, randomize the content of the specified CPU registers</td>
|
|
<td>-plr.cpurandom<br/>-dev.cpurandom</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Random hotspot peek values</td>
|
|
<td>Peeks to hotspots return semi-random values</td>
|
|
<td>-dev.hsrandom</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Drive unused TIA pins ...</td>
|
|
<td>Unused TIA pins are read random instead of the last databus values</td>
|
|
<td>-dev.tiadriven</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Break on reads from ...</td>
|
|
<td>A read from a write port interrupts emulation and the debugger is entered.</td>
|
|
<td><span style="white-space:nowrap">-dev.rwportbreak</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Break on writes to ...</td>
|
|
<td>A write to a read port interrupts emulation and the debugger is entered.</td>
|
|
<td><span style="white-space:nowrap">-dev.wrportbreak</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Fatal ARM emulation ...</td>
|
|
<td>Thumb ARM emulation throws an exception and enters the debugger on fatal errors</td>
|
|
<td><span style="white-space:nowrap">-dev.thumb.trapfatal</span></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><b>Developer Settings</b> dialog <a name="DeveloperTIA">(TIA):</a></p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td valign="top"><img src="graphics/options_developer_tia.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see <a href="#CommandLine">Command Line</a></th></tr>
|
|
<tr><td>Chip type</td><td>Type of emulated TIA chip. Allows testing for
|
|
TIA versions which exhibit timing problems in certain games. The
|
|
'Custom' option allows testing for glitch combinations.</td><td>-dev.tia.type</td></tr>
|
|
<tr><td>Inverted HMOVE clock...</td><td>Emulates the Kool-Aid Man
|
|
collision and Cosmic Ark stars glitches for the given objects.</td>
|
|
<td>-dev.tia.plinvphase</br>-dev.tia.msinvphase</br>-dev.tia.blinvphase</td></tr>
|
|
<tr><td>Delayed Playfield</td><td>Emulates playfield changes moved
|
|
by one color clock. This e.g. causes glitches in Pesco (stray playfield
|
|
pixel), Quick Step! (colored step borders) and Matchie (vertical line at pixel 79).</td>
|
|
<td>-dev.tia.delaypfbits</br>-dev.tia.delaypfcolor</br>-dev.tia.pfscoreglitch</td></tr>
|
|
<tr><td>Delayed Background</td><td>Emulates background color register changes delayed
|
|
by one color clock. This causes stray pixel in the Indy 500 menu hack.</td>
|
|
<td>-dev.tia.delaybkcolor</td></tr>
|
|
<tr><td>Delayed VDEL... swap for</td><td>Emulates a VDELP0/P1/BL swap
|
|
delayed by one color clock. This e.g cause glitches in the He-Man title
|
|
screen.</td>
|
|
<td>-dev.tia.delayplswap</br>-dev.tia.delayblswap</td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><b>Developer Settings</b> dialog <a name="DeveloperVideo">(Video)</a>:</p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td valign="top"><img src="graphics/options_developer_video.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see <a href="#CommandLine">Command Line</a></th></tr>
|
|
<tr><td>Jitter/roll effect</td><td>Emulate screen roll with inconsistent scanline count</td><td>-plr.tv.jitter<br/>-dev.tv.jitter</td></tr>
|
|
<tr><td>(Jitter/roll) Sensitivity</td><td>Determines sensitivity for screen rolling</td><td><span style="white-space:nowrap">-plr.tv.jitter_sense<br/>-dev.tv.jitter_sense</span></td></tr>
|
|
<tr><td>(Jitter/roll) Recovery</td><td>Determines recovery time for screen rolling</td><td><span style="white-space:nowrap">-plr.tv.jitter_recovery<br/>-dev.tv.jitter_recovery</span></td></tr>
|
|
<tr><td>PAL color-loss</td><td>Use PAL color-loss effect</td><td>-plr.colorloss<br/>-dev.colorloss</td></tr>
|
|
<tr><td>Debug colors</td><td>Use fixed debug colors</td><td>-plr.debugcolors<br/>-dev.debugcolors</td></tr>
|
|
<tr>
|
|
<td>Player 0 <br/>Missile 0 <br/>Player 1 <br/>
|
|
Missile 1 <br/>Playfield <br/>Ball
|
|
</td>
|
|
<td>
|
|
Set color for specific object in 'Debug Colors' mode
|
|
(copies of the same object have a slightly different luminance)<br/><br/>
|
|
Disabled in ROM launcher mode</td><td>-tia.dbgcolors
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><b>Developer Settings</b> dialog <a name="DeveloperTimeMachine">(Time Machine)</a></p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td valign="top"><img src="graphics/options_developer_timemachine.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr>
|
|
<th>Item</th><th>Brief description</th><th>For more information,<br>see <a href="#CommandLine">Command Line</a></th>
|
|
</tr><tr>
|
|
<td>Time Machine</td>
|
|
<td>
|
|
When the Time Machine is enabled, Stella will automatically
|
|
buffer save states in the interval described below. The user
|
|
can then navigate back and forth within the recorded timeline.</br>
|
|
Note: This buffer is identical with the one described in
|
|
<a href="debugger.html#GlobalButtons"><b>Debugger - Global Buttons</b></a>.
|
|
It is independent from the save states manually created with F9.
|
|
</td>
|
|
<td>-plr.timemachine<br>-dev.timemachine</td>
|
|
</tr><tr>
|
|
<td>Buffer size</td>
|
|
<td>
|
|
Defines the Time Machine buffer size. The larger the buffer, the less
|
|
save states have to be compressed to reach the horizon.
|
|
</td>
|
|
<td>-plr.tm.size<br>-dev.tm.size</td>
|
|
</tr><tr>
|
|
<td>Uncompressed size (*)</td>
|
|
<td>
|
|
Defines the uncompressed Time Machine buffer size. States within this
|
|
area will not be compressed and keep their initial interval.</td>
|
|
<td><span style="white-space:nowrap">-plr.tm.uncompressed<br>-dev.tm.uncompressed</span></td>
|
|
</tr><tr>
|
|
<td>Interval</td>
|
|
<td>Defines the interval between two save states when they are created.</td>
|
|
<td>-plr.tm.interval<br>-dev.tm.interval</td>
|
|
</tr><tr>
|
|
<td>Horizon</td>
|
|
<td>
|
|
Defines the horizon of the Time Machine. A large horizon allows
|
|
going back further in time. To reach the horizon, save states
|
|
will be compressed (*). This means that more and more intermediate
|
|
states will be removed and the interval between save states
|
|
becomes larger the further they are back in time.<br>
|
|
(*) Compression only works if 'Uncompressed size' is smaller than
|
|
'Buffer size'.
|
|
</td>
|
|
<td>-plr.tm.horizon<br>-dev.tm.horizon</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><b>Developer Settings</b> dialog <a name="DeveloperDebugger">(Debugger)</a></p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td valign="top"><img src="graphics/options_developer_debugger.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see <a href="#CommandLine">Command Line</a></th></tr>
|
|
<tr><td>Font size</td><td>Self-explanatory</td><td>-dbg.fontsize</td></tr>
|
|
<tr><td>Font style</td><td>Self-explanatory</td><td>-dbg.fontstyle</td></tr>
|
|
<tr><td>Debugger width/height</td><td>Self-explanatory</td><td>-dbg.res</td></tr>
|
|
<tr><td>Trap on 'ghost' reads</td><td>Defines whether the debugger should consider CPU 'ghost' reads for trap addresses.</td><td><span style="white-space:nowrap">-dbg.ghostreadstrap</span></td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
|
|
<p>Many more 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 <b>Keyboard Layout -
|
|
<a href="#DeveloperKeys">Developer Keys</a></b> for more information.</li>
|
|
|
|
<li>Commandline options influencing emulation state. See <b>Using the Command Line -
|
|
<a href="#DeveloperCommandLine">Developer Commands</a></b> for more information.</li>
|
|
|
|
<li>Viewing TIA/console information overlaid on the TIA image. This option
|
|
can be enabled from the command line or using the Alt-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 three 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>Effective emulation speed displayed as frames per second and user
|
|
defined emulation speed displayed as percentage relative to normal speed.</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>
|
|
</blockquote></br>
|
|
|
|
<h2><b><a name="UserData">User Data</a></b></h2>
|
|
<blockquote>
|
|
|
|
<p>Stella will remember when you change a setting or game property or save a
|
|
new high score. It will use saved data the next time you start the emulator.
|
|
The data is stored in an SQLite database which can be edited outside of
|
|
Stella (e.g. with
|
|
<a href="https://sqlitebrowser.org">DB Browser for SQLite</a>).</p>
|
|
|
|
<p>Settings can be changed either at the command line or while the emulation
|
|
is running. The database 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 user database.</p>
|
|
|
|
<p>To manually edit the settings, browse the data in the table of the same
|
|
name. The table has two columns. The first column contains the <i>setting</i>
|
|
command, which is the same as the one specified on the
|
|
<a href="#CommandLine"><b>Command Line</b></a> (without the '-' character).
|
|
The second column holds the <i>value</i>, which 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>Column <i>setting</i></th>
|
|
<th>Column <i>value</i></th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>-video opengl</td>
|
|
<td>video</td>
|
|
<td>opengl</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>-volume 75</td>
|
|
<td>volume</td>
|
|
<td>75</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>-center 1</td>
|
|
<td>center</td>
|
|
<td>1 (or true)</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>The database file is named <i>'stella.sqlite3'</i> and has a special,
|
|
non-configurable location depending on which version of Stella you use:</p>
|
|
|
|
<p><table cellpadding="4" border="1">
|
|
<tr>
|
|
<td><b>Linux/Unix</b></td>
|
|
<td><i>$HOME/.config/stella/</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Macintosh</b></td>
|
|
<td><i>$HOME/Library/Application Support/Stella/</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Windows</b></td>
|
|
<td><i>%APPDATA%\Stella\</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>If using 'basedir'<br>or 'baseinappdir'</b></td>
|
|
<td><i>_BASEDIR_/</i></td>
|
|
</tr>
|
|
</table>
|
|
</blockquote></br>
|
|
|
|
<p>
|
|
In addition to the <i>stella.sqlite3</i> file, there may also be a file
|
|
<i>stella.sqlite3-wal</i>. This file is part of the database and must not be deleted!
|
|
</p>
|
|
|
|
<h2><b><a name="Cheats">Cheatcode Manager</a></b></h2>
|
|
<blockquote>
|
|
|
|
<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 hexadecimal 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="https://web.archive.org/web/20071231164738/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 will depend on the version of Stella, as follows:</p>
|
|
|
|
<p><table cellpadding="4" border="1">
|
|
<tr>
|
|
<td><b>Linux/Unix</b></td>
|
|
<td><i>$HOME/.config/stella/stella.cht</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Macintosh</b></td>
|
|
<td><i>$HOME/Library/Application Support/Stella/stella.cht</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Windows</b></td>
|
|
<td><i>%APPDATA%\Stella\stella.cht</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>If using 'basedir'<br>or 'baseinappdir'</b></td>
|
|
<td><i>_BASEDIR_/stella.cht</i></td>
|
|
</tr>
|
|
</table>
|
|
<p>Stella will require a restart for changes to this file to take effect.</p>
|
|
</blockquote></br>
|
|
|
|
<h2><b><a name="Logs">Viewing the System Log</a></b></h2>
|
|
<blockquote>
|
|
|
|
<p>Stella maintains a log of its operations when the program first starts up, and
|
|
while it is running. In older releases, this information was only viewable from the
|
|
command line. However, the current release allows
|
|
you to see this information from within the UI. This can be selected from the main
|
|
Options menu, where it is labelled "System Logs". Clicking on the button will show
|
|
a window similar to the following:</p>
|
|
<table style="border:hidden">
|
|
<tr>
|
|
<td><img src="graphics/logs.png"></td>
|
|
<td style="border:hidden"> </td>
|
|
<td valign="top">
|
|
<table border="1" cellpadding="4">
|
|
<tr><th>Item</th><th>For more information,<br>see <a href="#CommandLine">Commandline</a></th></tr>
|
|
<tr><td>Log level</td><td>-loglevel</td></tr>
|
|
<tr><td>Print to console</td><td>-logtoconsole</td></tr>
|
|
</table>
|
|
<p></p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>The log levels are self-explanatory (None, Basic, Verbose). The "Print to console"
|
|
option emulates the behaviour of older versions of Stella, whereby the logged output
|
|
is also shown on the command line from which Stella was launched (if it was launched
|
|
in that fashion). Finally, the current contents of the system log can be saved to your
|
|
home directory by clicking the "Save log to disk" button.</p>
|
|
</blockquote></br>
|
|
|
|
<h2><b><a name="Properties">Game Properties</a></b></h2>
|
|
<blockquote>
|
|
|
|
<p>Stella uses game properties to specify the "best" emulator settings for a
|
|
game. As of version 2.2 of Stella, a default ROM database of properties are
|
|
built-in, but you may modify these through the <i>properties</i> table in the
|
|
user database or within the corresponding Game Properties dialogs.
|
|
This user database 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>Besides storing the properties in the <a href="#UserDB">User Database</a>,
|
|
you can create a property file per game using the `Export...` button in the
|
|
Game Properties dialog.
|
|
|
|
This property file consists of the properties for a single game. For example
|
|
the general format of a property file is:</p>
|
|
|
|
<p><pre>
|
|
; Comments
|
|
"Cart.MD5" "Value"
|
|
"Property#1" "Value"
|
|
"Property#2" "Value"
|
|
...</pre>
|
|
The <i>Cart.MD5</i> property must be defined, all other properties are optional.</p>
|
|
|
|
<p>
|
|
<h2><b>Properties</b></h2>
|
|
|
|
<p>Stella supports the properties described below:</p>
|
|
|
|
<h3><a name="EmulationProps"><b>Emulation Properties</b></a></h3>
|
|
<p>
|
|
<img src="graphics/options_gameinfo_emulation.png">
|
|
</p>
|
|
<table CELLSPACING="10">
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><a name="PropertiesCartType"><i>Cart.Type</i></a></td>
|
|
<td>Indicates the bankswitching type for the game.
|
|
The value of this property must be either <b>Auto</b> or one of the following
|
|
(for more information about bankswitching see Kevin Horton's <a href="http://kevtris.org/files/sizes.txt">2600 bankswitching
|
|
document</a> or the documentation in each cartridge's source code file) types. Types marked
|
|
as (¹) do currently have no reliable auto-detection, those marked as (²)
|
|
are not fully supported in the debugger.<br/>
|
|
Note: If 'Filter' is checked, only the bankswitching types matching the ROM size are listed.
|
|
<table cellpadding="2" border="1">
|
|
<tr><th> Type </th><th>Description</th><th>File Extension<br>(to force type)</th></tr>
|
|
<tr><td>03e0 </td><td>8K Brazilian Parker Bros</td><td>.03e, .03e0</td></tr>
|
|
<tr><td>0840 </td><td>8K EconoBanking</td><td>.084, .0840</td></tr>
|
|
<tr><td>0FA0 </td><td>8K Fotomania</td><td>.0FA, .0FA0</td></tr>
|
|
<tr><td>2IN1 ¹</td><td>4-64K Multicart (2 games)</td><td>.2N1 </td></tr>
|
|
<tr><td>4IN1 ¹</td><td>8-64K Multicart (4 games)</td><td>.4N1 </td></tr>
|
|
<tr><td>8IN1 ¹</td><td>16-64K Multicart (8 games)</td><td>.8N1 </td></tr>
|
|
<tr><td>16IN1 ¹</td><td>32-128K Multicart (16 games)</td><td>.16N, .16N1 </td></tr>
|
|
<tr><td>32IN1 ¹</td><td>64-128K Multicart (32 games)</td><td>.32N, .32N1 </td></tr>
|
|
<tr><td>64IN1 ¹</td><td>64/128K Multicart (64/128 games)</td><td>.64N, .64N1 </td></tr>
|
|
<tr><td>128IN1 ¹</td><td>256/512K Multicart (128/256 games)</td><td>.128, .128N1 </td></tr>
|
|
<tr><td>2K </td><td>32-2048 bytes Atari </td><td>.2K </td></tr>
|
|
<tr><td>3E </td><td>512K Tigervision + 32K RAM</td><td>.3E </td></tr>
|
|
<tr><td>3EX </td><td>512K Tigervision + 256K RAM</td><td>.3EX </td></tr>
|
|
<tr><td>3E+ </td><td>3E+ (TJ modified 3E) </td><td>.3EP, .3E+ </td></tr>
|
|
<tr><td>3F </td><td>512K Tigervision </td><td>.3F </td></tr>
|
|
<tr><td>4A50 ²</td><td>64K 4A50 + RAM </td><td>.4A5, .4A50 </td></tr>
|
|
<tr><td>4K </td><td>4K Atari </td><td>.4K </td></tr>
|
|
<tr><td>4KSC </td><td>CPUWIZ 4K + RAM </td><td>.4KS, .4KSC </td></tr>
|
|
<tr><td>AR ²</td><td>Supercharger </td><td>.AR </td></tr>
|
|
<tr><td>BF </td><td>CPUWIZ 256K </td><td>.BF </td></tr>
|
|
<tr><td>BFSC </td><td>CPUWIZ 256K + RAM</td><td>.BFS, .BFSC </td></tr>
|
|
<tr><td>BUS </td><td>Experimental</td><td>.BUS </td></tr>
|
|
<tr><td>CDF </td><td>Chris, Darrell, Fred (includes CDFJ/CDFJ+)</td><td>.CDF </td></tr>
|
|
<tr><td>CM ¹</td><td>Spectravideo CompuMate </td><td>.CM </td></tr>
|
|
<tr><td>CTY ²</td><td>CDW - Chetiry </td><td>.CTY </td></tr>
|
|
<tr><td>CV </td><td>CommaVid extra RAM </td><td>.CV </td></tr>
|
|
<tr><td>DF </td><td>CPUWIZ 128K </td><td>.DF </td></tr>
|
|
<tr><td>DFSC </td><td>CPUWIZ 128K + RAM</td><td>.DFS, .DFSC </td></tr>
|
|
<tr><td>DPC </td><td>Pitfall II </td><td>.DPC </td></tr>
|
|
<tr><td>DPC+</td><td>Enhanced DPC </td><td>.DPP, .DPC+ </td></tr>
|
|
<tr><td>E0 </td><td>8K Parker Bros </td><td>.E0 </td></tr>
|
|
<tr><td>E7 </td><td>8-16K M Network </td><td>.E7 .E78, .E78K</td></tr>
|
|
<tr><td>EF </td><td>64K Homestar Runner </td><td>.EF </td></tr>
|
|
<tr><td>EFSC </td><td>64K Homestar Runner + RAM</td><td>.EFS, .EFSC </td></tr>
|
|
<tr><td>F0 </td><td>Dynacom Megaboy </td><td>.F0 </td></tr>
|
|
<tr><td>F4 </td><td>32K Atari </td><td>.F4 </td></tr>
|
|
<tr><td>F4SC </td><td>32K Atari + RAM </td><td>.F4S, .F4SC </td></tr>
|
|
<tr><td>F6 </td><td>16K Atari </td><td>.F6 </td></tr>
|
|
<tr><td>F6SC </td><td>16K Atari + RAM </td><td>.F6S, .F6SC </td></tr>
|
|
<tr><td>F8 </td><td>8K Atari </td><td>.F8 </td></tr>
|
|
<tr><td>F8SC </td><td>8K Atari + RAM </td><td>.F8S, .F8SC </td></tr>
|
|
<tr><td>FA </td><td>CBS RAM Plus </td><td>.FA </td></tr>
|
|
<tr><td>FA2 </td><td>CBS RAM Plus 24/28K </td><td>.FA2 </td></tr>
|
|
<tr><td>FC </td><td>Amiga Power Play Aracde 16/32K </td><td>.FC </td></tr>
|
|
<tr><td>FE </td><td>8K Activision (aka SCABS)</td><td>.FE </td></tr>
|
|
<tr><td>GL ²</td><td>4 or 6K GameLine Master Module</td><td>.GL </td></tr>
|
|
<tr><td>JANE </td><td>16K Coleco (Tarzan) </td><td>.JAN, .JANE </td></tr>
|
|
<tr><td>MDM </td><td>Menu Driven Megacart </td><td>.MDM </td></tr>
|
|
<tr><td>MVC </td><td>Movie Cart</td><td>.MVC </td></tr>
|
|
<tr><td>SB </td><td>128-256K SUPERbanking </td><td>.SB </td></tr>
|
|
<tr><td>TVBOY</td><td>512K TV Boy (127 games)</td><td>.TVB, .TVBOY </td></tr>
|
|
<tr><td>UA </td><td>8K UA Ltd. </td><td>.UA </td></tr>
|
|
<tr><td>UASW </td><td>8K UA Ltd. (swapped banks)</td><td>.UASW </td></tr>
|
|
<tr><td>WD </td><td>Wickstead Design (Pink Panther) </td><td>.WD </td></tr>
|
|
<tr><td>WDSW </td><td>Wickstead Design (Pink Panther) (bad)</td><td>.WDSW </td></tr>
|
|
<tr><td>WF8 ¹</td><td>Coleco (some white carts)</td><td>.WF8 </td></tr>
|
|
<tr><td>X07</td><td>64K AtariAge </td><td>.X07 </td></tr>
|
|
</table></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cart.StartBank</i></td>
|
|
<td>Indicates which bank to use for reading the reset vector.</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</b> or one of the following. Types marked as (¹)
|
|
do currently have no reliable auto-detection. A format can be enforced
|
|
by using one of the following pattern in the filename.
|
|
<table cellpadding="2" border="1">
|
|
<tr><th> Format </th><th>Filename Pattern (to force format)</th></tr>
|
|
<tr><td>NTSC</td><td>NTSC, NTSC60, NTSC 60, NTSC-60, PAL-M</td></tr>
|
|
<tr><td>PAL</td><td>PAL, PAL50, PAL 50, PAL-50</td></tr>
|
|
<tr><td>SECAM ¹</td><td>SECAM, SECAM50, SECAM 50, SECAM-50</td></tr>
|
|
<tr><td>NTSC50 ¹</td><td>NTSC50, NTSC 50, NTSC-50, PAL-N</td></tr>
|
|
<tr><td>PAL60 ¹</td><td>PAL60, PAL 60, PAL-60</td></tr>
|
|
<tr><td>SECAM60 ¹</td><td>SECAM60, SECAM 60, SECAM-60</td></tr>
|
|
</table></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Display.VCenter</i></td>
|
|
<td>Indicates the offset for the vertical center of the display.
|
|
The value must be <i>n</i> such that -20 <= <i>n</i> <= 20.
|
|
</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 whatever is specified for tv.phosblend.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cart.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 mods. The value must be <b>Mono</b> or <b>Stereo</b>.</td>
|
|
</tr>
|
|
|
|
</table>
|
|
</br>
|
|
<!--
|
|
<p><b>Note:</b> Items marked as '*' are deprecated, and will probably be
|
|
removed in a future release.</p>
|
|
-->
|
|
<h3><a name="ConsoleProps"><b>Console Properties</b></a></h3>
|
|
<p>
|
|
<img src="graphics/options_gameinfo_console.png">
|
|
</p>
|
|
|
|
<table CELLSPACING="10">
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Console.TVType</i></td>
|
|
<td>Indicates the default television setting for the
|
|
game. The value must be <b>Color</b> or <b>BW</b>.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Console.LeftDiff</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.RightDiff</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>
|
|
</table>
|
|
</br>
|
|
|
|
<h3><a name="ControllerProps"><b>Controller Properties</b></a></h3>
|
|
<p>
|
|
<img src="graphics/options_gameinfo_controller.png">
|
|
</p>
|
|
<table CELLSPACING="10">
|
|
<tr>
|
|
<td VALIGN="TOP">
|
|
<i>Controller.Left</i><br>
|
|
<i>Controller.Right</i><br>
|
|
</td>
|
|
<td>Indicates what type of controller the left and right player
|
|
uses. The value must be either <b>Auto</b> or one of the following types. Types marked
|
|
as (¹) do not have auto-detection yet.
|
|
<table cellpadding="2" border="1">
|
|
<tr><th> Type </th><th>Description</th></tr>
|
|
<tr><td>Joystick</td><td>Atari's famous black joystick that was originally included with the system.</td></tr>
|
|
<tr><td>BoosterGrip ¹</td><td>A controller add-in that plugs directly into the joystick port and provides a pass-through for the joystick. In doing so, it provides the two independent buttons.</td></tr>
|
|
<tr><td>Paddles </td><td>Standard paddle controllers for use with games such as Breakout and Warlords. One pair of controller per connector (allows for 4-player Warlords).</td></tr>
|
|
<tr><td>Paddles_IAxis ¹</td><td>Same as Paddles, except the axes are inverted.</td></tr>
|
|
<tr><td>Paddles_IAxDr ¹</td><td>Same as Paddles, except both the axes and direction of movement are inverted.</td></tr>
|
|
<tr><td>Driving ¹ </td><td>Looks like a paddle, but allows 360° movement. Only one unit per connector, unlike paddles which were sold in pairs.</td></tr>
|
|
<tr><td>Keyboard</td><td>Also known as the Star Raiders controller, functionally identical to the Kid's Controller and Keyboard Controller. Game included an overlay with commands, for use with Star Raiders.</td></tr>
|
|
<tr><td>AmigaMouse</td><td>Commodore Amiga computer mouse.</td></tr>
|
|
<tr><td>AtariMouse</td><td>Atari ST computer mouse.</td></tr>
|
|
<tr><td>Trakball</td><td>Standard Atari 2600 CX22/CX80 'Trak-Ball' controller.</td></tr>
|
|
<tr><td><a href="https://atariage.com/store/index.php?l=product_detail&p=1045">AtariVox ¹</a></td><td>A SpeakJet based unlimited-vocabulary speech/sound synthesizer with 32K EEPROM.</td></tr>
|
|
<tr><td>SaveKey</td><td>A 32K EEPROM for saving high scores, etc. (the EEPROM portion of an AtariVox).</td></tr>
|
|
<tr><td>Genesis </td><td>Sega Genesis controller, which can be used similar to a Booster Grip, giving an extra button.</td></tr>
|
|
<tr><td>Joy2B+ </td><td><a href="https://github.com/ascrnet/Joy2Bplus">Joy 2B+</a> controller, which can be used similar to a Booster Grip, giving two extra buttons.</td></tr>
|
|
<tr><td>CompuMate ¹</td><td>Spectravideo CompuMate (if either left or right is set, CompuMate is used for both).</td></tr>
|
|
<tr><td>Lightgun</td><td>Atari XG-1 compatible Light Gun.</td></tr>
|
|
<tr><td>MindLink ¹</td><td>MindLink controller.</td></tr>
|
|
<tr><td>KidVid</td><td>Kid Vid Voice Module.</br>
|
|
Audio files can be downloaded e.g. from <a href="https://www.atariage.com/2600/archives/KidVidAudio/">AtariAge</a>.
|
|
Put unzipped .WAV files into Stella's base directory (see properties
|
|
or palette files below for details).</br>
|
|
Note: Stella supports playing the games without audio files too.
|
|
</td></tr>
|
|
<tr><td>QuadTari</td><td><a href="#Quadtari">QuadTari</a> controller, limited support (see below).</td></tr>
|
|
</table></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 of the Lost Ark' where the
|
|
1st player's 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.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 left paddle B, not
|
|
left paddle A. Other ROMs such as 'Tac-Scan' default to right paddle B,
|
|
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>Controller.PaddlesXCenter</i></td>
|
|
<td>Defines the horizontal center of the paddles (range -10..30).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Controller.PaddlesYCenter</i></td>
|
|
<td>Defines the vertical center of the paddles (range -10..30).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Controller.MouseAxis</i></td>
|
|
<td>Indicates how the mouse should emulate virtual controllers.
|
|
In 'Auto' mode, the system decides how to best use the mouse. Otherwise,
|
|
XY indicates how to use the X/Y axis (ie, 02 is paddle0/paddle2).
|
|
Currently, the mouse X-axis and left button are tied together, as are the
|
|
Y-axis and right button. The value must be <b>Auto</b> or <b>XY</b>, as follows:
|
|
<table cellpadding="2" border="1">
|
|
<tr><th> Id </th><th>Controller</th></tr>
|
|
<tr><td>0 </td><td>Left Paddle A</td></tr>
|
|
<tr><td>1 </td><td>Left Paddle B</td></tr>
|
|
<tr><td>2 </td><td>Right Paddle A</td></tr>
|
|
<tr><td>3 </td><td>Right Paddle B</td></tr>
|
|
<tr><td>4 </td><td>Left Driving</td></tr>
|
|
<tr><td>5 </td><td>Right Driving</td></tr>
|
|
<tr><td>6 </td><td>Left MindLink</td></tr>
|
|
<tr><td>7 </td><td>Right MindLink</td></tr>
|
|
</table>
|
|
An <I>optional</I> second parameter (default of 100) indicates how much
|
|
of the paddle range the mouse should emulate.
|
|
</td>
|
|
</tr>
|
|
|
|
<!--
|
|
In the latter case, XY indicates
|
|
how to use the X/Y axis (ie, 02 is paddle0/paddle2).
|
|
-->
|
|
</table>
|
|
</br>
|
|
|
|
<h3><a name="Quadtari"><b>QuadTari Properties</b></h3></a>
|
|
<p>
|
|
<img src="graphics/options_gameinfo_quadtari.png">
|
|
</p>
|
|
<table CELLSPACING="10">
|
|
<tr>
|
|
<td VALIGN="TOP">
|
|
<i>Controller.Left1</i><br>
|
|
<i>Controller.Left2</i><br>
|
|
<i>Controller.Right1</i><br>
|
|
<i>Controller.Right2</i><br>
|
|
</td>
|
|
<td>Indicates which controllers are plugged into one of the four QuadTari ports.
|
|
The value must be one of the following types.
|
|
<table cellpadding="2" border="1">
|
|
<tr><th> Type </th><th>Description</th></tr>
|
|
<tr><td>Joystick</td><td>Atari's famous black joystick that was originally included with the system.</td></tr>
|
|
<tr><td>Paddles </td><td>Standard paddle controllers, only (up to 8) fire buttons supported for QuadTari.</td></tr>
|
|
<tr><td>Driving</td><td>Looks like a paddle, but allows 360° movement. Only one unit per connector, unlike paddles which were sold in pairs.</td></tr>
|
|
<tr><td><a href="https://atariage.com/store/index.php?l=product_detail&p=1045">AtariVox</a></td><td>A SpeakJet based unlimited-vocabulary speech/sound synthesizer with 32K EEPROM.</td></tr>
|
|
<tr><td>SaveKey</td><td>A 32K EEPROM for saving high scores, etc. (the EEPROM portion of an AtariVox).</td></tr>
|
|
</table></td>
|
|
</tr>
|
|
</table>
|
|
</br>
|
|
|
|
<h3><a name="CartridgeProps"><b>Cartridge Properties</b></h3></a>
|
|
<p>
|
|
<img src="graphics/options_gameinfo_cartridge.png">
|
|
</p>
|
|
<table CELLSPACING="10">
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cart.Name</i></td>
|
|
<td>Indicates the actual name of the game. When you save snapshots,
|
|
load/save state files, or use the <a href="#ROMAudit"><b>ROM Audit Mode</b></a> functionality,
|
|
this is the name that will be used for the respective file(s).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cart.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>Cart.Manufacturer</i></td>
|
|
<td>Indicates the game's manufacturer.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cart.ModelNo</i></td>
|
|
<td>Indicates the manufacturer's model number for the game.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cart.Rarity</i></td>
|
|
<td>Indicates how rare a cartridge is, based on the scale described on AtariAge.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cart.Note</i></td>
|
|
<td>Contains any special notes about playing the game.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cart.Url</i></td>
|
|
<td>Defines a website link, e.g. for additional information or to the AtariAge store.
|
|
Click the ">>" button to open the website.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Bezel.Name</i></td>
|
|
<td>Defines the file name (without suffix) used for loading the bezel
|
|
image. If the name fails or is not defined, the cart name is used. If
|
|
that fails too, 'default.png' is tried. If no image can be found, no
|
|
bezel is displayed.
|
|
</br>Note: The bezel images should reside in their own directory, separate from the launcher images. </td>
|
|
</tr>
|
|
</table>
|
|
|
|
<h3><a name="HighScoreProps"><b>High Scores Properties</b></h3></a>
|
|
<p>
|
|
<img src="graphics/options_gameinfo_highscores.png">
|
|
</p>
|
|
<table CELLSPACING="10">
|
|
<tr>
|
|
<td VALIGN="TOP"><i>Cart.Highscore</i></td>
|
|
<td>Contains the high score definition data as JSON string.</br>
|
|
<p>It can be defined in the 'High Scores Properties' dialog as follows:</p>
|
|
<table cellpadding="2" border="1">
|
|
<tr><th> Item </th><th>Description</th></tr>
|
|
<tr><td>Enable High Scores</td><td>Check to enable high score definitions.</td></tr>
|
|
<tr><td>Variations</td><td>Defines the number of game variations.
|
|
If the number is set to 1, the following variation definitions are not required.</td></tr>
|
|
<tr><td>Address</td><td>Defines the address (in hex format) where the variation number is stored.</td></tr>
|
|
<tr><td>BCD</td><td>Defines whether the variation number is stored as decimal or BCD.</td></tr>
|
|
<tr><td>0-based</td><td>Defines whether the variation number is stored zero-based.</td></tr>
|
|
<tr><td>Digits</td><td>Select the number of score digits displayed.</td></tr>
|
|
<tr><td>0-digits</td><td>Select the number of trailing score digits which are fixed to 0.</td></tr>
|
|
<tr><td>BCD</td><td>Defines whether the score is stored as decimal or BCD.</td></tr>
|
|
<tr><td>Invert</td><td>Inverts the score ordering. Check if a lower score (e.g. a timer) is better.</td></tr>
|
|
<tr><td>Addresses</td><td>Defines the addresses (in hex format, highest byte first) where the score is stored.
|
|
The number of addresses required is defined by the number of digits and trailing, fixed 0-digits.</td></tr>
|
|
<tr><td>Special</td><td>Defines a short label (up to 5 chars) for the optional, game's special value (e.g. 'Level', 'Wave', 'Round'...).
|
|
If no label is defined, the following special definitions are not required.</td></tr>
|
|
<tr><td>Address</td><td>Defines the address (in hex format) where the special number is stored.</td></tr>
|
|
<tr><td>BCD</td><td>Defines whether the special number is stored as decimal or BCD.</td></tr>
|
|
<tr><td>0-based</td><td>Defines whether the special number is stored is stored zero-based.</td></tr>
|
|
<tr><td>Note</td><td>Allows defining some free text which explains the high scores properties.</td></tr>
|
|
</table>
|
|
<p>To find the required definition values, you can use Stella's built-in <a href="debugger.html">debugger</a>.
|
|
Please share your results, so that we can extend the <b><a href="#HighScoreGames">list</a></b> of supported games.</p>
|
|
<p>Note: To verify the definitions, the current values of the addresses and the resulting score are displayed.</p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>The buttons at the bottom of the dialogs work as follows:
|
|
<ul>
|
|
<li><b>Defaults</b>: Reset the properties to those built into Stella.</li>
|
|
<li><b>Export</b>: Export the properties for the <i>currently selected ROM only</i>
|
|
to a properties file in the user's default storage directory.</li>
|
|
<li><b>OK</b>: Merge/commit any changes into the ROM properties database, which
|
|
contains info of all ROMs.</li>
|
|
<li><b>Cancel</b>: Revert any changes in the dialog and cancel the operation.</li>
|
|
</ul>
|
|
|
|
<p>The name of the properties file will depend on the version of Stella, as follows:</p>
|
|
|
|
<p><table cellpadding="4" border="1">
|
|
<tr>
|
|
<td><b>Linux/Unix</b></td>
|
|
<td><i>$HOME/.config/stella/stella.pro</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Macintosh</b></td>
|
|
<td><i>$HOME/Library/Application Support/Stella/stella.pro</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Windows</b></td>
|
|
<td><i>%APPDATA%\Stella\stella.pro</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>If using 'basedir'<br>or 'baseinappdir'</b></td>
|
|
<td><i>_BASEDIR_/stella.pro</i></td>
|
|
</tr>
|
|
</table>
|
|
<p>Note: For manual changes to the property files Stella will require a restart to take effect.</p>
|
|
</blockquote></br>
|
|
|
|
<h2><b><a name="Palette">Palette Support</a></b></h2>
|
|
<blockquote>
|
|
|
|
<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="4" 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>
|
|
<tr>
|
|
<td><b>custom</b></td>
|
|
<td>A palette generate from user-defined phase shift.</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>A user-defined palette has certain restrictions, 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 will depend on the version of Stella, as follows:</p>
|
|
|
|
<p><table cellpadding="4" border="1">
|
|
<tr>
|
|
<td><b>Linux/Unix</b></td>
|
|
<td><i>$HOME/.config/stella/stella.pal</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Macintosh</b></td>
|
|
<td><i>%HOME/Library/Application Support/Stella/stella.pal</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Windows</b></td>
|
|
<td><i>%APPDATA%\Stella\stella.pal</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>If using 'basedir'<br>or 'baseinappdir'</b></td>
|
|
<td><i>_BASEDIR_/stella.pal</i></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>
|
|
</blockquote>
|
|
|
|
</br><h2><b><a name="HighScoreGames">High Scores - supported games</a></b></h2>
|
|
<blockquote>
|
|
The following games (incl. TV system variations and many hacks, excluding
|
|
prototypes) are currently configured to save high scores.
|
|
|
|
<h3>Classic games</h3>
|
|
<ul>
|
|
<li>Asteroids (Atari)</li>
|
|
<li>Atlantis (Imagic)</li>
|
|
<li>Barnstorming (Activision)</li>
|
|
<li>Beamrider (Activision)</li>
|
|
<li>Berzerk (Atari)</li>
|
|
<li>Breakout (Atari)</li>
|
|
<li>Centipede (Atari)</li>
|
|
<li>Chopper Comand (Activision)</li>
|
|
<li>Circus Atari (Atari)</li>
|
|
<li>Cosmic Ark (Imagic)</li>
|
|
<li>Decathlon (Activision)</li>
|
|
<li>Defender 2/Stargate (Atari)</li>
|
|
<li>Demon Attack (Imagic)</li>
|
|
<li>Dig Dug (Atari)</li>
|
|
<li>Donkey Kong (Coleco)</li>
|
|
<li>Dragster (Activision)</li>
|
|
<li>Elk Attack (Atari)</li>
|
|
<li>Enduro (Activision)</li>
|
|
<li>Frogger (Parker Bros)</li>
|
|
<li>Frostbite (Activision)</li>
|
|
<li>Galaxian (Atari)</li>
|
|
<li>Gigolo/Cathouse Blues (Mystique)</li>
|
|
<li>Grand Prix (Activision)</li>
|
|
<li>Gremlins (Atari)</li>
|
|
<li>H.E.R.O. (Activision)</li>
|
|
<li>Halloween (Wizard Video Games)</li>
|
|
<li>Jr. Pac-Man (Atari)</li>
|
|
<li>Jungle Hunt (Atari)</li>
|
|
<li>Kaboom! (Activision)</li>
|
|
<li>Keystone Kapers (Activision)</li>
|
|
<li>Mario Bros. (Atari)</li>
|
|
<li>MegaMania (Activision)</li>
|
|
<li>Millipede (Atari)</li>
|
|
<li>Missile Command (Atari)</li>
|
|
<li>Moon Patrol (Atari)</li>
|
|
<li>Ms. Pac-Man (Atari)</li>
|
|
<li>Phoenix (Atari)</li>
|
|
<li>Pitfall! (Activision)</li>
|
|
<li>Pitfall II (Activision)</li>
|
|
<li>Q-Bert (Atari)</li>
|
|
<li>Seaquest (Activision)</li>
|
|
<li>Sky Jinks (Activision)</li>
|
|
<li>Solaris (Atari)</li>
|
|
<li>Space Invaders (Atari)</li>
|
|
<li>Spider-Man (Parker Bros)</li>
|
|
<li>Stampede (Activision)</li>
|
|
<li>Star Wars - The Arcade Game (Parker Bros)</li>
|
|
<li>Star Wars - The Empire Strikes Back (Parker Bros)</li>
|
|
<li>StarMaster (Activision)</li>
|
|
<li>Super Breakout (Atari)</li>
|
|
<li>Superman (Atari)</li>
|
|
<li>Vanguard (Atari)</li>
|
|
<li>Yars' Revenge (Atari)</li>
|
|
</ul>
|
|
<h3>Homebrews</h3>
|
|
<ul>
|
|
<li>Conquest of Mars (ChampGames, John W. Champeau)</li>
|
|
<li>Draconian (SpiceWare, Darrell Spice Jr.)</li>
|
|
<li>Lady Bug (ChampGames, John W. Champeau)</li>
|
|
<li>Oystron (Piero Cavina)</li>
|
|
<li>Qb (Andrew Davie)</li>
|
|
<li>Seawolf (Manuel Rotschkar)</li>
|
|
<li>Star Fire (Manuel Rotschkar)</li>
|
|
<li>Stay Frosty 2 (SpiceWare, Darrell Spice Jr.)</li>
|
|
<li>SWOOPS! (Thomas Jentzsch)</li>
|
|
<li>Ultra SCSIcide (Joe Grand)</li>
|
|
</ul>
|
|
<p>Everyone is more than welcome to help us to fill the gaps by defining more
|
|
games.</p>
|
|
</blockquote>
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="Acknowledgments">Acknowledgments</a></h1>
|
|
<hr>
|
|
|
|
<p>Bradford W. Mott started developing Stella during the fall of 1995, and Stephen
|
|
Anthony has maintained the project since around 2004. Over the years, 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. A (likely incomplete) list of the people who have
|
|
played a part in bringing Stella to you is available on the main Stella
|
|
webpage <a href="https://stella-emu.github.io/credits.html">Credits List</a>.
|
|
If we've missed someone, please let us know.</p>
|
|
|
|
|
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
|
<br><br>
|
|
<p><h1>
|
|
<a name="License">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>
|