Catalog npm
Back to packageRELEASE DETAILS

1.1.2

npm

6502.ts

A 6502 emulator written in typescript

26006502atariemulationvcs
Published12 Sept 2022
Direct dependencies49
Transitive dependenciesNot calculated

README

Current package documentation

What is it?

6502.ts strives to be a collection of emulators for 6502 based systems written in Typescript. It currently provides

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.

Tooling

The emulation core is written in Typescript. The Stellerator frontend is mostly written in the Elm and uses a custom DOS-style CSS theme written in SASS. Builds are created with webpack, 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

    yarn install

to pull in the required packages.

Tests

Test are run with

    yarn test

Stellerator

The Stellerator frontend is built by doing

    yarn build

After the build has finished, the compiled frontend can be found in the dist directory.

For development, a dev server on http://localhost:6502 in watch mode can be fired up with

    yarn start

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.

CLI

Several tools are available as CLI only (notably the ehBasic hardware monitor). Those can be built by doing

    yarn tsc

After building, the compiled (modularized) code is available in the compiled directory, and the tools are availabe in compiled/bin.

NPM package

The core parts of the emulator are available as 6502.ts on NPM. 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:

  • ehBasic was 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.
  • The red_line sample was taken from Kirk Israel's 2600 programming tutorial on AtariAge. The line_test is a modified version of this code.
  • The playfield_1 sample was taken from Kirk Israel's 2600 cookbook.
  • playfield_2 was taken from Andrew Davie's 2600 programming excercises on AtariAge.
  • The macro.h and vcs.h headers can be found free-floating on the internet
  • flapping is 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.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 49

