| # Tools |
| |
| ## Sprite Builder |
| |
| The `sprite-builder` tool is intended to be a tool for packing 32blit images into byte-arrays, includes, or data files for use in code. |
| |
| The script outputs to a C++ byte-array and includes a header with information about the image size and palette. |
| |
| Have a look into the script for further details regarding the formats. |
| |
| ### Prerequisites: |
| |
| ``` shell |
| sudo python3 -m pip install construct bitarray bitstring pillow |
| ``` |
| |
| ### Usage: |
| |
| Currently `sprite-builder` knows two types of conversion: |
| |
| - Packed paletted images, and |
| - Raw images like RGBA, RGB888 or RGB565 |
| |
| Both conversions output data to stdout in C include style only. Output should be redirected into a file for usage (or copy-pasted from the terminal, if you wish). |
| |
| #### Packed |
| |
| A packed sprite can have a variable number of palette colours up to 255. |
| |
| Data is packed at the number of bits-per-pixel required to index each palette entry. |
| |
| IE: a two colour image will be packed with 1bpp |
| |
| If you start with the 32blit, start with this format. |
| |
| ``` shell |
| ./sprite-builder packed input-file.png |
| ``` |
| |
| #### Raw |
| |
| An unpacked sprite is just a block of raw surface data |
| in either RGBA (4 bytes), RGB888 (3 bytes) or RGB565 (2 bytes) format. |
| |
| Unpacked sprites are *huge* but useful for streaming into the framebuffer from storage. |
| |
| The max power of two sprite sizes supported by this file format are- |
| |
| - 64x64 in RGBA and RGB888 mode |
| - 128x128 in RGB565 mode |
| |
| ``` shell |
| ./sprite-builder raw --format RGB565 input-file.png |
| ``` |