I made an image demake tool for PICO-8. Load any image and create a dithered image that uses PICO-8 standard colors and/or hidden colors and is reduced to a maximum width and height of 128 x128. Depict supports Ordered, Atkinson, Floyd-Steinberg, and Sierra2 dithering as well as some artistic dithers: Rivers, Streets, Rain, Wind. Drag and drop the final result into the PICO-8 sprite sheet. Free on itch: Depict
All feedback welcomed.
Mix and match standard and hidden colors, but do do not exceed 16.
Rivers dither adds horizontal ripples.
Streets dither creates maze-like artifacts.
Rain dither makes vertical steaks.
Wind dither produces slashes.
Atkinson Dither
Ordered Dither
No Dither
I updated Depict to support hidden colors and added some artistic dithers. Try it out!
I added a slider so that now you can customize the size of your depictions.
I released a new version of https://bikibird.itch.io/depict, the image demake tool for PICO-8.
New features include:
- support for full 32 color cartridge labels using an enhanced workflow. Copy
__label__
data straight from the app into your .p8 file. - crop to square option to crop and center images.
- error diffusion strength setting for error diffusion dithers (Atkinson, Floyd-Steinberg, etc.) to control the degree of dithering.
- new artistic dithers: Hilldale, Lightning, and Smoke. (Streets dither renamed to City, by the way.)
Nice tool. The label option seems to auto crop a 128x128 square at the center of the source image.
Since you seem to have no problem generating images of "best" 16 colours, and images of all 32, you could add as an option to use the secondary palette :
generate a best 32 (all 32) image, and check if it's displayable.
If not, try with best 31, until you find one that works or just reach 16 colours.
Checking for display-ability is tricky : each line gives a set of colors that must be together in at least one of the two palettes. (or you could group by columns using the 90° screen rotate trick).
The constraints can be represented by a 32x32 binary matrix, where a 1 in line l and column c indicates that the colours l and c appear on the same line somewhere on the image. After that it becomes a graph theory partition problem, so usage of a dedicated library is recommended.
@RealShadowCaster, The auto-crop selects a square from the source image, using the smaller of the source image's height and width for the square's size. It then centers that square within the source image before applying the transformation to create the final image. The final image is 128x128 because that is what is required for a label.
The app does not create a "best palette." For sprite sheets it is up to the user to select up to 16 colors. If they select more than that, only the first 16 are used. Labels may use up to 32 colors because labels don't have a 16 color constraint.
Early in development, I experimented with using the median-cut algorithm for auto palette creation, but it resulted in murky images and hand selection worked better. This is something I may revisit in the future, though.
Your idea sounds very cool, but it involves a level of complexity that, frankly, I'm just not willing to pursue. If you want to experiment with full 32 color for graphics, I suggest turning on label maker mode and downloading the PNG. Then you can do some hand analysis to figure out primary and secondary palettes and scan line patterns, and tweak the pixels that aren't cooperating. That should result in some spectacular images if you are willing to invest the time.
[Please log in to post a comment]