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.