index.html 179 KB
Newer Older
1
<html>
2
<head>
3
<title>Stella - A multi-platform Atari 2600 VCS emulator</title>
4
<meta name="AppleTitle" content="docs">
5
6
7
8
9
10
11
12
13
<style>
  table, th, td {
    border: 1px solid;
    padding: 4px;
    padding-left: 8px;
    padding-right: 8px;
    border-collapse: collapse;
  }
</style>
14
</head>
15
16
17

<body bgcolor="#FFFFFF">

18
19
20
  <center><b><font size="7">Stella</font></b></center>
  <br><br>
  <center><h2><b>A multi-platform Atari 2600 VCS emulator</b></h2></center>
21

22
  <center><h4><b>Release 6.2.1</b></h4></center>
23
  <br><br>
24

25
  <center><h2><b>User's Guide</b></h2></center>
26
  <br>
27

28
  <h2>Contents</h2>
29
  <ul>
30
31
    <li><a href="#History">A Brief History of the Atari 2600</a></li>
    <li><a href="#Introduction">Introduction</a><br>
32
33
      <ul><li><a href="#Features">Features</a></li></ul>
    </li>
34
    <li><a href="#QuickStart">Getting Started</a><br>
35
      <ul>
36
37
        <li><a href="#Requirements">Requirements</a></li>
        <li><a href="#Installation">Installation</a></li>
thrust26's avatar
thrust26 committed
38
        <li><a href="#Games">Locating Game Images (aka ROMs)</a></li>
39
40
        <li><a href="#Playing">Playing a Game</a></li>
        <li><a href="#Keyboard">Keyboard Layout</a></li>
41
        <li><a href="#Hotkeys">Hotkeys</a></li>
42
        <li><a href="#ControlMap">Controller Map</a></li>
43
        <li><a href="#TimeMachine">Stella's 'Time Machine'</a></li>
44
45
      </ul>
    </li>
46
    <li><a href="#Advanced">Advanced Configuration</a><br>
47
      <ul>
48
49
        <li><a href="#CommandLine">Using the Command Line</a></li>
        <li><a href="#Options">Changing Options</a></li>
thrust26's avatar
thrust26 committed
50
        <li><a href="#Remapping">Event Remapping/Input Devices</a></li>
51
        <li><a href="#ROMInfo">ROM Launcher</a></li>
thrust26's avatar
thrust26 committed
52
53
        <ul>
          <li><a href="#ROMInfoViewer">ROM Launcher Viewer</a></li>
54
          <li><a href="#ROMLauncherContextMenu">ROM Launcher Context Menu</a></li>
thrust26's avatar
thrust26 committed
55
        </ul>
56
        <li><a href="#ROMAudit">ROM Audit Mode</a></li>
57
        <li><a href="#Adaptor">Stelladaptor/2600-daptor Support</a></li>
58
59
60
61
        <li><a href="#AtariVox">AtariVox/SaveKey Support</a></li>
        <li><a href="#Debugger">Developer Options/Integrated Debugger</a></li>
        <li><a href="#Settings">Settings File</a></li>
        <li><a href="#Cheats">Cheatcode Manager</a></li>
62
        <li><a href="#Logs">Viewing the System Log</a></li>
63
64
        <li><a href="#Properties">Game Properties</a></li>
        <li><a href="#Palette">Palette Support</a></li>
65
66
      </ul>
    </li>
67
68
    <li><a href="#Acknowledgments">Acknowledgments</a></li>
    <li><a href="#License">License and Disclaimer</a></li>
69
  </ul>
70

71
  <br><br><br>
72

thrust26's avatar
thrust26 committed
73
  <center><b>February 1999 - June 2020</b></center>
74
    <center><b>The Stella Team</b></center>
75
  <center><b><a href="https://stella-emu.github.io">Stella Homepage</a></b></center>
76

77
  <br>
78

79
<!-- /////////////////////////////////////////////////////////////////////////  -->
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
  <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
165
  X-Rated games for the 2600 called Mystique. The year was financially successful
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
  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>
238

239
240

<!-- /////////////////////////////////////////////////////////////////////////  -->
241
242
243
244
245
246
247
  <br><br>
  <p><h1>
  <a name="Introduction">Introduction</a></h1>
  <hr>

  <p>
  Stella is a freely distributed multi-platform Atari 2600 VCS emulator; originally
248
249
  developed for Linux by Bradford W. Mott, it is now maintained by Stephen Anthony.
  Stella allows you to enjoy all of
250
  your favorite 2600 games once again by emulating the 2600's hardware with
