Palette Reference¶
All palettes are implemented in scripts/lib/palettes.py. Choose one that fits the target sprite size and intended mood.
Available Palettes¶
| Name | Colors | Vibe | Best at size |
|---|---|---|---|
gameboy |
4 | Classic GameBoy greens, high contrast | 16, 32 |
pico8 |
16 | PICO-8 fantasy console palette | 16, 32 |
db16 |
16 | Dawnbringer DB16, warm/broad hues | 32, 64 |
db32 |
32 | Dawnbringer DB32, strong saturation range | 32, 64 |
nes |
54 | NES approximation | 32, 64 |
aap64 |
64 | Adigun Polack, wide-gamut "AAP-64" | 64, 128 |
Pick Guide¶
- Going retro-faithful:
gameboyfor monochrome green nostalgia;pico8for bright 80s arcade;nesfor 8-bit console look. - Going modern-indie:
db16/db32— well-tuned by community, pleasant saturation. - Going detailed:
aap64— best for larger sprites (64+ px) where you have room for color.
Palette Color Lists¶
GameBoy (4)¶
PICO-8 (16)¶
#000000 #1d2b53 #7e2553 #008751
#ab5236 #5f574f #c2c3c7 #fff1e8
#ff004d #ffa300 #ffec27 #00e436
#29adff #83769c #ff77a8 #ffccaa
DB16 (16)¶
#140c1c #442434 #30346d #4e4a4e
#854c30 #346524 #d04648 #757161
#597dce #d27d2c #8595a1 #6daa2c
#d2aa99 #6dc2ca #dad45e #deeed6
DB32 (32)¶
#000000 #222034 #45283c #663931
#8f563b #df7126 #d9a066 #eec39a
#fbf236 #99e550 #6abe30 #37946e
#4b692f #524b24 #323c39 #3f3f74
#306082 #5b6ee1 #639bff #5fcde4
#cbdbfc #ffffff #9badb7 #847e87
#696a6a #595652 #76428a #ac3232
#d95763 #d77bba #8f974a #8a6f30
NES (54 approx., 64 slots with repeats)¶
See scripts/lib/palettes.py for the full hex list.
AAP-64 (64)¶
See scripts/lib/palettes.py. Full list by Adigun Polack — strong general-purpose palette for detailed pixel art.
Why Nearest-Neighbor + Quantize Matters¶
Diffusion models emit anti-aliased RGB. Direct downscale (Lanczos) keeps sub-pixel AA — pixels won't look "pixel-y". Nearest-neighbor alone still keeps arbitrary colors off the palette. The pipeline combines:
- Lanczos → 2× target size: preserves detail while reducing AA energy.
- Nearest-neighbor → target: locks to the pixel grid.
Image.quantize(palette=...): snaps every color to the nearest palette entry.- Alpha threshold at 128: kills semi-transparent AA edges.
Result: RGBA PNG with exactly the target palette's colors, hard edges, crisp alpha.