https://github.com/bobbicodes/omines
JavaScript NES emulator optimized for simplicity and readability
https://github.com/bobbicodes/omines
Last synced: 10 months ago
JSON representation
JavaScript NES emulator optimized for simplicity and readability
- Host: GitHub
- URL: https://github.com/bobbicodes/omines
- Owner: bobbicodes
- Created: 2023-11-07T21:40:49.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-11-07T22:33:39.000Z (over 2 years ago)
- Last Synced: 2025-03-26T04:44:37.478Z (about 1 year ago)
- Language: JavaScript
- Homepage: https://bobbicodes.github.io/omiNES/
- Size: 53.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# omiNES
JavaScript NES emulator optimized for simplicity and readability
## Rationale
I found a great article, [Golfing a NES emulator in JS](https://xem.github.io/articles/nes.html) but I'm torn about it because I really can't get behind the whole "golfing" thing. But the author is right about one thing, [JSNES](https://github.com/bfirsh/jsnes) is a nice achievement but the React-based UI is obscenely huge, and the project is flawed in many ways. So I wanted to make something like [jsnes-lite](https://github.com/xem/jsnes-lite) but forked it at a point where he'd gotten rid of the nonsense but before it was made so tiny to be incomprehensible and thus impossible to extend. I also improved the sound by making the triangle channel like the real NES, and created proper ES6 modules.
## Usage
Unfortunately, it only seems to run well on Chrome/Chromium.
Live demo: https://bobbicodes.github.io/omiNES/
Controls are arrow keys, X, C, Esc, Enter. Configure in [main.js](https://github.com/bobbicodes/omiNES/blob/fae05c45f43bbd38deae37a7549e139917fe122f/main.js#L93).
Currently only [mapper 0](https://www.nesdev.org/wiki/NROM) (NROM) is implemented. See [here](https://nesdir.github.io/mapper0.html) for compatible games.
### Running locally (develop)
```
npm i
npm run dev
```
### Production build
```
npm run build
npm run preview
```