thrust26's avatar
thrust26 committed
251
252
  software. Stella is written in C++, which allows it to be ported to other
  operating systems and architectures. Since its original release Stella has
253
  been ported to AcornOS, AmigaOS, DOS, FreeBSD, Linux, MacOS, OpenStep, OS/2,
254
    Unix, and Windows, as well as consoles such as Sega Dreamcast, GP2X, Nintendo
255
256
257
258
259
260
261
262
  DS and Playstation Portable (among others).
  </p>

  <p>
  </h1>
  <h2><b><a name="Features">Features</a></b></h2>

  <ul>
263
    <li>High speed emulation using optimized C++14 code</li>
Stephen Anthony's avatar
Stephen Anthony committed
264
    <li>Supports high quality TIA emulation using the cycle-exact TIA core from
265
266
      <a href="https://github.com/6502ts/6502.ts">6502.ts</a> by
      Christian Speckner</li>
267
    <li>Supports high quality sound emulation using code derived from Chris Brenner's
Stephen Anthony's avatar
Stephen Anthony committed
268
      Atari 2600 FPGA project, including cycle-exact audio, analog interference
269
270
      from mixing of audio channels, as well as stereo sound support; dynamic
      sound resampling is also included</li>
271
272
    <li>Emulates the Atari 2600 Joystick Controllers using your computer's keyboard,
      joysticks or mouse</li>
273
274
275
    <li>Emulates the Atari 2600 Keyboard Controllers using your computer's keyboard</li>
    <li>Emulates the Atari 2600 Paddle Controllers using your computer's mouse, keyboard
      or joysticks</li>
276
277
278
279
    <li>Emulates the Atari 2600 Driving Controllers using your computer's keyboard,
      joysticks or mouse</li>
    <li>Emulates the CBS BoosterGrip Controller using your computer's keyboard,
      joysticks or mouse</li>
280
281
    <li>Emulates the Sega Genesis Controller using your computer's keyboard,
      joysticks or mouse</li>
282
    <li>Emulates CX22/CX80 style trackballs and Amiga/Atari Mouse using your
283
      computer's mouse</li>
284
    <li>Emulates <a href="http://en.wikipedia.org/wiki/CompuMate">Spectravideo CompuMate</a> system using your computer's keyboard,
285
      including mapping of CompuMate 'Backspace', 'Space' and 'Enter' functionality to
286
      to the actual keys on your keyboard</li>
thrust26's avatar
thrust26 committed
287
    <li>Emulates the Mindlink Controller and the Light Gun using your computer's mouse</li>
288
  <li>Supports autodetection for most common controller types</li>
289
    <li>Support for real Atari 2600 controllers using the
290
      <a href="http://www.grandideastudio.com/portfolio/stelladaptor-2600">Stelladaptor</a> and
thrust26's avatar
thrust26 committed
291
      <a href="http://2600-daptor.com">2600-daptor/2600-daptor II</a></li>
292
    <li>Support for the speech portion of a real
293
      <a href="http://atariage.com/store/index.php?l=product_list&c=98">
294
      AtariVox</a> device connected to your PC using a USB adaptor</li>
295
    <li>Supports EEPROM emulation for <a href="http://atariage.com/store/index.php?l=product_list&c=98">
296
297
      AtariVox</a> and <a href="http://www.vectrex.biz/MemCard.htm">SaveKey</a> controllers,
      as well as FLASH support in various cartridge schemes</li>
