Coranac

grit - GBA Raster Image Transmogrifier. Created: 2007-10-10 – 22:03.

Grit and its GUI version Wingrit are my image converters for the GBA (and NDS I guess). They can do most of the simple things like reading an image (pretty much any type of bitmap thanks to FreeImage) and converting it to binary data of various bitdepths which can be directly put into VRAM, but also more complicated matters such as tiling and metatiling (for 1D object mapping for example), making a tilemap along with a reduced tileset (or using an external tileset), popular map layouts, and compression compatible with the GBA's BIOS routines. The capability for an NDS alphabit has been added recently as well. Output can be C/asm arrays, raw binary, GBFS, and a RIFF-based format called GRF.

Not good enough? Well, the source code is available too, so you're free to modify it. The code should be platform independent right now, or at least very nearly so; the catch being that you might have add or remove some type definitions and maybe create your own makefile for compilation.

Documentation

grit-readme.txt, wingrit-readme.txt, Manuals,

Grit Downloads

Current version: 0.8.6

Previous versions


15 Comments »

  1. [...] Grit (previous GIT which stands of "GBA Image Transmogrifier") is an image conversion utility for the GBA and Nintendo DS. [...]

    Pingback by Embedding graphics in the DS using grit — 2008-06-12 @ 12:34
  2. To make Grit compile with GCC 4.4, I had to make the following changes:

    srcgrit/cli.cpp, line 11, add #include
    srcgrit/grit_main.cpp, line 793, add a cast to first argument:
    args.insert((strvec::iterator)&args[ii], files.begin(), files.end());

    Comment by Carl Ã…dahl — 2009-11-02 @ 13:49
  3. has anyone compiled grit on linux?

    Comment by toney — 2009-12-23 @ 0:54
  4. Because I'm getting this error when I try to compile on linux:

    srcgrit/grit_main.cpp: 793: error: no matching function for call to 'std::vector<char*,std::allocator >::insert(char**, __gnu_cxx::__normal_iterator<char**, std::vector<char*, std::allocator > >, __gnu_cxx::__normal_iterator<char**, std::vector<char*, std::allocator > > >)
    /usr/include/c++/4.3/bits/vector.tcc:94: note: candidates are: __gnu_cxx::__normal_iterator<typename std::_Vector_base::__normal_iterator<typename std::_Vector_base > std::vector::insert(__gnu_cxx::normal_iterator<typename std::_Vector_base::_Tp_alloc_type::pointer, std::vector >, const_Tp&) [with _Tp = char*, _Alloc = std::allocator]

    C++ libs related?

    Comment by toney — 2009-12-23 @ 5:43
  5. I'm using gcc 4.3 but carl's fix mentioned above works.
    Should've tried that, sorry!

    Comment by toney — 2009-12-23 @ 5:53
  6. [...] [ Download [...]

  7. Can't download the binary as it cannot be found... :(

    Comment by s_hansse — 2010-02-24 @ 17:36
  8. Seems I misnamed the file, sorry. The link should work now.

    Comment by cearn — 2010-02-24 @ 20:31
  9. I cannot compile grit on linux:
    either it stops with

    g++  -s -static -o grit build/grit_main.o build/cli.o build/fi.o  -L. -lgrit -lcldib -lfreeimage
    /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lfreeimage

    , indicating that libfreeimage is only bundled as Windows-dll.

    having installed freeimage-3.13.1 via http://bugs.gentoo.org/show_bug.cgi?id=307487, compilations stops with

    g++  -s -static -o grit build/grit_main.o build/cli.o build/fi.o  -L. -lgrit -lcldib -lfreeimage                                                                            
    ./libgrit.a(grit_xp.o): In function `grit_xp_h(GritRec*)':                                                                                                                  
    grit_xp.cpp:(.text+0x1a6b): warning: the use of `tmpnam'
    is dangerous, better use `mkstemp'                                                                                  
    /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4/../../../../lib64/libfreeimage.a(PluginEXR.o): In function `C_OStream::write(char const*, int)'
    :                                      
    (.text+0x26a): undefined reference to `Iex::throwErrnoExc(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'

    and lots of other undefined references in libfreeimage.a (complete buildlog at

    The makefile looks like you link statically on linux anyway, so how about bundling libfreeimage.a in a usable version as well ?

    Comment by nobody — 2010-04-06 @ 12:59
  10. Unfortunately, I'm limited to Windows, so I can't really help much with linux. That's more wintermute's department. Unfortunately, mkstemp() isn't standard, which is why I'm using tmpnam. IIRC, the warning isn't that serious.

    The slew of errors in FreeImage looks like an improper build of the library, particularly of some of the sub-libraries it uses (libpng and libjpeg, for example). But again I can't built on linux, so there's little I can do here. This is also the reason I can't bundle a linux-usable libfreeimage.a – well, that and I don't know if it'll work for the various linuxes out there. I imagine if there were a one-size-fits-all that it'd have been included in the FreeImage distribution.

    You may have better luck on the devkitPro forum.

    Comment by cearn — 2010-04-14 @ 19:41
  11. Is there an installer for wingrit?

    Comment by Tyler — 2010-12-27 @ 21:27
  12. 'Cause I keep getting an error message saying it was configured incorrectly and should reinstall...

    Comment by Tyler — 2010-12-27 @ 21:28
  13. You did something kind of silly when you where naming your classes in cldib... In cldib_wu.c and cldib_quant.h you use the WuQuantizer class which is the same name as freeimage which is WuQuantizer which ended up as a what I like to call a naming collision.

    The fix is simple just change the name of WuQuantizer to some like this CldibWuQuantizer. This should get rid of the compiler linker error and it will compile to linux just fine. Here a list of files that need to be edited.

    cldib_wu.cpp
    cldib_quant.h
    cldi_conv.cpp line 344

    Comment by Fred Cook — 2011-04-06 @ 3:33
  14. Is there a way of using transparency info in the png, to set the transparency of the loaded texture?

    Comment by slenkar — 2011-05-02 @ 17:57
  15. Alas, no.

    It's something I've been meaning to do, but this is not a minor operation, and time has been kind of lacking :\

    Comment by cearn — 2011-05-07 @ 15:14
RSS feed for comments on this post. TrackBack URL

Leave a comment




XHTML: You can use these tags:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Others: [code lang='*'], [wiki]




Powered by WordPress