Initial project for using Rust on the Nintendo 64.

Overview

License: MIT License: APACHE2.0

N64 Project Template for Rust

This repo is intended to be a starting point for developing software for the Nintendo 64 console using Rust.

Only the bare minimum utilities are included at this time. Once higher level support libraries are available, this template will be updated to include them. A no_std allocator has been set up already, which should also get replaced eventually with an allocator that is better aware of the N64's memory map.

The n64-pac crate is also included as a dependency. It doesn't provide full coverage of all registers yet, but has enough for the basics. Refer to the crate's docs for details.

An ISViewer implementation is available, with print! and println! macros. This allows you to print text to emulators that support the ISViewer, such as Ares.

Building

  1. Install Rust: https://www.rust-lang.org/tools/install
  2. Get the source: (e.g. using git, or downloading an archive manually)
git clone https://github.com/rust-n64/n64-project-template
cd n64-project-template
  1. Install a cargo runner: cargo install nust64
  2. Run cargo run --release to compile and build a ROM.

Please note: N64 ROMs require a segment of bootcode known as the IPL3. The IPL3 gets hashed by the N64's boot sequence, and compared with the CIC on the cartridge. All software compiled to run on the N64 requires some variant of the IPL3. Until there is a community-made variant, you will have to source this yourself.

Fortunately, Krom, with help from Zoinkity, has written their own IPL3 from scratch, which has the same hash as the 6102 IPL3 variant. Whether you use that or some other code is up to you. Once you have an IPL3 binary, open .cargo/config.toml and replace YOUR_IPL3.bin with the file path to the IPL3 you wish to use.

Cargo Runner Configuration

This project is configured to make use of nust64, a program that creates the final N64 ROM after cargo finishes compiling the project. nust64 provides support for executing additional commands after the ROM has been created.

Refer to .cargo/config.toml for examples.

License

The contents of this repository are dual-licensed under the MIT OR Apache 2.0 License. That means you can chose either the MIT licence or the Apache-2.0 licence when you re-use this code. See MIT or APACHE2.0 for more information on each specific licence.

Any submissions to this project (e.g. as Pull Requests) must be made available under these terms.

You might also like...
Source project for the Internet Computer software
Source project for the Internet Computer software

The Internet Computer is the world’s first blockchain that runs at web speed and can increase its capacity without bound. Like the Internet (which is composed of many machines adhering to TCP/IP protocol) and blockchain protocols (such as Bitcoin and Ethereum).

HyperCube is a free and open source blockchain project for everyone to use.

XPZ Public Chain HyperCube is a free and open source blockchain project for everyone to use. 日本語 简体中文 正體中文 HyperCube Wiki Wha is HyperCube HyperCube i

This is the Repo used to learn blockchain development in conjusction with the CyberGen NFT Project.

Environment Setup Install Rust from https://rustup.rs/ Install Solana from https://docs.solana.com/cli/install-solana-cli-tools#use-solanas-install-to

Terra Trophies is a copy of Ethereum's POAP project for Terra

Terra Trophies Terra Trophies is a copy of Ethereum's POAP project for Terra. It allows anyone to create digital badges for participants of events, or

Secret contract for Anons project.

Snip-721 Protocal by Baedrik template with several edits Minting Limits mint() caps tokens max at 580 mint() will keep count of how many anons each ad

Battery-included Solana/Anchor project skeleton.

Anchor Skeleton Battery-included Solana/Anchor project skeleton. Features Rust test only: All tests (integration, unit) are written in Rust, so the co

Opendp - The core library of differential privacy algorithms powering the OpenDP Project.

OpenDP The OpenDP Library is a modular collection of statistical algorithms that adhere to the definition of differential privacy. It can be used to b

installer for project brunch (by sebanc)

Brunch-installer Installer for brunch (made by sebanc) This was made in an attempt to simplify the installation process of chromeos using project brun

The project brings the IC ecosystem to Unity, allowing Unity developers to call the functions of canisters on IC,
The project brings the IC ecosystem to Unity, allowing Unity developers to call the functions of canisters on IC,

Agent of Internet Computer for Unity The Intro The project brings the IC ecosystem to Unity, allowing Unity developers to call the functions of canist

Owner
Group of crates and utilities for development on the Nintendo 64 using Rust
null
Example NFT marketplace project using ink! smart contract.

NFT Marketplace project This contract is an example for the NFT marketplace implementation. License Apache 2.0 ??️ How to use - Contracts ?? Build Use

Swanky dApps 8 Jan 18, 2023
Rust project for working with ETH - Ethereum transactions with Rust on Ganache and also deploy smart contracts :)

Just a test project to work with Ethereum but using Rust. I'm using plain Rust here, not Foundry. In future we will use Foundry. Hope you're already f

Akhil Sharma 2 Dec 20, 2022
A Rust port of the password primitives used in Django Project.

Rust DjangoHashers A Rust port of the password primitives used in Django Project. Django's django.contrib.auth.models.User class has a few methods to

Ronaldo Ferreira 52 Nov 17, 2022
A Rust port of the password primitives used in Django Project.

Rust DjangoHashers A Rust port of the password primitives used in Django Project. Django's django.contrib.auth.models.User class has a few methods to

Ronaldo Ferreira 52 Nov 17, 2022
A library to help you sew up your Ethereum project with Rust and just like develop in a common backend

SewUp Secondstate EWasm Utility Program, a library helps you sew up your Ethereum project with Rust and just like development in a common backend. The

Second State 48 Dec 18, 2022
Project Serum Rust Monorepo

serum-dex Project Serum Rust Monorepo Website | Discord | Awesome | DEX | TypeScript Program Deployments Program Devnet Mainnet Beta DEX DESVgJVGajEgK

Project Serum 564 Dec 31, 2022
Project generator written in Rust :crab:

C.R.S. Create a new project from a template Why another project generator ? It's inspired of cookiecutter (#20). It's written in rust for safety and r

0xMRTT 3 Nov 11, 2022
Rust starter project for building CLI and libraries, with great CI

Using the starter project: find where bumblefoot is and replace it with the name of your project. $ rg bumblefoot This is a dual library and binary pr

Rusty Ferris Club 19 Nov 19, 2022
A template for your next Rust project.

Opinionated Rust Template A template for your next Rust project. To start coding run: cargo generate tomkarw/opinionated-rust-template Only requires j

Tom Karwowski 8 Dec 1, 2022
Temporary edit external crates that your project depends on

rhack You want to quickly put a sneaky macro kind of like dbg! into external crates to find out how some internal data structure works? If so rhack is

Ryo Nakao 119 Nov 3, 2022