PeyloW of T.O.Y.S. presents, for the "Falcon GEM palette photo" competition
at Sommarhack 2026:
P A U L A P P L E
On March 31, Apple turned 50. The finale of the celebration was Sir Paul
McCartney himself, playing under a glowing rainbow arch in Apple Park - the
old Apple logo reborn in light, with a Beatle beneath it. This is that
moment, squeezed through the eye of a needle and out the other side as 256
colours of Atari Falcon.
The big screen carries Paul's face in close-up while the rainbow burns
across the stage below. Getting those colours to survive the trip to the
Falcon's GEM palette - without the whole thing collapsing into grey mush -
is the whole game here.
--- The technical bit ---------------------------------------------------
falcpal.py remaps the source photo to the exact 256-colour Atari Falcon
palette in falcpal.gif, at 640x480, with Floyd-Steinberg dithering.
The source is a Display P3 / PQ (HDR) photo. Its embedded ICC profile is
applied to sRGB before quantising, so the tones land right - deep darks,
bright highlights - instead of the washed-out look you get from reading
the PQ values as plain sRGB. Saturation is then pushed along a quadratic
Bezier curve over luminance, so the rainbow pops while the darks stay neutral.
Command used for this image:
./falcpal.py paulapple.png paulapple.gif --b0 1.0 --b1 2.2 --mid 1.6
--b0 saturation boost at 0% luminosity (default 1.0)
--b1 saturation boost at 100% luminosity (default 2.0)
--mid Bezier control point between b0/b1 (default 1.5)
1.0 = no change; >1.0 = more saturated. b0=1.0 leaves the darks alone;
--mid above the b0->b1 line bends the boost in earlier, below delays it
to the highlights. --palette picks the palette to match (default
falcpal.gif).
Run ./falcpal.py --selftest to verify the boost curve.
Requires Python 3, Pillow, NumPy.