Native requirements
49 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
async-mutex
Environment
{
  "local_name": "async-mutex",
  "alias": false,
  "peer_metadata": null
}
^0.4.0runtime
dasm
Environment
{
  "local_name": "dasm",
  "alias": false,
  "peer_metadata": null
}
^6.0.1runtime
md5
Environment
{
  "local_name": "md5",
  "alias": false,
  "peer_metadata": null
}
^2.3.0runtime
microevent.ts
Environment
{
  "local_name": "microevent.ts",
  "alias": false,
  "peer_metadata": null
}
^0.2.1runtime
screenfull
Environment
{
  "local_name": "screenfull",
  "alias": false,
  "peer_metadata": null
}
^6.0.2runtime
seedrandom
Environment
{
  "local_name": "seedrandom",
  "alias": false,
  "peer_metadata": null
}
^3.0.3runtime
setimmediate2
Environment
{
  "local_name": "setimmediate2",
  "alias": false,
  "peer_metadata": null
}
^3.0.0runtime
thumbulator.ts
Environment
{
  "local_name": "thumbulator.ts",
  "alias": false,
  "peer_metadata": null
}
^0.3.1runtime
tslib
Environment
{
  "local_name": "tslib",
  "alias": false,
  "peer_metadata": null
}
^2.4.0runtime
worker-rpc
Environment
{
  "local_name": "worker-rpc",
  "alias": false,
  "peer_metadata": null
}
^0.2.0runtime
@progress/jszip-esm
Environment
{
  "local_name": "@progress/jszip-esm",
  "alias": false,
  "peer_metadata": null
}
^1.0.3development
@types/argparse
Environment
{
  "local_name": "@types/argparse",
  "alias": false,
  "peer_metadata": null
}
^2.0.0development
@types/deep-equal
Environment
{
  "local_name": "@types/deep-equal",
  "alias": false,
  "peer_metadata": null
}
^1.0.1development
@types/file-saver
Environment
{
  "local_name": "@types/file-saver",
  "alias": false,
  "peer_metadata": null
}
^2.0.1development
@types/md5
Environment
{
  "local_name": "@types/md5",
  "alias": false,
  "peer_metadata": null
}
^2.2.0development
@types/mocha
Environment
{
  "local_name": "@types/mocha",
  "alias": false,
  "peer_metadata": null
}
^9.1.1development
@types/node
Environment
{
  "local_name": "@types/node",
  "alias": false,
  "peer_metadata": null
}
^18.7.16development
@types/seedrandom
Environment
{
  "local_name": "@types/seedrandom",
  "alias": false,
  "peer_metadata": null
}
^3.0.2development
argparse
Environment
{
  "local_name": "argparse",
  "alias": false,
  "peer_metadata": null
}
^2.0.1development
buffer
Environment
{
  "local_name": "buffer",
  "alias": false,
  "peer_metadata": null
}
^6.0.3development
css-loader
Environment
{
  "local_name": "css-loader",
  "alias": false,
  "peer_metadata": null
}
^6.7.1development
deep-equal
Environment
{
  "local_name": "deep-equal",
  "alias": false,
  "peer_metadata": null
}
^2.0.3development
dexie
Environment
{
  "local_name": "dexie",
  "alias": false,
  "peer_metadata": null
}
^3.2.2development
elm
Environment
{
  "local_name": "elm",
  "alias": false,
  "peer_metadata": null
}
^0.19.1-5development
elm-format
Environment
{
  "local_name": "elm-format",
  "alias": false,
  "peer_metadata": null
}
^0.8.5development
elm-test
Environment
{
  "local_name": "elm-test",
  "alias": false,
  "peer_metadata": null
}
^0.19.1-revision9development
elm-webpack-loader
Environment
{
  "local_name": "elm-webpack-loader",
  "alias": false,
  "peer_metadata": null
}
^8.0.0development
file-saver
Environment
{
  "local_name": "file-saver",
  "alias": false,
  "peer_metadata": null
}
^2.0.2development
filemanager-webpack-plugin
Environment
{
  "local_name": "filemanager-webpack-plugin",
  "alias": false,
  "peer_metadata": null
}
^7.0.0development
inversify
Environment
{
  "local_name": "inversify",
  "alias": false,
  "peer_metadata": null
}
^6.0.1development
live-server
Environment
{
  "local_name": "live-server",
  "alias": false,
  "peer_metadata": null
}
^1.2.2development
mini-css-extract-plugin
Environment
{
  "local_name": "mini-css-extract-plugin",
  "alias": false,
  "peer_metadata": null
}
^2.6.1development
mocha
Environment
{
  "local_name": "mocha",
  "alias": false,
  "peer_metadata": null
}
^10.0.0development
normalize.css
Environment
{
  "local_name": "normalize.css",
  "alias": false,
  "peer_metadata": null
}
^8.0.1development
npm-run-all
Environment
{
  "local_name": "npm-run-all",
  "alias": false,
  "peer_metadata": null
}
^4.1.5development
prettier
Environment
{
  "local_name": "prettier",
  "alias": false,
  "peer_metadata": null
}
^2.7.1development
rangetouch
Environment
{
  "local_name": "rangetouch",
  "alias": false,
  "peer_metadata": null
}
^2.0.1development
reflect-metadata
Environment
{
  "local_name": "reflect-metadata",
  "alias": false,
  "peer_metadata": null
}
^0.1.13development
sass
Environment
{
  "local_name": "sass",
  "alias": false,
  "peer_metadata": null
}
^1.54.9development
sass-loader
Environment
{
  "local_name": "sass-loader",
  "alias": false,
  "peer_metadata": null
}
^13.0.2development
ts-loader
Environment
{
  "local_name": "ts-loader",
  "alias": false,
  "peer_metadata": null
}
^9.3.1development
ts-node
Environment
{
  "local_name": "ts-node",
  "alias": false,
  "peer_metadata": null
}
^10.9.1development
typedoc
Environment
{
  "local_name": "typedoc",
  "alias": false,
  "peer_metadata": null
}
^0.23.14development
typescript
Environment
{
  "local_name": "typescript",
  "alias": false,
  "peer_metadata": null
}
^4.8.3development
webpack
Environment
{
  "local_name": "webpack",
  "alias": false,
  "peer_metadata": null
}
^5.74.0development
webpack-cli
Environment
{
  "local_name": "webpack-cli",
  "alias": false,
  "peer_metadata": null
}
^4.10.0development
webpack-dev-server
Environment
{
  "local_name": "webpack-dev-server",
  "alias": false,
  "peer_metadata": null
}
^4.11.0development
webpack-merge
Environment
{
  "local_name": "webpack-merge",
  "alias": false,
  "peer_metadata": null
}
^5.8.0development
workbox-cli
Environment
{
  "local_name": "workbox-cli",
  "alias": false,
  "peer_metadata": null
}
^6.5.4development

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "integrity": "sha512-XKma5YTCpEz4seUVSTq1+rcJnVPaagfwaCf+i+cpn1KVwfoSnyHSRLsiXV2AiTVoDHMnYjbeTeoATrW4ZnY1xA==",
  "shasum": "192981a1d07b6871af6bcf6bb001b51f16aab986",
  "tarball": "https://registry.npmjs.org/6502.ts/-/6502.ts-1.1.2.tgz",
  "fileCount": 633,
  "unpackedSize": 2324764,
  "signatures": [
    {
      "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA",
      "sig": "MEQCIGAXpnNmFZGz4WYBYdXl+T22DGYDJ+gt4pIls88hZR3BAiA8qATgJLdqfFEPnWmlHGfWVwwK6lhHN3kH6j18mclHIA=="
    }
  ],
  "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjH5f2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmorPRAAgp4uQm7da7gifn1xrAJJiNkD0LKslZ0hkRWCXBc+fm2EG54t\r\nDliexYV5EwXvF9UVg4u7LZ6iB54PNuTu099Sj2FyLOprtMG4YKhZ+NqErlc4\r\nwefhB/qeGlkvGmAXT67axFJ9na5fk6U8ABZmi7Uc8haSjPPshexrDhvKJHAJ\r\nsB64zW9CDWfcU07a7IleiRLlAfbQJF1goTGDW0FhiNu7SJUXZZKIjdq8Jrac\r\ndWHcwHXvfZ6idC2viOw3numZVf6lbRExzCJ4TRL9OiRk40PSs7wWjxamcVEK\r\nkb6pptjy8L2nfTmyCOpwebYyfYGJlf4FiFiAK6a72e0fdS/BsS3LOLnMDmX6\r\n3GYiK4R5EhTt5yGbO001xEFW/YHDF0vHzf94x1dU/Br0YV2a1XkiDj0G0zLk\r\neNkbgGr4RK+v6DMuVtqNghR+foZGSXerrrhjox0NYpQnXurawl6elkYeO+On\r\nOqmu/IkDGMPxyrdkPnAntZveTdbOnNgXNUHEdbMzLyZ4QFtktUz8oAyTGkU+\r\neXkO5NkSgbrHa5XGFeX781sY4DiKG8W+Z+dX4hCIOWsz12TVfoFaifVNcO8o\r\nD7GT3M6pBMTLveFTBtgfuFWLqXn6HkgmYVEwQsHaxQ2c07uS4/oVUf2Elc88\r\nLJUpdAHEeg88Szd0YBXXs3+gpLYtJrpq/wo=\r\n=mN90\r\n-----END PGP SIGNATURE-----\r\n"
}

Repository

PENDING
6502ts/6502.ts

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 20:47 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:84c1a63434594fa148ce1aeba1e8d969dee77e2a08f13473f40e930f8664535a

Other collected versions

1.1.412 Sept1.1.311 Sept1.1.112 Sept1.1.012 Sept1.0.628 Nov1.0.430 JanView all collected versions →