Showing what an artist you are thanks to Nintendo DS Art Academy Extractor

I created this little utility while doodling around with the Art Academy game for Nintendo DS classic. I was frustrated not being able to export my "masterpieces" to my computer, so I decided to take an hexadecimal look at the savegame, hoping to decypher some NCGR, NCLR and NSCR files which could be my pictures. I was so surprised to discover chunks of EXIF data, leading me to JPG headers! So much work saved. Gallery pictures are saved as jpeg among their thumbnails, with exif 2.2 data containing creation date/time and "Nintendo DS" as camera model (yes, camera model).

Here's how the soft works:

  • Drop your savegame onto the .exe file, or open the exe to get an Open File Dialog.
  • Parse the savegame for .jpg files
  • Only keep the biggest ones (512x384 px), leaving the thumbnails behind.
  • Save them into %my pictures folder%\Art Academy\%exif_date%.jpg

Download

v1.1

NDS Art Academy Extractor 1.1.exe

  • Option to backup the current savegame into My Pictures\Art Academy\archived savegames

v1.0

NDS Art Academy Extractor 1.0.exe

Some code

Here's how I parse the savegame's bytes for JPEG files (C#):

byte[] saveBytes = File.ReadAllBytes(save);

bool foundHeader = false;
int startIndex = 0;
for(int i = 0; i < saveBytes.Length; i++)
{
    if (saveBytes[i] == 0xFF && saveBytes[i + 1] == 0xD9 && foundHeader == true)
    {
        int length = i - startIndex + 1;
        var imageBytes = saveBytes.Skip(startIndex).Take(length+1).ToArray();

        //Do stuff with your imageBytes here, such as File.WriteAllBytes(startIndex+".jpg", imageBytes);

        foundHeader = false;
    }
    if (saveBytes[i] == 0xFF && saveBytes[i + 1] == 0xD8)
    {
        startIndex = i;
        foundHeader = true;
    }
}

Extra: Rom Forensics

After unpacking the rom, I was surprised to see the graphic resources encoded as png, jpg or tga. It was nice to see developers using standards instead of big N's proprietary formats, which probably saved them some time while coding, considering the amount of graphics needed. The guys seem to have some humor, hence the "Ninty_logo" title for the bootscreen-nintendo logo. Made my day.

Also, the credits are stored in raw .txt. I haven't dug further into the binary files yet, but I guess there's some interesting stuff out there.

Previous Post Next Post