298
    <li>Supports all known bankswitching schemes (let us know if there's one we missed)</li>
thrust26's avatar
thrust26 committed
299
    <li>Supports DPC+/CDF(J) bankswitching schemes from the <a href="http://harmony.atariage.com">Harmony Cart</a>,
stephena's avatar
stephena committed
300
      including <a href="http://thumbulator.blogspot.ca">partial emulation of the ARM processor</a></li>
301
    <li>Supports cartridge autodetection for almost all bankswitching schemes</li>
302
    <li>Supports using ROM filename extensions to force specific bankswitching schemes</li>
303
    <li>Supports using ROM filename to force specific display formats</li>
304
    <li>Supports Supercharger single-load and multi-load games</li>
thrust26's avatar
thrust26 committed
305
    <li>Supports ROMs stored in ZIP and GZIP format, as well as the usual raw A26/BIN/ROM formats</li>
306
307
308
    <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>
Stephen Anthony's avatar
Stephen Anthony committed
309
    <li>Supports most "undocumented features" of the TIA graphics chip used by
310
311
      some games</li>
    <li>TIA emulation supports full collision checking, with ability to disable
thrust26's avatar
thrust26 committed
312
      TIA sprites and collisions for each object separately</li>
stephena's avatar
stephena committed
313
    <li>Full system state save/load functionality</li>
thrust26's avatar
thrust26 committed
314
    <li>Automatic save state creation ('Time Machine') which allows moving back and forth in the recorded timeline</li>
stephena's avatar
stephena committed
315
    <li>Cross-platform UI including a built-in ROM launcher frontend</li>
316
    <li>Built-in extensive debugger, including static analysis with the Distella disassembler
317
      and dynamic analysis at runtime by tracking code/graphics/data sections, and
318
      generation of DASM-compatible disassembly files</li>
319
320
    <li>Emulation of CRT TV systems using <a href="http://slack.net/~ant/libs/ntsc.html">
      Blargg filtering</a>, including presets for several common TV outputs
321
      (Composite, S-Video, RGB, etc.), and ability to fully customize
thrust26's avatar
thrust26 committed
322
      many attributes (contrast, brightness, saturation, gamma, etc.).</li>
323
324
325
    <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>
326
  </ul>
327

328
329

<!-- /////////////////////////////////////////////////////////////////////////  -->
330
331
332
333
  <br><br>
  <p><h1>
  <a name="QuickStart">Getting Started</a></h1>
  <hr>
334

335
  <h2><b><a name="Requirements">Requirements</a></b></h2>
336

337
  <blockquote>
338
339
340
341
342
343
  <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>
344
    <li>SDL version 2.0.3 or greater, latest version highly recommended</li>
345
    <li>15/16 bit color minimum; 24/32 bit color graphics card highly recommended</li>
346
    <li>Enough RAM for the OS + 256MB RAM for the emulation; 512MB+ highly recommended</li>
347
    <li>Joysticks or gamepads are highly recommended</li>
thrust26's avatar
thrust26 committed
348
349
    <li>Mouse or <a href="http://www.grandideastudio.com/portfolio/stelladaptor-2600">Stelladaptor</a>/<a href="http://2600-daptor.com">2600-daptor</a>
    with real paddles required for paddle emulation</li>
thrust26's avatar
thrust26 committed
350
    <li>Some ROM images (see <a href="http://www.atariage.com">AtariAge</a> for more information)</li>
351
352
353
354
355
356
357
358
  </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>
359
    <li>OpenGL capable video card</li>
thrust26's avatar
thrust26 committed
360
    <li>Other architectures (MIPS, PPC, PPC64, etc.) have been confirmed to work,
361
      but aren't as well tested as i386/x86_64</li>
362
    <li>GNU g++ v/6 or Clang v/3.9 (with C++14 support) and the make utility are required for compiling the Stella source code</li>
363
364
365
366
367
368
369
370
  </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>
371
    <li>macOS 10.7 or above</li>
372
    <li>64-bit Intel processor</li>
373
    <li>OpenGL capable video card</li>
374
    <li>Xcode 8.0 is required to compile the Stella source code</li>
375
376
377
378
379
  </ul>

  <p>
  <h3><b><u>Windows</u></b></h3>

380
  <p>The Windows version of Stella is designed to work on Windows Vista/7/8/10
381
382
383
  with the following:</p>

  <ul>
384
    <li>Direct3D or OpenGL capable video card</li>
385
    <li>Visual C++ 2017/2019 Community is required to compile the Stella source code</li>
386
387
388
389
390
391
  </ul>

  <p>
  <h3><b><u>Other</u></b></h3>

  <p>Stella is extremely portable, and in its lifetime has been ported to almost every
392
  platform where the SDL library exists. It is 32/64-bit and endian clean in Linux/Unix, macOS
thrust26's avatar
thrust26 committed
393
  and Windows. The Stella Team is interested in hearing about any problems you may
394
  encounter with diverse operating systems and CPU types.</p>
395
  </blockquote></br>
396

397
  <h2><b><a name="Installation">Installation</a></b></h2>
398
399

  <blockquote>
thrust26's avatar
thrust26 committed
400
401
  <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
402
403
404
405
406
407
408
409
  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)
410
      <ul>
411
412
        <li>Install the binary DEB with the following command:
          <pre>   dpkg -i stella-<i>release</i>-1_arch.deb</pre></li>
413
      </ul>
414
415
    </li>
    <li><b>Binary RPM</b> (stella-<i>release</i>-1.arch.rpm)
416
      <ul>
417
418
        <li>Install the binary RPM with the following command:
          <pre>   rpm -Uvh stella-<i>release</i>-1.arch.rpm</pre></li>
419
      </ul>
420
    </li>
421
    <li><b>Building and installing from source code</b>
422
    <ul>
