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...
Template to maintain a rust project running CI/CD with Github Workflows.
Template to maintain a rust project running CI/CD with Github Workflows.

Rust CI/CD template Template to maintain a rust project running CI/CD with Github Workflows. CI Workflow ci.yaml This workflow will run every time you

A rust project template for general purpose.

Rust 项目的初始化模版 开发项目时,会有不少关于项目的ci, lint, typo等配置,通过该模板创建项目,帮助快速构建这些配置: github action 配置,用于在CI对代码进行完整的检查和构建 pre-commit 配置,用于在commit时进行代码规范检查,如: cargo fmt

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

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

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
Marvin-Blockchain-Rust: A Rust-based blockchain implementation, part of the Marvin blockchain project.

Marvin Blockchain - Rust Implementation Welcome to the Rust implementation of the Marvin Blockchain. This project is part of a comparative study on bu

João Henrique Machado Silva 3 Sep 6, 2024
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