PVR Spritesheets
(currently working on this)
About this tutorial
In this tutorial you will learn:
- Generating a spritesheet from a directory full of single images automatically.
- Converting the spritesheet into a PVR paletted texture automatically.
- Loading the spritesheet into the PVR for drawing.
- Setting up the palette for drawing.
- Drawing a user interface (with a dynamic health bar).
- Drawing animated characters.
This will be the end result:
Required software
Before you can get started, you will need to install two tools.
TexturePacker
The first tool you need is TexturePacker. It packs single images together into one big spritesheet, so you don't need to do this manually. We will make it do it for us using Make.
TexturePacker has some Pro features, but this tutorial limits itself to its free features.
This image should give you an idea about this tools's usefulness:
It will also create text files of the following format:
mage_mage_combat6, 244, 103, 122, 103, 0, 0, 0, 0 mage_mage_combat7, 366, 103, 122, 103, 0, 0, 0, 0 mage_mage_idle0, 0, 206, 79, 93, 0, 0, 0, 0 mage_mage_idle1, 79, 206, 79, 94, 0, 0, 0, 0 mage_mage_idle2, 158, 206, 82, 94, 0, 0, 0, 0 mage_mage_idle3, 240, 206, 85, 94, 0, 0, 0, 0
The example code will parse this information to find out where each sprite within the spritesheet is.
texconv
The next tool you need is texconv by tvspelsfreak.
texconv is an alternative to KOS' vqenc for converting images such as PNG into texture formats supported by the Dreamcast's PVR graphics chip. It doesn't create KMG files, but provides other nice features. For this tutorial paletted textures are essential.
Another feature that is used is its preview feature. It will basically convert the converted texture back to PNG so you can check the quality of the conversion.
texconv has a dependency on Qt5, so install that first.
On Debian-based systems this will get you running:
sudo apt install qt5-default qtbase5-dev git clone https://github.com/tvspelsfreak/texconv cd texconv qmake make
You can then use ./texconv. I suggest you put it somewhere in your PATH for convenient global access.
texconv offers the following options (options used in this tutorial are marked as bold):
Usage: ./texconv [options]
Texture formats: BUMPMAP PAL4BPP ARGB4444 YUV422 ARGB1555 RGB565 PAL8BPP Options: -h, --help Displays this help. -i, --in <filename> Input file(s). (REQUIRED) -o, --out <filename> Output file. (REQUIRED) -f, --format <format> Texture format. (REQUIRED) -m, --mipmap Generate/allow mipmaps. -c, --compress Output a compressed texture. -s, --stride Output a stride texture. -p, --preview <filename> Generate a texture preview. -v, --verbose Extra printouts. -n, --nearest Use nearest-neighbor filtering for scaling mipmaps. -b, --bilinear Use bilinear filtering for scaling mipmaps. --vqcodeusage <filename> Output an image that visualizes compression code usage.