423
      <li>See the developers build instructions at the
424
      <a href="https://stella-emu.github.io/development.html">Stella Development Page</a>.
425
426
427
428
429
430
431
    </ul>
    </li>
  </ul>

  <p>
  <h3><b><u>Macintosh</u></b></h3>
  <ul>
432
    <li><b>Binary DMG file</b> (Stella-<i>release</i>-macos.dmg)
433
      <ul>
434
        <li>Double-click the disk image, open the 'Stella' folder, then copy the
435
        <b>Stella.app</b> package to your 'Applications' folder.</li>
436
      </ul>
437
    </li>
438
439
440
441
    <br/>
    <li><b>Building and installing from source code</b>
    <ul>
      <li>See the developers build instructions at the
442
      <a href="https://stella-emu.github.io/development.html">Stella Development Page</a>.
443
    </ul>
444
445
446
447
448
449
450
451
452
453
454
    </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>
455
    <br/>
456
457
458
459
460
461
    <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>
462
463
464
465
    <br/>
    <li><b>Building and installing from source code</b>
    <ul>
      <li>See the developers build instructions at the
466
      <a href="https://stella-emu.github.io/development.html">Stella Development Page</a>.
467
    </ul>
468
469
    </li>
  </ul>
470
  </blockquote></br>
471

thrust26's avatar
thrust26 committed
472
  <h2><b><a name="Games">Locating Game Images (aka ROMs)</a></b></h2>
473

474
  <blockquote>
475
476
  <p>
  <h3><b><u>Cartridges</u></b></h3>
477

thrust26's avatar
thrust26 committed
478
  <p>Most games for the Atari 2600 came on cartridges. A cartridge usually
479
  consists of a single Read Only Memory (ROM) chip which contains the data and
thrust26's avatar
thrust26 committed
480
  code for the game. Plugging a cartridge into the Atari 2600 allows the 2600's
481
  microprocessor to access the program stored on the cartridge.</p>
482

483
  <p>In a similar way you must "plug" a copy of a cartridge into Stella when you
thrust26's avatar
thrust26 committed
484
  want to play it. Having a ROM image/BIN file of the cartridge allows you to
thrust26's avatar
thrust26 committed
485
486
  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
487
  cartridge:</p>
488

489
490
  <p><ul>
    <li>Search around the internet and find ROM images to download (websites such
491
      as <a href="http://atariage.com">AtariAge</a> and
492
      <a href="http://www.atarimania.com/rom_collection_archive_atari_2600_roms.html">
thrust26's avatar
thrust26 committed
493
      AtariMania/RomHunter</a> may be useful). Many homebrewers make their ROMs available too.</li>
494

495
496
    <li>You can purchase the Atari 2600 Action Packs by Activision and use
    their ROM images</li>
497

498
    <li>If you're handy with a soldering iron then you can design and build a
Stephen Anthony's avatar
Stephen Anthony committed
499
    device that plugs into a PC and read the data from the cartridge</li>
500
  </ul>
501

Stephen Anthony's avatar
Stephen Anthony committed
502
503
  <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>
504

505
506
  <p>
  <h3><b><u>Supercharger Cassettes</u></b></h3>
507

508
509
510
  <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
thrust26's avatar
thrust26 committed
511
  standard audio cassette player. The Supercharger also supported multi-loading,
512
  which allowed games to be broken into several segments and loaded at different
thrust26's avatar
thrust26 committed
513
  times. This was useful for large games which had distinct parts such as role
514
  playing games.</p>
515

516
517
518
  <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
thrust26's avatar
thrust26 committed
519
  them which indicates what load they are. The sequence starts with zero, skips
520
  a few numbers and then increments by one.</p>
521

522
  <p>Stella supports multi-load games, however, the set of ROM images must be
thrust26's avatar
thrust26 committed
523
  combined into a single ROM image file. For example to create a multi-load ROM
524
  image file for Survival Island you would do the following under Unix:
525

526
  <pre>   % cat survivl0.bin survivl6.bin survivl7.bin > survivl.bin</pre>
527

528
  or to create it under DOS you would:
529

530
  <pre>   % copy /b survivl0.bin+survivl6.bin+survivl7.bin survivl.bin</pre>
531

532
533
  <p>Once you have the multi-load ROM image file, survivl.bin in this case, you
  can play the game using it.</p>
534

535
536
  <p>
  <h3><b><u>Supported File formats</u></b></h3>
537

538
539
540
  <p>Stella supports ROMs ending with extensions .a26, .bin, .rom, .gz, and .zip.
  For the last two compressed formats (GZIP and ZIP, respectively), Stella will
  automatically decompress the archive, and use the first ROM image it finds in
