|
1 | 1 | # Gopher2600
|
2 | 2 |
|
3 |
| -<img align="right" src="https://github.com/JetSetIlly/Gopher2600-Dev-Docs/blob/master/gopher2600_logo/logo4.png" width="250" alt="gopher2600 logo"/> |
4 |
| - |
5 |
| -Gopher2600 is an emulator for the Atari 2600 written in Go. |
6 |
| - |
7 |
| -See here for [Current Status](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Current-Status) |
8 |
| - |
9 |
| -Accuracy is very high and and there are no known problems with the emulation of the 6507, TIA or RIOT chips. |
10 |
| - |
11 |
| -The key features of the emulator: |
12 |
| - |
13 |
| -* [Support for many of the known cartridge formats](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Supported-Cartridge-Mappers) |
14 |
| - * emulation of the [Supercharger](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Supercharger) - supports loading from WAV files |
15 |
| -* Emulation of the [ARM7TDMI](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/ATM7TDMI-Emulation) as found in the `Harmony` cartridge |
16 |
| - * Preliminary support for the ARMv7-M as used in the `UnoCart` and `PlusCart` is also included |
17 |
| -* Network access through [PlusROM](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/PlusROM) emulation |
18 |
| -* [AtariVox and SaveKey](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/AtariVox-and-SaveKey) support |
19 |
| - * Speech support via `Festival` |
20 |
| -* CRT TV Effects |
21 |
| -* Flexible [screenshot](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Creating-Screenshots) features |
22 |
| -* Accurate audio reproduction (and optional stereo output) |
23 |
| -* Support for common [TIA revisions](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/TIA-Revisions) |
24 |
| -* Implementation of [Movie Cart](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Movie-Cart) |
25 |
| -* [Gameplay rewinding](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Rewinding) |
26 |
| -* Tracker/Piano Keys visualisation |
27 |
| -* [Gameplay recording and playback](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Recording-Gamplay) |
28 |
| -* Support for (and auto-detection of) the stick, paddle, keypad and also Sega Genesis style [controllers](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Hand-Controllers-and-Front-Panel) |
29 |
| -* ROM selector with live emulation preview and optional support for |
30 |
| - [boxart and the standard stella.pro file](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Box-Art-and-stella.pro-file) |
31 |
| - |
32 |
| -The graphical [debugger](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Debugger): |
33 |
| - |
34 |
| -* CPU and Color Clock level interaction |
35 |
| -* Breakpoints, traps, watches on various CPU, TIA and RIOT targets |
36 |
| -* Terminal interface (headless operation optional) |
37 |
| -* Advanced ARM monitoring |
38 |
| - * Performance profiling |
39 |
| - * Source code inspection and breakpoints |
40 |
| - * DWARF support (global & local variable inspection) |
41 |
| - |
42 |
| -Logo is based on [Gopherize.me](https://github.com/matryer/gopherize.me) which itself is based on the work of [Ashley McNamara](https://github.com/ashleymcnamara/gophers) and is [licensed under the Creative Commons](https://github.com/ashleymcnamara/gophers/blob/master/LICENSE). |
43 |
| - |
44 |
| -## Documentation |
45 |
| - |
46 |
| -User documentation for the emulator can be found in the [Gopher2600-Docs repository](https://github.com/JetSetIlly/Gopher2600-Docs/) and in particular the [live wiki](https://github.com/JetSetIlly/Gopher2600-Docs/wiki). |
47 |
| - |
48 |
| -Development & Maintenance documentation can be found in the [Gopher2600-Dev-Docs repository](https://github.com/JetSetIlly/Gopher2600-Dev-Docs/). Also, source level documentation (for the most recent release) can be found on [go.dev](https://pkg.go.dev/github.com/jetsetilly/gopher2600). |
49 |
| - |
50 |
| -## Example Screenshots |
51 |
| - |
52 |
| -The following [screenshots](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Creating-Screenshots) were taken in `playmode` with CRT effects enabled. |
53 |
| - |
54 |
| -<table align="center"> |
55 |
| - <tr> |
56 |
| - <td align="center"> |
57 |
| - <img src="https://github.com/JetSetIlly/Gopher2600-Docs/blob/master/screenshots/pitfall.jpg" height="150" alt="pitfall"/> |
58 |
| - </td> |
59 |
| - <td align="center"> |
60 |
| - <img src="https://github.com/JetSetIlly/Gopher2600-Docs/blob/master/screenshots/chiphead.jpg" height="150" alt="chiphead"/> |
61 |
| - </td> |
62 |
| - <td align="center"> |
63 |
| - <img src="https://github.com/JetSetIlly/Gopher2600-Docs/blob/master/screenshots/thrust.jpg" height="150" alt="thrust"/> |
64 |
| - </td> |
65 |
| - </tr> |
66 |
| - <tr> |
67 |
| - <td align="center"> |
68 |
| - <img src="https://github.com/JetSetIlly/Gopher2600-Docs/blob/master/screenshots/mangoesdown.jpg" height="150" alt="man goes down"/> |
69 |
| - </td> |
70 |
| - <td align="center"> |
71 |
| - <img src="https://github.com/JetSetIlly/Gopher2600-Docs/blob/master/screenshots/beast.jpg" height="150" alt="soul of the beast"/> |
72 |
| - </td> |
73 |
| - <td align="center"> |
74 |
| - <img src="https://github.com/JetSetIlly/Gopher2600-Docs/blob/master/screenshots/genesis.jpg" height="150" alt="egypt genesis"/> |
75 |
| - </td> |
76 |
| - </tr> |
77 |
| - <tr> |
78 |
| - <td align="center"> |
79 |
| - <img src="https://github.com/JetSetIlly/Gopher2600-Docs/blob/master/screenshots/draconian.jpg" height="150" alt="draconian"/> |
80 |
| - </td> |
81 |
| - <td align="center"> |
82 |
| - <img src="https://github.com/JetSetIlly/Gopher2600-Docs/blob/master/screenshots/zookeeper.jpg" height="150" alt="zookeeper"/> |
83 |
| - </td> |
84 |
| - </tr> |
85 |
| -</table> |
86 |
| - |
87 |
| -ROMs shown: Pitfall; [Chiphead](https://www.pouet.net/prod.php?which=68505); Thrust; Man Goes Down; [Soul of the Beast](https://aeriform.itch.io/beast); [Egypt 2600BC](https://www.pouet.net/prod.php?which=72716) ; Draconian; [Zookeeper](https://champ.games/downloads) |
| 3 | +<img align="right" src="https://github.com/JetSetIlly/Gopher2600-Docs/blob/master/screenshots/new_pitfall_as_banner.png" height=50% width=50%/> |
| 4 | + |
| 5 | +Gopher2600 is an emulator for the Atari 2600. Accuracy is very high and and there are no known problems with the emulation of the 6507, TIA or RIOT chips. |
| 6 | + |
| 7 | +The emulator is suitable for both playing 2600 games and for developing new games. In particular, the debugging features available for developers of CDFJ, DPC+ and ELF type ROMs that make use of an ARM coprocessor, are unique. |
| 8 | + |
| 9 | +Most ["bank switching"](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Supported-Cartridge-Mappers) types are supported, including the above mentioned CDFJ, DPC+ and ELF types. Also notable is the support for [Supercharger](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Supercharger) and in particular, the loading of Supercharger tapes stored as a WAV or MP3 file. Also supported is the [Movie Cart](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Movie-Cart) |
| 10 | + |
| 11 | +Games using [PlusROM](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/PlusROM) features are also supported. |
| 12 | + |
| 13 | +The [AtariVox and SaveKey](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/AtariVox-and-SaveKey) peripherals are emulated. Uniquely, the AtariVox voice features can be emulated with the third-party application `Festival`. While this is imperfect being able to hear feedback for AtariVox voice commands can be helpful. |
| 14 | + |
| 15 | +The vintage CRT television, contemporaneous with the console, is emulated with a selection of interference effects and bevel images. This is an ongoing area of development and will be improved further in the future. |
| 16 | + |
| 17 | +Flexible [screenshot](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Creating-Screenshots) features so that games using "flicker" kernels can be effectively captured. |
| 18 | + |
| 19 | +Accurate audio reproduction with optional stereo output. The intensity of the stereo effect can be altered. |
| 20 | + |
| 21 | +Over the course of its lifetime, the Atari2600 came in several versions which introduced subtle variations in the TIA chip. Gopher2600 supports the common [TIA revisions](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/TIA-Revisions) |
| 22 | + |
| 23 | +For the player who wants to master a game quickly there is convenient [gameplay rewinding](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Rewinding). The rewinding feature is also available in the emulator's debugger in the form of a "timeline" window. |
| 24 | + |
| 25 | +Gameplay can also be [recorded and played back](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Recording-Gamplay). In addition to keeping gameplay sessions for future study or enjoyment, recordings are also useful for testing purposes during ROM development. |
| 26 | + |
| 27 | +The standard controllers are supported. The joystick, the paddle, the keypad and also Sega Genesis style [controllers](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Hand-Controllers-and-Front-Panel) |
| 28 | + |
| 29 | +The graphical [debugger](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Debugger) provides a powerful interface to the internals of the Atari 2600. The state of the console can be inspected and rewound at the CPU and Colour Clock level. Breakpoints and watches can be set on many areas of the CPU, TIA and RIOT and the same areas can be be peeked and poked as required. |
| 30 | + |
| 31 | +In addition to the graphical windows of the debugger, a terminal interface is provided. |
| 32 | + |
| 33 | +The most powerful use of the debugger however is the debugging and profiling of ROMs that use an ARM coprocessor (Harmony, PlusCart, etc.) When [compiled correctly](https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Preparing-ARM-Enabled-Projects-for-the-Gopher2600-Debugger) Gopher2600 can use standard DWARF information to help profile performance; to identify incorrect code flow; and to identify incorrect use of the program's global and local variables. |
| 34 | + |
| 35 | +## Documentation and Help |
| 36 | + |
| 37 | +User documentation for the emulator can be found in the project [wiki](https://github.com/JetSetIlly/Gopher2600-Docs/wiki). |
| 38 | + |
| 39 | +Development & Maintenance documentation can be found in the [Gopher2600-Dev-Docs repository](https://github.com/JetSetIlly/Gopher2600-Dev-Docs/). |
| 40 | + |
| 41 | +Source level documentation can be found on the [Go package documentation site](https://pkg.go.dev/github.com/jetsetilly/gopher2600). |
| 42 | + |
| 43 | +There is also a project [blog](https://jetsetilly.github.io/Gopher2600-Blog/) which will be updated periodically with topical articles. |
88 | 44 |
|
89 | 45 | ## Resources used
|
90 | 46 |
|
@@ -274,9 +230,23 @@ http://www.festvox.org/docs/manual-2.4.0/festival_toc.html
|
274 | 230 |
|
275 | 231 | ## Personal Thanks and Acknowledgements
|
276 | 232 |
|
277 |
| -At various times during the development of this project, the following people |
278 |
| -have provided advice and encouragement: Andrew Rice, David Kelly. And those |
279 |
| -from AtariAge who have provided testing, advice and most importantly, |
280 |
| -encouragement (alphabetically): alex_79; Al Nafuur; Andrew Davie; Batari; |
281 |
| -DirtyHairy; John Champeau; MarcoJ; MrSQL; Rob Bairos; Spiceware; Thomas |
282 |
| -Jenztsch; Zachary Scolaro; ZeroPageHomebrew |
| 233 | +<img align="right" src="https://github.com/JetSetIlly/Gopher2600-Dev-Docs/blob/master/gopher2600_logo/logo4.png" height="400px" /> |
| 234 | + |
| 235 | +* Andrew Rice |
| 236 | +* David Kelly |
| 237 | +* And those from the wider Atari community: |
| 238 | + * alex_79 |
| 239 | + * Al Nafuur |
| 240 | + * Andrew Davie |
| 241 | + * Batari |
| 242 | + * Darrell Spice (Spiceware) |
| 243 | + * DirtyHairy |
| 244 | + * John Champeau (Champ Games) |
| 245 | + * MarcoJ |
| 246 | + * MrSQL |
| 247 | + * Rob Bairos |
| 248 | + * Thomas Jenztsch |
| 249 | + * Zachary Scolaro |
| 250 | + * ZeroPageHomebrew |
| 251 | + |
| 252 | +_Logo is based on [Gopherize.me](https://github.com/matryer/gopherize.me) which itself is based on the work of [Ashley McNamara](https://github.com/ashleymcnamara/gophers) and is [licensed under the Creative Commons](https://github.com/ashleymcnamara/gophers/blob/master/LICENSE)_ |
0 commit comments