#rom #ds #nintendo #extract #building #extracting #component

ds-rom

用于提取/构建任天堂DS ROM的库

1个不稳定版本

0.1.0 2024年7月19日

#285游戏

每月47次下载

MIT 许可证

215KB
4.5K SLoC

ds-rom

用于提取和构建匹配的任天堂DS ROM的库。DSi/DSiware尚不支持。

内容

目标

  • 将ROM的所有组件提取到磁盘上的文件中。
  • 使用这些文件构建ROM。
  • 文件应该是可修改的,以便可以构建修改过的ROM。
  • 当文件未修改时,构建的ROM应与原始ROM完全匹配。

提取

ds-rom对ROM有两种表示:原始和普通。要从ROM中提取文件,它首先读取原始ROM,即ROM文件的逐字节内容。然后,普通ROM可以从原始ROM中提取所有组件。最后,普通ROM可以保存到磁盘上的文件。

use ds_rom::{rom::{raw, Rom}};

let raw_rom = raw::Rom::from_file("mygame.nds")?;
let rom = Rom::extract(&raw_rom)?;
rom.save("mygame_extracted/", None)?;

[!IMPORTANT] 如果原始ROM已加密,您必须将加密密钥传递给Rom::save而不是None值。有关此示例,请参阅此处

构建

构建ROM与提取正好相反。ds-rom首先从磁盘加载普通ROM,即由Rom::save生成的相同文件。然后,可以构建原始ROM并将其保存为单个ROM文件。

use ds_rom::rom::Rom;

let rom = Rom::load("mygame_extracted/", None)?;
let raw_rom = rom.build(None)?;
raw_rom.save("mygame_rebuilt.nds")?;

[!IMPORTANT] 如果ROM已加密,您必须将加密密钥传递给Rom::load和可选的Rom::build而不是None值。有关此示例,请参阅此处
(对于Rom::build来说这是可选的,因为它仅在计算ROM头部的CRC校验和时使用。)

您可以通过编辑提取目录内的YAML文件来配置ROM是否应加密。

命令行界面

ds-rom也提供命令行界面,您可以从此处下载最新版本。使用dsrom --help获取子命令列表。

依赖关系

~9–20MB
~297K SLoC