Stephen Anthony's avatar
Stephen Anthony committed
541
542
543
544
545
546
547
548
549
550
  it (ie, the first one ending in a valid extension).  If a ZIP archive contains
  many such files, Stella will display a <i>virtual filesystem</i> of the contents
  of the archive.</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
551
  <a href="#PropertiesCartType">Cart.Type -&gt; File Extension</a>.</p>
Stephen Anthony's avatar
Stephen Anthony committed
552
553
554
555
556
557

  <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>
558
  </blockquote></br>
559

560
  <h2><b><a name="Playing">Playing a Game</a></b></h2>
561
562

  <blockquote>
563
  <p>Once Stella is installed and you have some ROM images you're almost ready to
564
  start playing.</p>
565

566
567
  <p>
  <h3><b><u>Integrated GUI</u></b></h3>
568

thrust26's avatar
thrust26 committed
569
  <p>Stella contains an integrated GUI for all ports. Commandline support is also
570
  available for those who want to use it.</p>
571

572
573
574
  <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>
575

thrust26's avatar
thrust26 committed
576
577
  <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
578
  can change it later in the <b><a href="#ROMInfo">ROM Launcher</a></b> dialog.</p>
579

580
  <p>At this point, you may want to set the locations for snapshots. This is described in more detail in <b>Advanced Configuration - <a href="#Snapshots">Snapshot Settings</a></b>.
581
582
583
  These settings are optional, and can be left at the defaults if you won't be using
  snapshots in the ROM launcher.</p>

584
  <p>You can start emulation by selecting a ROM and pressing 'Enter' or clicking 'Select',
Stephen Anthony's avatar
Stephen Anthony committed
585
586
587
588
589
  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
590
  <b>Getting Started - <a href="#Keyboard">Keyboard Layout</a></b>
thrust26's avatar
thrust26 committed
591
  for more information. To exit a game and re-enter the ROM launcher, press the 'Escape'
592
  key.</p>
593

594
595
596
597
  <p>Using the 'Search' textbox in the upper-right of the ROM launcher, the
  listing can be narrowed down, showing only the ROMs that match the pattern
  you enter.</p>

598
599
600
601
602
603
  <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>

604
605
  <p>
  <h3><b><u>Command Menu</u></b></h3>
606

607
  <p>While playing a game, normally one would use the keyboard shortcuts for controlling the
608
609
  'virtual' switches in Stella (ie, the commands associated with the
  function keys as described in
610
  <b>Getting Started - <a href="#Keyboard">Keyboard Layout</a></b>).
thrust26's avatar
thrust26 committed
611
  However, another alternative is available. Pressing the '\' key toggles
612
613
614
615
  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
616
617
618
  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 (ie, in a standalone gaming system).</p>
619
  </blockquote></br>
620

621
  <h2><b><a name="Keyboard">Keyboard Layout</a></b></h2>
622
  <blockquote>
623

624
  <p>The Atari 2600 console controls and controllers are mapped to the computer's
thrust26's avatar
thrust26 committed
625
  keyboard as shown in the following tables. However, most of these events can be
626
  remapped to other keys on your keyboard or buttons on your joystick (see
627
  <b>Advanced Configuration - <a href="#Remapping">Event Remapping</a></b>).
thrust26's avatar
thrust26 committed
628
629
  The tables below show the default settings.<br/><br/>

thrust26's avatar
thrust26 committed
630
631
632
  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.
thrust26's avatar
thrust26 committed
633
634
  </p>
  <p><img src="graphics/qwertz.png"></p>
635
  </blockquote></br>
636

637
  <h2><b><a name="Hotkeys">Hotkeys</a></b></h2>
638
  <blockquote>
639
640
  <p><b>Console Controls (can be remapped)</b></p>

641
  <table BORDER=2 cellpadding=4>
642
643
644
    <tr>
      <th>Function</th>
      <th>Key (Standard)</th>
645
      <th>Key (macOS)</th>
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
    </tr>

    <tr>
      <td>Exit emulator</td>
      <td>Control + q</td>
      <td>Cmd + q</td>
    </tr>

    <tr>
      <td>Exit game mode/enter launcher mode</td>
      <td>Escape</td>
      <td>Escape</td>
    </tr>

    <tr>
      <td>Enter/exit options mode</td>
