Gconvert: Difference between revisions
Jump to navigation
Jump to search
Line 39: | Line 39: | ||
</source> | </source> | ||
* The ''pointer-size'' attribute in the <maps> element depends on the video mode you will be using. For mode 1, it should be 16. For all other tile-based modes, use 8. Check [[Video Modes]] for video modes information. | * The ''pointer-size'' attribute in the <maps> element depends on the video mode you will be using. For mode 1, it should be 16. For all other tile-based modes, use 8. Check [[Video Modes]] for video modes information. | ||
*Use the '''type="code"''' attribute of the output element to define the code tiles output type. This will generate a valid C include file. Currently, only 6x8 tile sizes are supported. | |||
===Output Example=== | ===Output Example=== |
Revision as of 20:48, 2 August 2010
Gconvert is a command line tool that converts an image into a tileset and one or more maps. It's a C/C++ port from an earlier Java tool and was made to integrate more nicely with the makefiles. Check the Megatris demo project for an example of use.
Features (v1.1)
- Accepts raw (8bpp, no headers) and PNG-8 images
- Uses an XML definition file to describe the input/output files and maps to be generated
- Removes duplicate tiles
- Tileset and maps are generated in a single C include file
- Distinct variable names can be specified for the tileset and maps
- Two ouput types: 8bpp (8 bits per pixel) or "code tiles" for use with video mode 8
Usage
C:\>gconvert mydef.xml
Definition file example
<?xml version="1.0" ?>
<gfx-xform version="1">
<input file="..\data\graphics.png" type="png" tile-width="6" tile-height="8" />
<output file="..\data\graphics.inc">
<tiles var-name="tetrisTiles"/>
<maps pointers-size="16">
<map var-name="map_main" left="0" top="9" width="40" height="28"/>
<map var-name="map_title" left="0" top="37" width="33" height="9"/>
</maps>
</output>
</gfx-xform>
Useful information about the definition file
- If your input file is a raw image file (8bpp, no header), you have to define its width and height in pixels. Example:
<input file="example.raw" type="raw" tile-width="8" tile-height="8" width="96" height="80" />
- If your input file is a PNG image file, you don't have to define its width and height in pixels. Only 256 colors, palette-based PNG files are supported (PNG-8). Example:
<input file="example.png" type="png" tile-width="8" tile-height="8" />
- The pointer-size attribute in the <maps> element depends on the video mode you will be using. For mode 1, it should be 16. For all other tile-based modes, use 8. Check Video Modes for video modes information.
- Use the type="code" attribute of the output element to define the code tiles output type. This will generate a valid C include file. Currently, only 6x8 tile sizes are supported.
Output Example
/*
* Transformation file: ../data/gconvert.xml
* Source image: ..\data\graphics.png
* Tile width: 6px
* Tile height: 8px
*/
#define MAP_ANIM_SPARK4_WIDTH 7
#define MAP_ANIM_SPARK4_HEIGHT 4
const int map_anim_spark4[] PROGMEM ={
7,4
,0x15,0x25,0x26,0x27,0x28,0x29,0x15,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x51,0x52,0x53,0x54,0x55,0x56
,0x57,0x15,0x63,0x64,0x65,0x66,0x67,0x15};
#define MAP_ANIM_SPARK3_WIDTH 7
#define MAP_ANIM_SPARK3_HEIGHT 4
const int map_anim_spark3[] PROGMEM ={
7,4
,0x15,0x15,0x15,0x2a,0x15,0x15,0x15,0x15,0x3c,0x3d,0x3e,0x3f,0x40,0x15,0x15,0x58,0x59,0x5a,0x5b,0x5c
,0x15,0x15,0x68,0x69,0x6a,0x6b,0x6c,0x15};
...
#define TETRISTILES_SIZE 450
const char tetrisTiles[] PROGMEM={
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 //tile:0
...
};
Tutorial
Generating Tiles and Maps with gconvert
Downloads
Definition file XML Schema: http://belogic.com/uzebox/schemas/gconvert_1_0.xsd
Sources are available here: http://code.google.com/p/uzebox/source/browse/#svn/trunk/tools/gconvert
Download the latest binaries here: http://code.google.com/p/uzebox/downloads/list