Home

Awesome

Libdragon

<p align="center"> <img src="https://user-images.githubusercontent.com/127010686/256988697-8fe1bdcf-a21b-42d0-b383-502eaf048b50.png#gh-dark-mode-only" width="400"> <img src="https://user-images.githubusercontent.com/127010686/256988620-1167a1e7-6773-4a67-97d4-d251c12ef8ba.png#gh-light-mode-only" width="400"> </p>

Build

Welcome to libdragon

[!TIP] Coming back here after a while? Check the ChangeLog of our stable branch, or the Preview branch

Libdragon is an open-source SDK for Nintendo 64. It aims for a complete N64 programming experience while providing programmers with modern approach to programming and debugging. These are the main features:

The preview branch features many more features:

and much more. These features will eventually land to trunk, but you can start playing with them even today. Go the preview branch doc for more information.

Getting started: how to build a ROM

To get started with libdragon, you need to download and install the toolchain.

Make sure to read the full installation instructions which also explain the system requirements.

Getting started: how to run a ROM

Using emulators

libdragon targets real N64 hardware and uses many advanced corners of the hardware not used by old commercial games, and thus requires a modern N64 emulator which focuses on full hardware emulation.

At the moment, the only emulator that accurately emulates the hardware (and does not just focus on playing old classics) is Ares. Ares requires a modern PC with a discrete GPU with Vulkan support.

You can develop 99% of your game using libdragon and the Ares emulator, and be confident that the game will correctly run on hardware as well. Make sure to turn on the "Homebrew mode" in Ares to enable developer specific checks during emulation that will simplify the debugging experience.

Using a development cartridge on a real N64

All cartridges that are able to load custom ROMs should be able to successfully load libdragon ROMs via either USB/serial, or from a MMC/SD card. For instance, the following are known to work: 64drive, EverDrive64 (all models), SC64.

If your cartridge has USB support, use one of the loaders that implement the libdragon debugging protocol, so to be able to show logs in console. For instance, UNFLoader, g64drive, ed64. The official loaders provided by the vendors are usually less feature-rich.

Libdragon stable vs preview

Currently, there are two main libragon versions:

Upgrading libdragon

If you are upgrade the stable version, check the ChangeLog in the wiki to see latest changes that were merged into the stable version of libdragon. Also check the wiki page for common hurdles in upgrading libdragon.

If you are upgrading the preview version, instead, remember that some breaking changes are expected. We do not keep track of those though, so you will have to check the relevant header files yourself to check what is changed.

Resources