662
663
      <td>Tab/Escape</td>
      <td>Tab/Escape</td>
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
    </tr>

    <tr>
      <td>Enter/exit command mode</td>
      <td>Backslash (\)</td>
      <td>Backslash (\)</td>
    </tr>

    <tr>
      <td>Enter/exit debugger</td>
      <td>Backquote (`)</td>
      <td>Backquote (`)</td>
    </tr>

    <tr>
      <td>Select Game</td>
      <td>F1</td>
      <td>F1</td>
    </tr>

    <tr>
      <td>Reset Game</td>
      <td>F2</td>
      <td>F2</td>
    </tr>

    <tr>
      <td>Color TV</td>
      <td>F3</td>
      <td>F3</td>
    </tr>

    <tr>
      <td>Black/White TV</td>
      <td>F4</td>
      <td>F4</td>
    </tr>

    <tr>
703
      <td>Left Player Difficulty A</td>
704
705
706
707
708
      <td>F5</td>
      <td>F5</td>
    </tr>

    <tr>
709
      <td>Left Player Difficulty B</td>
710
711
712
713
714
      <td>F6</td>
      <td>F6</td>
    </tr>

    <tr>
715
      <td>Right Player Difficulty A</td>
716
717
718
719
720
      <td>F7</td>
      <td>F7</td>
    </tr>

    <tr>
721
      <td>Right Player Difficulty B</td>
722
723
724
725
726
727
728
729
730
731
      <td>F8</td>
      <td>F8</td>
    </tr>

    <tr>
      <td>Save state to current slot</td>
      <td>F9</td>
      <td>F9</td>
    </tr>

732
  <tr>
thrust26's avatar
thrust26 committed
733
      <td>Save all Time Machine states</td>
thrust26's avatar
thrust26 committed
734
735
736
737
      <td>Alt + F9</td>
      <td>Cmd + F9</td>
    </tr>

738
    <tr>
739
740
741
742
743
744
745
      <td>Change to previous state slot</td>
      <td>Shift + F10</td>
      <td>Shift + F10</td>
    </tr>

    <tr>
      <td>Change to next state slot</td>
746
747
748
749
      <td>F10</td>
      <td>F10</td>
    </tr>

thrust26's avatar
thrust26 committed
750
    <tr>
751
      <td>Automatically change state slot</td>
thrust26's avatar
thrust26 committed
752
753
754
755
      <td>Alt + F10</td>
      <td>Cmd + F10</td>
    </tr>

756
757
758
759
760
761
    <tr>
      <td>Load state from current slot</td>
      <td>F11</td>
      <td>F11</td>
    </tr>

thrust26's avatar
thrust26 committed
762
    <tr>
thrust26's avatar
thrust26 committed
763
      <td>Load all states into Time Machine</td>
thrust26's avatar
thrust26 committed
764
      <td>Alt + F11</td>
thrust26's avatar
thrust26 committed
765
      <td>Cmd + F11</td>
thrust26's avatar
thrust26 committed
766
767
    </tr>

768
769
770
771
772
773
774
775
776
    <tr>
      <td>Save PNG snapshot</td>
      <td>F12</td>
      <td>F12</td>
    </tr>

    <tr>
      <td>Pause/resume emulation</td>
      <td>Pause</td>
thrust26's avatar
thrust26 committed
777
      <td>Shift-Cmd + p</td>
778
    </tr>
779

780
781
782
  </table>


thrust26's avatar
thrust26 committed
783
  <p><b>Joystick/BoosterGrip Controller (can be remapped)</b></p>
784
785
786
787
788
789
790
791
792

  <table BORDER=2>
    <tr>
      <th>Left Joystick (Joy0)</th>
      <th>Right Joystick (Joy1)</th>
    </tr>

    <tr>
      <td>
793
        <table BORDER=1 cellpadding=4>
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
          <tr>
            <th>Function</th>
            <th>Key</th>
          </tr>

          <tr>
            <td>Joystick Up</td>
            <td>Up arrow</td>
          </tr>

          <tr>
            <td>Joystick Down</td>
            <td>Down arrow</td>
          </tr>

          <tr>
            <td>Joystick Left</td>
            <td>Left arrow</td>
          </tr>

          <tr>
            <td>Joystick Right</td>
            <td>Right arrow</td>
          </tr>

          <tr>
            <td>Fire Button</td>
821
            <td>Left Control, Space</td>
822
823
824
          </tr>

          <tr>
thrust26's avatar
thrust26 committed
825
            <td>Top Booster Button</td>
826
827
828
829
            <td>4</td>
          </tr>

          <tr>
thrust26's avatar
thrust26 committed
830
            <td>Handle Grip Trigger</td>
831
832
833
834
835
836
            <td>5</td>
          </tr>
        </table>
      </td>

      <td>
