#nintendo #n64 #compilation #cross #cross-compilation #cli

nightly bin+lib cargo-n64

Cargo 子命令用于构建任天堂 64 ROM

4 个版本

0.2.0 2022 年 6 月 16 日
0.1.2 2020 年 2 月 16 日
0.1.1 2019 年 5 月 18 日
0.1.0 2019 年 4 月 11 日

嵌入式开发 中排名 731

每月下载次数 33

MIT 许可证

39KB
965

cargo-n64

Build Status Crates.io unsafe forbidden

使用 Rust 构建 任天堂 64 ROM 的 cargo 子命令!🦀

安装

需要 Rust nightly 版本。

从源代码构建时,cargo 将根据 rust-toolchain 文件自动安装正确的 nightly 编译器版本。但是,您仍然需要单独安装 rust-src 组件。建议您使用以下描述的 CI 中使用的相同版本的依赖项显式安装依赖项。

安装依赖项

rustup toolchain install $(cat rust-toolchain)
rustup run $(cat rust-toolchain) -- rustup component add rust-src

从源代码安装 cargo-n64

cargo install --path cargo-n64

crates.io 安装 cargo-n64

cargo install cargo-n64

它做什么?

任天堂 64 ROM 是平面二进制文件,每个都是独特的。除了简单的 64 字节头部和约 4KB 的引导代码(即初始程序加载器 3/IPL3)之外,没有标准的二进制格式。在第一个 4KB 边界之后是 MIPS 代码及其所需的所有数据。这与现代应用程序或游戏开发不同,在现代应用程序或游戏开发中,操作系统有标准的二进制格式(如 ELF、PE 或 WASM)。实际上,N64 甚至没有操作系统!ROM 中的平面二进制文件实际上是操作系统,从所有意义上讲。

这使得开始 N64 开发变得具有挑战性。首先,您必须从头开始构建操作系统,或者使用像 libdragonlibn64 这样的库。然后您需要一个工具(或两个、三个!)将编译器工具链中的目标文件转换为平面二进制文件,添加头部和 IPL3,最后修复 IPL3 校验和。cargo-n64 替换了后者集的工具,并很好地集成到 Rust/cargo 生态系统。

出于版权目的,本包不包含 IPL3 二进制文件。收集有效的 IPL3 二进制文件作为读者的练习。您需要使用 --ipl3 命令行参数提供您的 IPL3 路径,或者使用 --ipl3-from-rom 从现有的 ROM 中提取。

依赖项

~4–15MB
~141K SLoC