A lightweight, dead-simple command-line tool to convert Nintendo 64 save files between different emulator and hardware formats.
Nintendo 64 saves come in a few types: EEPROM (small, usually 512 bytes to 2KB), SRAM (32KB), FlashRAM (128KB), and Controller Pak (also 32KB, but separate). The problem is that different emulators and real hardware dump/load these saves in incompatible ways:
- Byte order (endianness) differs. Project64 stores everything in a 32-bit swapped order, EverDrive-64 uses 16-bit swapped, and others are usually native/big-endian.
- Sizes and padding vary. Some emulators expect EEPROM saves padded to specific sizes (2KB, 4KB, or even 16KB for Wii VC), and Wii VC likes its padding to be 0xAA instead of 0x00.
Transferring saves between Project64, EverDrive-64, Wii64, Wii Virtual Console, Sixtyforce, etc. usually requires manual byte-swapping and resizing. This tool automates that.
-
Build it with Cargo.
cargo build --release
-
Install it.
cargo install bsn64
-
Usage:
bsn64 -i <INPUT> -o <OUTPUT> -s <SOURCE> -d <DEST>-i,--input: Path of the original file (ex: Zelda.eep).-o,--output: Path to the converted output file.-s,--source: Source format.-d,--destination: Destination format.
| Profile | Architecture | Compatibility / Notes |
|---|---|---|
wii64 |
Big Endian | Native format. Compatible with physical cartridges and Not64 emulators. |
pj64 |
Little Endian | PC Emulator standard (Project64). Compatible with MiSTer FPGA. |
wii-vc |
Big Endian | Wii Virtual Console. Handles specific file sizes and padding values. |
sixtyforce |
Big Endian | Sixtyforce (macOS). Also compatible with Controller Pak data extraction. |
everdrive |
16-bit Swapped | Real hardware. Specific byteswapped format for EverDrive 64 flashcarts. |