837
        <table BORDER=1 cellpadding=4>
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
          <tr>
            <th>Function</th>
            <th>Key</th>
          </tr>

          <tr>
            <td>Joystick Up</td>
            <td>Y</td>
          </tr>

          <tr>
            <td>Joystick Down</td>
            <td>H</td>
          </tr>

          <tr>
            <td>Joystick Left</td>
            <td>G</td>
          </tr>

          <tr>
            <td>Joystick Right</td>
            <td>J</td>
          </tr>

          <tr>
            <td>Fire Button</td>
            <td>F</td>
          </tr>

          <tr>
thrust26's avatar
thrust26 committed
869
            <td>Top Booster Button</td>
870
871
872
873
            <td>6</td>
          </tr>

          <tr>
thrust26's avatar
thrust26 committed
874
            <td>Handle Grip Trigger</td>
875
876
877
878
879
880
881
            <td>7</td>
          </tr>
        </table>
      </td>
    </tr>
  </table>

882
  <p><b>Sega Genesis Controller (cannot be remapped, always associated with joystick and booster-grip controllers)</b></p>
883
884
885

  <table BORDER=2>
    <tr>
886
887
      <th>Left Pad</th>
      <th>Right Pad</th>
888
889
890
891
    </tr>

    <tr>
      <td>
892
        <table BORDER=1 cellpadding=4>
893
894
895
896
897
898
          <tr>
            <th>Function</th>
            <th>Key</th>
          </tr>

          <tr>
899
900
            <td>Pad Up</td>
            <td>Same as 'Joy0 Up'</td>
901
902
903
          </tr>

          <tr>
904
905
            <td>Pad Down</td>
            <td>Same as 'Joy0 Down'</td>
906
907
908
          </tr>

          <tr>
909
910
            <td>Pad Left</td>
            <td>Same as 'Joy0 Left'</td>
911
912
913
          </tr>

          <tr>
914
915
            <td>Pad Right</td>
            <td>Same as 'Joy0 Right'</td>
916
917
918
          </tr>

          <tr>
919
920
            <td>Button 'B'</td>
            <td>Same as 'Joy0 Fire'</td>
921
922
923
          </tr>

          <tr>
924
            <td>Button 'C'</td>
thrust26's avatar
thrust26 committed
925
            <td>Same as 'Joy0 Top Booster Button'</td>
926
927
928
929
930
          </tr>
        </table>
      </td>

      <td>
931
        <table BORDER=1 cellpadding=4>
932
933
934
935
936
937
          <tr>
            <th>Function</th>
            <th>Key</th>
          </tr>

          <tr>
938
939
            <td>Pad Up</td>
            <td>Same as 'Joy1 Up'</td>
940
941
942
          </tr>

          <tr>
943
944
            <td>Pad Down</td>
            <td>Same as 'Joy1 Down'</td>
945
946
947
          </tr>

          <tr>
948
949
            <td>Pad Left</td>
            <td>Same as 'Joy1 Left'</td>
950
951
952
          </tr>

          <tr>
953
954
            <td>Pad Right</td>
            <td>Same as 'Joy1 Right'</td>
955
956
957
          </tr>

          <tr>
958
959
            <td>Button 'B'</td>
            <td>Same as 'Joy1 Fire'</td>
960
961
962
          </tr>

          <tr>
963
            <td>Button 'C'</td>
thrust26's avatar
thrust26 committed
964
            <td>Same as 'Joy1 Top Booster Button'</td>
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
          </tr>
        </table>
      </td>
    </tr>
  </table>

  <p><b>Driving Controller (cannot be remapped, always associated with joystick controller)</b></p>

  <table BORDER=2>
    <tr>
      <th>Left Driving</th>
      <th>Right Driving</th>
    </tr>

    <tr>
      <td>
981
        <table BORDER=1 cellpadding=4>
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
          <tr>
            <th>Function</th>
            <th>Key</th>
          </tr>

          <tr>
            <td>Left Direction</td>
            <td>Same as 'Joy0 Left'</td>
          </tr>

          <tr>
            <td>Right Direction</td>
            <td>Same as 'Joy0 Right'</td>
          </tr>

          <tr>
            <td>Fire Button</td>
            <td>Same as 'Joy0 Fire'</td>
          </tr>
        </table>
      </td>

      <td>
1005
        <table BORDER=1 cellpadding=4>
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
          <tr>
            <th>Function</th>
            <th>Key</th>
          </tr>

          <tr>
            <td>Left Direction</td>
            <td>Same as 'Joy1 Left'</td>
          </tr>

          <tr>
            <td>Right Direction</td>
            <td>Same as 'Joy1 Right'</td>
          </tr>

          <tr>
            <td>Fire Button</td>
            <td>Same as 'Joy1 Fire'</td>
          </tr>
        </table>
      </td>
    </tr>
  </table>

