2024-08-10 15:12:50 +02:00
2024-08-04 20:09:19 +02:00
2024-08-04 20:09:19 +02:00
2024-08-04 20:09:19 +02:00
2024-08-04 20:09:19 +02:00
2024-08-04 20:09:19 +02:00
2024-08-04 20:09:19 +02:00
2019-09-11 19:42:59 +02:00
2024-08-04 20:09:19 +02:00

NDSFactory

Open Source Love GPL Licence

A tool to unpack & repack Nintendo DS ROMs (.nds)

If you find this software useful, please consider supporting it: ko-fi

screenshot

!!!ROMS WITH OVERLAY ARE CURRENTLY NOT SUPPORTED!!!

Description

NDSFactory helps you easily unpack and repack Nintendo DS ROMs, but some technical knowledge is required.

A typical NDS ROM consists of the following sections:

  • Header
  • ARM9 Binary
  • ARM7 Binary
  • FNT (Filename Table)
  • FAT (File Allocation Table)
  • ARM9/ARM7 Overlay (Optional)
  • ARM9/ARM7 Overlay Files (Optional)
  • Icon/Title Logo
  • FAT Files (The actual files used by the software, like Graphics, Music etc.)

NDSFactory allows you to extract these sections, modify them as needed, and rebuild the ROM with your edited sections. If modified sections are larger than the original, you must specify their new physical address and size in the header. Ensure that sections do not overlap and remember to patch the FAT.BIN if necessary.

This tool is particularly useful for modding games or writing trainers.

How to use

Unpacker Tab

In the Unpacker Tab, you can load your Nintendo DS software (.nds) and extract the ROM sections, including individual FAT files. Take note of the original address of the FAT files, as you will need this value if you alter the addresses and sizes of the sections.

You can then do what you want with these sections (inject code, apply patches etc.)

Packer Tab

In the Packer Tab, you can recreate a .nds file using your edited sections. If your sections are larger than the originals, you must update their addresses and sizes in the header. Ensure that the addresses do not overlap, or the final ROM will be broken. If you repack edited sections and the FAT files' address is different from the original, you must patch the FAT (fat.bin). The FAT contains absolute addresses representing each file's start and end addresses, so you need to update them accordingly (use the FAT Patching Tab for this).

Fat Tools Tab

In this tab, you can patch the FAT section (fat.bin). This is only necessary if the FAT files' final address (fat_data.bin) differs from the original. Patching the FAT is straightforward: load your fat.bin, and fill in the original and new addresses of fat_data.bin. This will produce a patched fat.bin for use in the packing process.

Known Limitations/Possible Future Features/Bugs

  • Add support for ROMs with overlays.
  • Add support to rebuild a new fat_data.bin and fat.bin from a set of files inside a directory.

If you find a bug, feel free to open an issue or submit a pull request :)

Developed with ❤ by Luca D'Amico

Special thanks to Antonio Barba & Davide Trogu

Description
Languages
C++ 91.2%
CMake 5.4%
C 3.4%