Okay, so it's been a while, but there's finally a new version for grit.
[br]
First of all, the vector::insert
should finally be fixed. And there was much rejoicing. I've also added an option for forcing the map palette-index (-mp <num>, which should help with NDS backgrounds that use ext-palettes.
Also – and this one is pretty big – I've completely replaced the tile-mapping routines for something more general. The new method should be able to handle variable-sized tiles (-tw <n> and -th <n>) and is mostly independent of bitdepth. Specifically, bitdepths over 8 bpp can be handled as well, at least in principle. It also means that the external tileset can be a metatile-set as well now, which is good if you're using metatiles.
With this new method also comes a way to create a custom bitformat for maps (-mB flag). I'm not entirely sure how this can be used yet, but using more than 10 bits for the tile-index, or a 1bpp collision map should be possible now.
Since this is a fairly major change, I kinda expect there's still some bugs in the system. I have tested it for a number of options, but you know how it is with multi-platform stuff. In particular, if any of you big-endian-system users have trouble now, this will probably be the cause.
And now I will leave you with a …
Great work! The custom bit format looks useful.
Neat, here's how you'd specify the Virtual Boy map entry format: "16:p2hv_i11"
About the change to -Len identifiers, I thought in C a static const wasn't a real constant. Or doesn't it matter?
A
static const
is not a literal constant, like a#define
, (or worse, a magic number), but it definitely is a constant. You could even say it's a realer constant that the others, as the compiler can actually see it.The difference between a
static const
and a#define
constant is effectively nil. No extra space is allocated for either one, which was my concern at first. It's generally advised to usestatic const
andstatic inline
instead of#define
anyway, I've just been a little late with it.i like it ;-)