1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
  <p><b>Trackball Controller (uses mouse, left port only)</b></p>

  <table BORDER=2>
    <tr>
      <th>Left Trackball</th>
    </tr>
    <tr>
      <td>
        <table BORDER=1 cellpadding=4>
          <tr>
            <th>Function</th>
            <th>Key</th>
          </tr>
          <tr>
            <td>Fire Button</td>
            <td>Same as 'Joy0 Fire'</td>
          </tr>
        </table>
      </td>
    </tr>
  </table>

  <p><b>Light Gun Controller (uses mouse, left port only)</b></p>

  <table BORDER=2>
    <tr>
      <th>Left Light Gun</th>
    </tr>
    <tr>
      <td>
        <table BORDER=1 cellpadding=4>
          <tr>
            <th>Function</th>
            <th>Key</th>
          </tr>
          <tr>
            <td>Fire Button</td>
            <td>Same as 'Joy0 Fire'</td>
          </tr>
        </table>
      </td>
    </tr>
  </table>

1074
  <p><b>Paddle Controller digital emulation (can be remapped)</b></p>
1075
1076
1077

  <table BORDER=2>
    <tr>
1078
1079
      <th>Left Paddles</th>
      <th>Right Paddles</th>
1080
1081
1082
1083
    </tr>

    <tr>
      <td>
1084
        <table BORDER=1 cellpadding=4>
1085
1086
1087
1088
1089
1090
          <tr>
            <th>Function</th>
            <th>Key</th>
          </tr>

          <tr>
thrust26's avatar
thrust26 committed
1091
1092
            <td>Paddle 0 Turn Left</td>
            <td>Left arrow</td>
1093
1094
1095
          </tr>

          <tr>
thrust26's avatar
thrust26 committed
1096
1097
            <td>Paddle 0 Turn Right</td>
            <td>Right arrow</td>
1098
1099
1100
          </tr>

          <tr>
1101
1102
            <td>Paddle 0 Fire</td>
            <td>Left Control, Space</td>
1103
1104
1105
          </tr>

          <tr>
thrust26's avatar
thrust26 committed
1106
1107
            <td>Paddle 1 Turn Left</td>
            <td>Up arrow</td>
1108
1109
1110
          </tr>

          <tr>
thrust26's avatar
thrust26 committed
1111
1112
            <td>Paddle 1 Turn Right</td>
            <td>Down arrow</td>
1113
1114
1115
          </tr>

          <tr>
1116
1117
            <td>Paddle 1 Fire</td>
            <td>4</td>
1118
1119
1120
1121
1122
          </tr>
        </table>
      </td>

      <td>
1123
        <table BORDER=1 cellpadding=4>
1124
1125
1126
1127
1128
1129
          <tr>
            <th>Function</th>
            <th>Key</th>
          </tr>

          <tr>
thrust26's avatar
thrust26 committed
1130
1131
            <td>Paddle 2 Turn Left</td>
            <td>G</td>
1132
1133
1134
          </tr>

          <tr>
thrust26's avatar
thrust26 committed
1135
1136
            <td>Paddle 2 Turn Right</td>
            <td>J</td>
1137
1138
1139
          </tr>

          <tr>
1140
1141
            <td>Paddle 2 Fire</td>
            <td>F</td>
1142
1143
1144
          </tr>

          <tr>
thrust26's avatar
thrust26 committed
1145
1146
            <td>Paddle 3 Turn Left</td>
            <td>Y</td>
1147
1148
1149
          </tr>

          <tr>
thrust26's avatar
thrust26 committed
1150
1151
            <td>Paddle 3 Turn Right</td>
            <td>H</td>
1152
1153
1154
          </tr>

          <tr>
1155
1156
            <td>Paddle 3 Fire</td>
            <td>6</td>
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
          </tr>
        </table>
      </td>
    </tr>
  </table>

  <p><b>Keypad Controller (can be remapped)</b></p>

  <table BORDER=2>
    <tr>
      <th>Left Keypad</th>
      <th>Right Keypad</th>
    </tr>

    <tr>
      <td>
1173
        <table BORDER=1 cellpadding=4>
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
          <tr>
            <th>Pad Button</th>
            <th>Key</th>
          </tr>

          <tr>
            <td>1</td>
            <td>1</td>
          </tr>

          <tr>
            <td>2</td>
            <td>2</td>
          </tr>

          <tr>