A brand new game
for Windows, Linux, Mac, HTML5, 3DS Homebrew and more
Making a Theme Maker - 3DS Tiled Textures
17th December, 2018
Hacking 3DS Hacking is fun!!
Over the course of yesterday, I decided to tackle the task of creating a somewhat automated 3DS Theme Builder.
Rather than 100% create a theme file from scratch, I've decided to create a plain template and then hack away at it to create what I need.
Yesterday was spent trying to figure out how to export images as a "3DS Tiled Texture"
Lots of online places gave instructions as to what resolutions were expected, and the colour range as RGB565, but I found it extremely difficult to find exactly how this "block tile" method was being stored.
I hunted, and I hunted and I hunted..
I gave up, and cheated. Hacking away bits at a time, (and feeling not entirely unlike one of the puzzles from Foldapuz!) I managed to load one of the internal images from the test theme, and from there found the following..
1. The "tiles" are 8x8 pixel blocks.
2. The tiles are layed out "for y" first, then "for x" (as in a whole horizontal row of tiles before moving on to the next row)
3. The pixels within each tile are layed out in the most obscure format, EVER!!
I'm sure there's a logical reason for that layout, but *shrugs*
Anyway, once I had that figured out, I wrote a little encoder and got it to overwrite the default images in my template theme.
I then got it to find an average colour, fade the bottom screen down towards a darker version of the average to make a "cleaner" bottom screen, and... Time was up for the day!
Today I'll be working my way through all the colour options of the themes, using the average colour value to generate colours for all the buttons and things.
This should (!) be a much easier task than figuring out the texture format was.
Hopefully, later today, I should be testing that my new themes work nicely on the 3DS, and hopefully releasing a couple.
I might also release the tool, if it turns out to work well enough, but at the moment it's very much a "Expects X file to be in Y location" based thing.