Skip to content

Library/CLI for extracting and building DS ROMs

Notifications You must be signed in to change notification settings

AetiasHax/ds-rom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ds-rom

Library for extracting and building matching Nintendo DS ROMs. DSi/DSiware not supported yet.

Contents

Goals

  • Extract all components of a ROM to files on disk.
  • Build ROMs using those files.
  • The files should be modifiable so that a modded ROM can be built.
  • The built ROMs should exactly match the originals when the files are unmodified.

Extraction

ds-rom has two representations of the ROM: raw and plain. To extract files from a ROM, it first reads the raw ROM, with the exact byte-for-byte content of the ROM file. Then, the plain ROM can extract all the components out of the raw ROM. Lastly, the plain ROM can be saved to files on disk.

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

If the raw ROM is encrypted, you must pass an encryption key to Rom::save in place of the None value. See an example of this here.

Building

Building a ROM is exactly the opposite of extracting. ds-rom starts by loading a plain ROM from files on disk, the same files generated by Rom::save. Then, the raw ROM can be built and saved as a single ROM file.

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

If the ROM is encrypted, you must pass an encryption key to Rom::load and optionally Rom::build in place of the None value. See an example of this here.
(It is optional for Rom::build as it is only for computing a CRC checksum in the ROM header.)

You can configure whether a ROM should be encrypted by editing the YAML files inside the extraction directory.

Command-line interface

ds-rom is also available as a CLI, and you can download the latest release here. Use dsrom --help for a list of subcommands.

About

Library/CLI for extracting and building DS ROMs

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages