sNES
A Nintendo Entertainment System (NES) emulator for s&box, written entirely in C#.
Credits: This project is based on sGBA by Asphaltian / softsplit. The s&box integration layer, UI framework, shader pipeline, and project structure were originally created by them. The emulator core has been rewritten for the NES (Ricoh 2A03 CPU, PPU, APU).
Features
- Cycle-accurate CPU with proper instruction timing (all official + unofficial opcodes)
- PPU with sprite rendering, scrolling, sprite-0 hit detection, and sprite overflow
- APU with pulse, triangle, noise, and DMC channels
- Automatic PAL/NTSC detection and timing adjustment
- Battery-backed SRAM persistence
- Suspend points (save states) with thumbnail previews
- NTSC overscan cropping (240×224 output)
- Gamepad support (D-pad, analogue stick, triggers)
Development
- Clone this repository.
- Open the project in the s&box editor.
- Select the
Emulator GameObject in minimal.scene and set the ROM Path property. - Press Play.
Note: Copyrighted ROMs are not included — you must provide your own legally obtained .nes ROM files.
Controls
| NES | Keyboard | Gamepad |
|-----|----------|---------|
| D-Pad | Arrow Keys | D-Pad / Left Stick |
| A | Z | Cross / A |
| B | X | Circle / B |
| Start | Enter | Options / Menu |
| Select | Backspace | Create / View |
PS5 controllers: Disable Steam Input for s&box so the DualSense is detected natively.
Supported Formats
.nes — iNES / NES 2.0 format (standard)
ROMs with 512-byte copier headers are automatically detected and handled. PAL and NTSC regions are detected from the ROM header, and timing is adjusted accordingly.
Supported Mappers
| # | Name | Notes |
|---|------|-------|
| 0 | NROM | Basic mapper (Super Mario Bros, Donkey Kong) |
| 1 | MMC1 | Bank switching (Zelda, Mega Man 2, Metroid) |
| 2 | UxROM | PRG switching (Mega Man, Castlevania) |
| 3 | CNROM | CHR switching (Arkanoid, Paperboy) |
| 4 | MMC3 | Scanline IRQ, PRG/CHR banking (Super Mario Bros 3, Kirby's Adventure, Mega Man 4, 7 Grand Dad) |
| 5 | MMC5 | Extended (Castlevania III) |
| 7 | AxROM | Single-screen mirroring (Battletoads) |
| 9 | MMC2 | Latch-based CHR (Punch-Out!!) |
| 10 | MMC4 | Latch-based CHR (Fire Emblem) |
| 11 | Color Dreams | (Crystal Mines) |
| 16 | Bandai | IRQ + EEPROM |
| 18 | Jaleco SS 88006 | (Holy Diver) |
| 21 | VRC4a/c | Konami (Wai Wai World 2) |
| 23 | VRC4e/f | Konami |
| 25 | VRC4b/d | Konami |
| 30 | UNROM 512 | Homebrew (Battle Kid 2) |
| 34 | BNROM/NINA-001 | |
| 47 | MMC3 multicart | (Super Spike V'Ball + Nintendo World Cup) |
| 64 | RAMBO-1 | Tengen (Shinobi) |
| 66 | GxROM | (Super Mario Bros + Duck Hunt) |
| 69 | FME-7 | Sunsoft (Batman: Return of the Joker) |
| 85 | VRC7 | Konami (Lagrange Point) |
| 118 | TxSROM | MMC3 variant (Armadillo) |
Tested Games
The following games have been verified to work:
- Super Mario Bros
- Zelda II: The Adventure of Link
- Kirby's Adventure
- Castlevania
- Mega Man 4
- 7 Grand Dad (bootleg)
Known Limitations- Battletoads may show palette or colour artefacts due to timing-sensitive CHR RAM updates.
Contributing
If you would like to contribute, please see the contributing guide.
Report bugs or request features via issues.
License
This project is licensed under the MIT License.
Notes
Included homebrew ROMs:
- BladeBuster by Memblers (romhacking.net)
- Space Mutants Extendo UnCut Edition by DG & JK (romhacking.net)
- 7 Grand Dad
Additional ROMs not included — provide your own legally obtained files Based on sGBA by Asphaltian Reference: nesdev.org
Credits
sGBA | Asphaltian — base emulator architecture
BladeBuster | Memblers — included homebrew ROM
Space Mutants | DG & JK — included homebrew ROM
NES hardware reference | nesdev.org
Box art | libretro-thumbnails