Resources

Resources are effectively bookmarks for my own projects or projects I want to highlight

Apicula rip, view, and convert the NSBMD model files

A tool for converting Nintendo DS Nitro models into GLTF and Collada

By Published

I have conflicting feeling about things that are too easy when it comes to reverse engineering. For Phantasy Star Online Zero, I wanted to see if I could export a few assets to be able to play around with them in Godot or Threejs.

In order to do this, I found there are a bunch of off the shelf tools to allow for this. The .nds rom format has internal files that can be extracted with another tool. And then the asset files themselves can be converted to GLTF using Apicula.

But one thing that I like to do is learn by doing. So I’m also very tempted to set up an online tool that will allow for browsing and exporting of files. And that way I have a checklist to see how much I have mapped of the files, and then be able to work with the files themselves to be able to get more data points for the Dash Model Format.

All of that being said, I wanted to highlight the tool because it’s an amazing tool. I was confused since Windows was the only executable found in the Releases section. But after reading the readme, it looks like it was written in Rust and can be compiled on Linux. So that’s another one of those small things I can cross off of my “needs Windows” list.

Compatibility

apicula recognized these file types (called Nitro files). See the wiki for more info.

  • .nsbmd, .BMD, or .BMD0: 3D models, textures, palettes
  • .nsbtx, .BTX, or .BTX0: textures, palettes
  • .nsbca, .BCA, or .BCA0: joint animations
  • .nsbtp, .BTP, or .BTP0: pattern animations (flipbook-type)
  • .nsbta, .BTA, or .BTA0: material animations (experimental!!)

Models can be converted to COLLADA or glTF.

Building

Make sure Rust (1.34+) is installed and build the usual way

$ git clone https://github.com/scurest/apicula.git
$ cd apicula
$ cargo b --release
$ target/release/apicula -V

Usage

To search a ROM (or any other file) for Nitro files and extract them

$ apicula extract INPUT_FILE -o OUTPUT_DIR

To get technical information about the given Nitro files

$ apicula info NITRO_FILES
Liked the article? Share it!