/N64-UNFLoader

A cross-platform and universal Nintendo64 flashcart ROM uploader, featuring a USB+debug library for libultra and libdragon.

Primary LanguageC++Do What The F*ck You Want To Public LicenseWTFPL

UNFLoader

Build Status Build Status

The code in this repo might be unstable! For stable releases, head to the releases page

UNFLoader is a USB ROM uploader (and debugging) tool designed to unify developer flashcarts for the Nintendo 64. The goal of this project is to provide developers with USB I/O functions that work without needing to worry about the target flashcart, provided by a single C file (usb.c) targeting both libultra and libdragon. A very basic debug library (debug.c) that makes use of said USB library is also provided.

Currently supported flashcarts:

  • 64Drive Hardware 1.0 (No longer comercially sold), using firmware 2.05+
  • 64Drive Hardware 2.0, using firmware 2.05+
  • EverDrive 3.0 (No longer comercially sold), using OS version 3.04+ (Please note that OS v3.07 onwards is not compatible with the 3.0).
  • EverDrive X7, using OS version 3.04+
  • SC64

Table of contents

Extending UNFLoader

This repository has a wiki where the tool, its libraries, and the supported flashcarts are all documented. It is recommended that you read through that to familiarize yourself with everything. If you want to submit changes, feel free to fork the repository and make pull requests!

Known issues and suggestions

All known issues are mentioned in the issues page. Suggestions also belong there for the sake of keeping everything in one place.

Credits

  • Marshallh for providing the 64Drive USB application code which this program was based off of.
  • KRIKzz, saturnu, NetworkFusion, lambertjamesd, Wiseguy, and jsdf for providing sample code for the EverDrive 3.0 and/or X7.
  • fraser and NetworkFusion for all the help provided during the development of this project as well as their support.
  • NetworkFusion for lending me his remote test rig for the ED64-V3 and ED64-X7, as well as setting up the azure pipeline system and helping organize this repo.
  • danbolt for helping test this on Debian, as well as providing changes to get the tool compiling under macOS.
  • Polprzewodnikowy for implementing support for his SC64, as well as setting up GitHub actions and providing some fixes/improvements to the library.
  • CrashOveride for ensuring the samples compile on his Linux libultra port.
  • The folk at N64Brew for being patient with me and helping test the program! Especially command_tab, NetworkFusion, CrashOveride, gravatos, PerKimba, manfried, Wiseguy, Zygal, kivan117, Kokiri, and jjk7. You guys are the reason this project was possible!

This project uses lodePNG by Lode Vandevenne, ncurses by the GNU Project, pdcurses by William McBrine, the D2XX library and driver by FTDI, and libftdi by intra2net.