summaryrefslogtreecommitdiff
path: root/README.md
blob: 9881ce1df8ed90ce943758fa7295b09e0afd0b71 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
### emu8910

This repository contains a Typescript implementation of General Instrument's [AY-3-8910](https://en.wikipedia.org/wiki/General_Instrument_AY-3-8910) PSG (programmable sound generator).
It implements most of the PSG's original registers. A datasheet can be found [here](http://map.grauw.nl/resources/sound/generalinstrument_ay-3-8910.pdf).

Sound output is achieved in the browser through an AudioContext() hook. <br>
This emulator also adds interrupt support (with variable frequency) for updating the PSG's registers.

FIR filter data generated using:
[https://www.arc.id.au/FilterDesign.html](https://www.arc.id.au/FilterDesign.html)

Compile with `tsc emu8910.ts`.

Files:

* src/emu8910.ts - Core emulator implementation
* fym.js - FYM (Fast YM) format parser
* update.js - Register parser
* index.html - HTML boilerplate

To run demo start web server: `python -m http.server 8000` and navigate to `index.html`.

Then click anywhere on the page to start audio output.