You can play online demo HERE. TypeScript/React.js NES emulator implementation for My Own Learning Porpose. The implementation is NOT fully faithfull to the original NES hardware and some codes are still messy.
- Run the following command in the project root directory to install dependencies:
$ npm install && npm run build
- After the installation, you can start the server by the following command in the project root directory:
$ npm start
- If you want to run the development server, simply run the following command in the project root directory:
$ npm run dev
- Open http://localhost:3000 with your browser to see the result.
NES Button | Keyboard |
---|---|
→ | Arrow-Right |
↓ | Arrow-Down |
← | Arrow-Left |
↑ | Arrow-Up |
SELECT | Space |
START | Return |
A | X |
B | Z |
The following is a checklist of features and their progress:
- Console
- NTSC
- CPU
- Official Instructions
- Unofficial Instructions
- Interrupts
- PPU
- VRAM
- Background
- Sprites
- NTSC TV Artifact Effects
- Emphasize RGB/Grayscale
- APU
- AudioWorklet
- Pulse Channels
- Triangle Channels
- Noise Channels
- Delta Mulation Channel
- Inputs
- Memory
- Cartridge
- Battery-backed Save RAM
- iNES Format
- NES 2.0 Format
- Mappers
- NROM (Mapper 0)
- SxROM/MMC1 (Mapper 1)
- UxROM (Mapper 2)
- CNROM (Mapper 3)
- TxROM/MMC3 (Mapper 4)
- ExROM/MMC5 (Mapper 5)
- Misc
- Reimplement UI/UX for smartphone users
- GitHub page
- Unit/Integration tests
- Refactor Source Codes
- Error Handling
- Documentation
- Make Things Responsive