A SNES emulator for the N64, written in assembly.
The goal of sodium64 is to be fast and accurate enough to at least make some SNES games playable on the N64. It handles rendering entirely on the RSP in order to reduce load on the main CPU. I thought it would be fun to write something specifically for older hardware in assembly, so sodium64 was born!
The latest build of sodium64 is automatically provided via GitHub Actions, and can be downloaded from the releases page.
Place SNES ROMs with extension .sfc
/.smc
in the same folder as sodium64.z64
and rom-converter.py
. Run
rom-converter.py
using Python to convert the SNES ROMs to N64 ROMs. The output ROMs will be
in a new folder called out
.
Alternatively, some flashcarts support loading ROMs directly with a supplied emulator. If you have an EverDrive, copy
sodium64.z64
to the ED64/emu
folder on your SD card and rename it to smc.v64
. SNES ROMs must be in headerless
.smc
format to work this way; rom-converter.py
can optionally convert input ROMs for this.
N64 | SNES |
---|---|
C-Buttons | ABXY |
D-Pad | D-Pad |
L/R | L/R |
A/B | Start/Select |
Start | Toggle FPS Counter |
Z | Toggle Layer Priority |
This is a personal project, and I've decided to not review or accept pull requests for it. If you want to help, you can test things and report issues or provide feedback. If you can afford it, you can also donate to motivate me and allow me to spend more time on things like this. Nothing is mandatory, and I appreciate any interest in my projects, even if you're just a user!
Although sodium64 is written in assembly, it relies on libdragon for
its build system. With that set up, run make
in the project root directory to start building.
- Fullsnes - The main source of information on SNES hardware
- Anomie Docs - More detailed documentation for certain components
- 6502 Tutorials - Has articles thoroughly covering the CPU and its quirks
- Hydra's Lair - Blog where I may or may not write about things
- Discord Server - A place to chat about my projects and stuff