What is it?
6502.ts strives to be a collection of emulators for 6502 based systems written in Typescript. It currently provides
- A cycle-exact CPU emulator and a generic debugging environment any attached hardware.
- A minimal hardware monitor for executing the EhBasic interpreter and Klaus Dormann's 6502 testsuite
- A full-featured Atari 2600 emulator, including sound, CRT phosphor simulation, debugging environment and a more user oriented "stellerator" frontend.
The projects targets both NodeJS and the browser as runtime environments (no video or audio on node, of course).
Atari 2600 emulation
6502.ts implements a full-fledged emulator for the Atari 2600 VCS. Apart from the debugger, there are two ways to use the emulator
- Stellerator allows to import, manage and play VCS ROMs in the browser. ROMs are stored locally in the browser. It is responsive and can be used offline as a homescreen application on iOS. Stellerator is hosted on github.io.
- Stellerator (legacy) is the old version of Stellerator. It is not developed anymore, but still hosted on github.io.
- Stellerator embedded offers a rich API to embed VCS emulation into web sites and web applications. Please check out the documentation for more information.
The emulation core is written in Typescript. The Stellerator frontend is mostly written in the Elm and uses a custom CSS theme written in SASS. Builds are currently created with rollup, and Yarn is used for package management.
Building and development
6502.ts uses Yarn for package management, so you'll have to install it first. After checking out the repos, do
to pull in the required packages.
Test are run with
The Stellerator frontend is built by doing
After the build has finished, the compiled frontend can be found in the
For development, rollup can be run in watch mode via
Development builds are written to
dist-dev. For these builds, Elm runs in development mode,
the compiled code is unminified, and the service worker registration is skipped.
Rollup does not bundle a development server, so live-server is used instead. Running
will fire up live-server and serve the development build of Stellerator on
Several tools are available as CLI only (notably the ehBasic hardware monitor). Those can be built by doing
After building, the compiled (modularized) code is available in the
and the tools are availabe in
The core parts of the emulator are available as
The package includes TypeScript typings and can be used directly in TypeScript projects.
Most APIs are pretty stable by now, but not documented yet, with the exception of Stellerator embedded. Please check out the documentation of Stellerator embedded for more details.
License and credits
The MIT license
Copyright (c) 2014 -- 2020 Christian Speckner and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Third party code
These license conditions do not apply to the contents of the
aux directory which
mostly were written by folks other than me. Specifically:
ehBasicwas taken from Jeff Tranters repository here
- Klaus Dormann's 6502 testsuite (found in
aux/6502_suite) was taken from his repository on github here and is licensed under the GPL.
red_linesample was taken from Kirk Israel's 2600 programming tutorial on AtariAge. The
line_testis a modified version of this code.
playfield_1sample was taken from Kirk Israel's 2600 cookbook.
playfield_2was taken from Andrew Davie's 2600 programming excercises on AtariAge.
vcs.hheaders can be found free-floating on the internet
flappingis a homebrew game written by Kirk Israel available here.
2600 cartridge type detection code (and some of the more exotic cartridge types) were modelled after the excellent Stella emulator. Initial 2600 audio code was contributed by Martin Schröder. ARM support in DPC+ is powered by David Welch's thumbulator, transpiled to JS with emscripten. Cycle-accurate PCM audio is derives from work done by Chris Brenner. The favicon and homescreen icons in Stellerator were taken from Stella.