Hop to the Top: Bunny’s Revenge and
posted a video about some of the production process.
I did some of the graphics for the game, as well as writing the
code for the intro. For the graphics, I ended up writing some custom code
to automate some of the process, and it was an opportunity to learn about
a popular Amiga image format.
My typical process for making art for retro systems is:
- draw the piece in Krita and export as true color PNG
- use GNU Image Manipulation Program to convert it to an indexed PNG,
cleaning up the pixel art as needed in GIMP
- use some tool somewhere to turn the indexed PNG into a retro machine
In the case of the Amiga, I’ve used ArtPRO
on the Amiga in the past to convert PNG images to whatever format I needed. With all the art I
was making, and potentially remaking, I needed a faster
process. ArtPRO is good, but clicking buttons on retro machine software
to convert images was going to be too slow.
I was also running into an issue with GIMP not preserving the index order of
the color map I had created for the game. I think I had Remove Unused and
Duplicate Colors from Colormap enabled which was messing up the color
indexes, so be sure to disable that if you’re using a similar process.
Due to this, the resulting color map on the output images was all over the
place, so I needed to fix that issue.
I had two approaches I could take:
- automate the production of a sprite sheet encompassing all of the individual pieces
of art and convert it once, fixing the palette issue.
- convert each piece separately and load them as separate images, finding some
other way to speed up the conversion & palette fix.
I chose the latter since I preferred separate image banks to start, over
hard-wiring in sprite sheet locations, during initial development.
I decided to write a tool in Ruby that converts indexed color PNG images
directly to IFF Interleaved Bitmap (ILBM) files, enforcing the order of
the palette. It uses RMagick to load the image, and then implements
IFF ILBM writer code to create the Amiga-ready files. It even supports run
length encoding compression.
Here’s the source code. It drew heavily from
the IFF ILBM reference found here, as well as from a
lot of examining IFF ILBM files in hex editors. It only supports images up to
32 colors, so no Extra Half Brite or HAM images. If you end up using
it, let me know!