📅November 9th, 2025
This is a handy palette rotation art tool.
It's really simple, you create a static image (e.g., a PNG file) in an external editor of your choice and it colorizes the result into a multi-palette GIF image file. You can preview and scrub through the frames as you make adjustments. Comes in handy since there are not a lot of modern art tools (that is- Win32 and not DOS!) that prioritize support for indexed color much less make color cycling easy.
Talking to retro pixel artists nowadays I found none of them do color cycling art. Even when I offered to commission them. They indicated to me lack of toolchain is part of the reason why. They told me some other reasons, like they just find it tedious or they're not used to working that way, fair enough. I think it's a dying art sadly. This tool fixes the toolchain part.
I avoided having to invent a new file format by having a kind of convention for representing palette data at the top of your source image. There's a mini specification for it. Basically, you list out a 'reference palette' that your framebuffer will be comprised of, and then a set of N palettes that will be used to color the final image. The result animation will have N frames. Each palette is prefixed by a magenta pixel, as a delimiter. This is convenient for easy editing and offers some flexibility in how you want it to appear in the document.



I find it easier to use grayscale for cycled colors but obviously it's up to you.
You can do color cycling like for the water example above, or just a recoloring like the yellow lights.
Before doing this project, I didn't actually know that GIF supported multiple palettes since I never really looked into it. Most GIFs I inspected "out in the wild" used one global palette for the whole thing. And the tools I used for creating GIFs didn't expose the option for multi-palette. But, it is supported in the underlying format. If you're using Windows Imaging Component to encode GIFs, use an indexed color format like GUID_WICPixelFormat8bppIndexed and call IWICBitmapEncoder::SetPalette on the frames to set it. That's how this tool does it anyway.
Link to project: https://github.com/clandrew/MultiPaletteGif/
You can download the latest release here.