rgbgfx
—
Game Boy graphics converter
rgbgfx |
[-ADfFhmPTuVv ] [-o
outfile] [-a
attrmap] [-d
depth] [-p
palfile] [-t
tilemap] [-x
tiles] file |
The rgbgfx
program converts PNG images into the Nintendo
Game Boy's planar tile format.
The resulting colors and their palette indices are determined
differently depending on the input PNG file:
- If the file has an embedded palette, that palette's color and order are
used.
- If not, and the image only contains shades of gray, rgbgfx maps them to
the indices appropriate for each shade. Any undetermined indices are set
to respective default shades of gray. For example: if the bit depth is 2
and the image contains light gray and black, they become the second and
fourth colors - and the first and third colors get set to default white
and dark gray. If the image has multiple shades that map to the same
index, the palette is instead determined as if the image had color.
- If the image has color (or the grayscale method failed), the colors are
sorted from lightest to darkest.
The input image may not contain more colors than the selected bit
depth allows. Transparent pixels are set to palette index 0.
-a
attrmap
- Generate a file of tile mirroring attributes for OAM or (CGB-only)
background tiles. For each tile in the input file, a byte is written
representing the dimensions that the associated tile in the output file
should be mirrored. Useful in combination with
-m
to keep track the mirror direction of mirrored duplicate tiles.
-A
- Same as
-a
, but the attrmap file output name is
made by taking the input filename, removing the file extension, and
appending .attrmap.
-C
- Use the color curve of the Game Boy Color when generating palettes.
-D
- Debug features are enabled.
-f
- Fix the input PNG file to be a correctly indexed image.
-F
- Same as
-f
, but additionally, the supplied command
line parameters are saved within the PNG and will be loaded and
automatically used next time.
-d
depth
- The bit depth of the output image (either 1 or 2). By default, the bit
depth is 2 (two bits per pixel).
-h
- Lay out tiles horizontally rather than vertically.
-m
- Truncate tiles by checking for tiles that are mirrored versions of others
and omitting these from the output file. Useful with tilemaps and attrmaps
together to keep track of the duplicated tiles and the dimension mirrored.
Tiles are checked for horizontal, vertical, and horizontal-vertical
mirroring. Implies
-u
.
-o
outfile
- The name of the output file.
-p
palfile
- Output the image's palette in standard GBC palette format - bytes (8 bytes
for two bits per pixel, 4 bytes for one bit per pixel) containing the
RGB15 values in little-endian byte order. If the palette contains too few
colors, the remaining entries are set to black.
-P
- Same as
-p
, but the palette file output name is
made by taking the input PNG file's filename, removing the file extension,
and appending .pal.
-t
tilemap
- Generate a file of tile indices. For each tile in the input file, a byte
is written representing the index of the associated tile in the output
file. Useful in combination with
-u
or
-m
to keep track of duplicate tiles.
-T
- Same as
-t
, but the tilemap file output name is
made by taking the input filename, removing the file extension, and
appending .tilemap.
-u
- Truncate tiles by checking for tiles that are exact duplicates of others
and omitting these from the output file. Useful with tilemaps to keep
track of the duplicated tiles.
-V
- Print the version of the program and exit.
-v
- Verbose. Print errors when the command line parameters and the parameters
in the PNG file don't match.
-x
tiles
- Trim the end of the output file by this many tiles.
The following will take a PNG file with a bit depth of 1, 2, or 8, and output
planar 2bpp data:
$ rgbgfx -o out.2bpp in.png
The following creates a planar 2bpp file with only unique tiles,
and its tilemap out.tilemap:
$ rgbgfx -T -u -o out.2bpp in.png
The following creates a planar 2bpp file with only unique tiles
(accounting for tile mirroring) and its associated tilemap
out.tilemap and attrmap
out.attrmap:
$ rgbgfx -A -T -m -o out.2bpp in.png
The following will do nothing:
$ rgbgfx in.png