                       .x.
   |||||::::.. .     .d888b.     . ..::::|||||$$$$$88888880000000000000000000
   |||::::.. .     .d8888888b.     . ..::::|||||$$$$$888888800000000000000000
   |::::.. .     .d88888888888b.     . ..::::|||||$$$$$8888888000000000000000
   :::.. .     .d888888888888888b.     . ..::::|||||$$$$$88888880000000000000
               8888888888888888888
               8888888P'.`Y8888888
               8P'88P'.d8b.`Y88`Y8        __________ ______ _______ _____    
       .d88888P'  P' d88888b `Y  `Y88888b.          \      \       \     \
     .d888888888P'   8888888   `Y888888888b.        |       |       |     |
   .d888888888P .d88888P'Y88888b.`Y888888888b.      |       |       |     |
 .d888888888P'.d88888P'   `Y88888b.`Y888888888b.    |       |       |     |
 `Y888888888b.`Y88888b.   .d88888P'.d888888888P'    | |     | |     |     |
   `Y888888888b.`Y88888b.d88888P'.d888888888P'    __|     __|     __|     |_
     `Y888888888b.   8888888   .d888888888P'     |    \     \ |      |      |
       `Y88888b.  b. Y88888P .d  .d88888P'|_____/_____|\____/________/______/
               8b.88b.`Y8P'.d88.db        t o p r i g h t b o t t o m l e f t
               8888888b. .d8888888
               888888888Y888888888
   :::.. .     `Y888888888888888P'     . ..::::|||||$$$$$88888880000000000000
   |::::.. .     `Y88888888888P'     . ..::::|||||$$$$$8888888000000000000000
   |||::::.. .     `Y8888888P'     . ..::::|||||$$$$$888888800000000000000000
   |||||::::.. .     `Y888P'     . ..::::|||||$$$$$88888880000000000000000000
    . . . .            `Y'                                           . . . .

 TOP RIGHT BOTTOM LEFT presents "STRIPES"
 at the Gravedigger Compo at Nordlicht 2025

 Only stripes.
 Only three colors.
 Only ten years too late.

 code and sync by KeyJ
 music by GOOD&GUNSTIG

 used third-party material and libraries:
 - a few modified clipart graphics found on the internet (no "AI" slop!)
 - Python + PyInstaller, PyGame / SDL, Pillow, BASS

 This entry is based on a prototype for a demo targeted at the first-generation
 Raspberry Pi back in 2015. KeyJ sent around a "devkit" to the other group
 members, so they could play around with the myriad parameters of the stripe
 shader, but nothing ever came out of that. For Nordlicht 2025, the project has
 been resurrected, a suitable (read: short but groovy) soundtrack has been
 excavated from the group's archives, and another two weeks of work were spent
 on turning the loose collection of parts into something that looks a bit like
 a demo, if you squint.


 SOME TECHNICAL INFO:

 Rendering is done with a single full-screen pixel shader and a few control
 textures, all in OpenGL (ES) 2.0. A custom implementation of a GNU Rocket
 synctracker client is used for syncing.

 This release archive contains the Windows executable version. The source code
 and GNU Rocket XML sync file is included in the sources.zip file. Unpack the
 files into the base directory, add a system-appropriate bass.dll or libbass.so
 from https://www.un4seen.com/bass.html, install Python 3.x as well as the
 PyGame and Pillow libraries, and you should be ready to go. (Tested on
 Windows and Linux, with Python 3.12 and 3.13, on x86_64.)
 If stripes.py is launched while a Rocket editor is running, it automatically
 connects to that; otherwise, it acts as a player. The editor's Ctrl+E shortcut
 also updates the .rocket XML file, so the binary and XML sync data can't go
 out of ... sync.
 To see what the various mapModes and colorModes do, run `stripes.py -v'.
 New mapModes can be created by simply putting .png or .jpg image files with
 a number at the beginning of the file name into the `stripes_assets`
 directory. (Most of the existing mapModes are created that way already.)
 Note that regardless of the size of the image files, the internal resolution
 of the map is always `stripes.VirtualSize', i.e. currently 1280x720. You can
 change that, but then you need to adapt all `stripes:scale' values too.
