libdragon README

The project's README from github.com/DragonMinded/libdragon. As one markdown file: README.md.

Libdragon

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 libdragon 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

libdragon (DragonMinded/libdragon)

assembly
Searching Database…

1.3K ·GitHub
archived
What is this?Libdragon is an open-source SDK for homebrew Nintendo 64 development, giving you a modern C11 toolchain plus graphics, audio, filesystem and debugging libraries to build real N64 ROMs.
Is this a game engine or a low-level SDK I build my own engine on top of?It is a low-level SDK/toolchain (GCC + Newlib based) with libraries for 2D RDP graphics, audio mixing, filesystems and debugging; higher-level 3D pipelines like OpenGL or the third-party Tiny3D sit on top of it, mainly in the preview branch.
How do I start building a ROM with libdragon?Download and install the libdragon toolchain following the project's installation instructions; a Docker container is provided to set up the build environment quickly.
What do I need to actually run a ROM I build?You need either the Ares emulator (the only one that accurately emulates N64 hardware rather than just old commercial games) or real hardware via a flashcart like 64drive, EverDrive64, or SC64/SummerCart64.
Should I use the stable branch or the preview branch?Stable never breaks backward compatibility, but most new features (3D graphics, multithreading, movie playback) live in the preview branch, where APIs can change at any time; multithreading there is also not yet fully thread-safe.
Do I need a beefy GPU just to test my game in an emulator?Yes — the recommended Ares emulator needs a modern PC with a discrete GPU that supports Vulkan.
What's new in the preview branch compared to stable?The preview branch adds full OpenGL 1.1 (plus the third-party Tiny3D pipeline), a GLTF import/animation system, an RSP-accelerated MPEG1 movie player, a RDP-accelerated TrueType text engine, and an experimental real-time multithreading kernel.
Can libdragon ROMs run on the Chinese iQue Player as well as a standard N64?Yes, libdragon supports both vanilla N64 and the iQue Player, and the same ROM can run on iQue without any source code changes.
What audio formats and codecs can I play back?Libdragon can play WAV sound effects, stream uncompressed or VADPCM-compressed WAV music, stream Opus-compressed audio, and play XM (FastTracker/MilkyTracker/OpenMPT) and YM (Arkos Tracker 2) module files, all via an RSP-accelerated 32-channel mixer.
Is this project still actively maintained?The GitHub repository is marked as archived, even though the README still describes two live branches (stable and preview) and points to an active Discord community (n64brew) — worth checking the project's current status before starting new work on it.
Size
103 MB
Stars
1.3K
Age
16y
Commits · 90 Days