Wonderball (aka Happy Birthday Diver) by introspec & triebkraft

Full title:     Wonderball (aka Happy Birthday Diver)
Label:          introspec & triebkraft

Credits:        introspec (design & code)
                key-jee^tbk (music)

                The running man animation was made using 12 frames
                of the video about Interactive Media Canvas "IRIS"
                by HYBE (2012): http://hybe.org/blog2/

Requirements:   A ZX Spectrum with 128K of memory (or compatible)
Stereo format:	ABC
Duration:       2:38 (looped)
Contacts:       zxintrospec@gmail.com

Notes:          Happy birthday, diver^4d!

                This demo is horrendously delayed and I won't bore
                you with a range of convincing excuses that explain
                why it is so. Put simply, this seems to be the best
                (the quickest & the nicest) I can do at this stage.
                I hope you like it anyway!

                The code here is mostly original, although often
                suboptimal. My knowledge of monster^sage-style
                stack-based 8x8 chunk blitters comes mainly from
                the example coded for me last year by psndcj^tbk;
                many thanks for this mate, your help is hugely
                appreciated. Few things that I do with these chunks
                seem original to me, but I am sure there must be an
                ugly Russian demo from 1990s which does most of it
                in a frame :)  The music player is interesting
                because this is the fastest player of compressed
                PSGs on ZX Spectrum (~450 t-states per frame on
                average, less than 1K t-states in the worst case
                scenario). The demo kernel is a slightly modified
                version of the kernel used earlier this year in
                "Down"; I first wrote it based upon the sources of
                the Triebkraft demo kernel by psndcj^tbk and jtn^4d,
                which were kindly given to me by psndcj^tbk. The
                kernel is using the ZX7 "mega" decompression routine
                by Einar Saukas, with contributions from Urusergi
                and Team Bomba.

Thanks:         key-jee^tbk for allowing me to use your nice track,
                trefi^debris for his unhealthy facination with demo
                kernels, hacker vbi for his continued interest,
                optimism and enthusiasm, nyuk for "Zapilyator" (TM),
                which proved to be extremely useful here ;)
                nq^skrju for regular sanity checks, diver^4d for
                the hexagonal gigascreen palette, which made my life
                much easier, and last, but not least, psndcj^tbk,
                for getting me into this mess in the first place!

                Greetings to aaa, alone coder, bolek^4d, crash
                nicker^debris, dman^pcb, evills^zt, g0blinish,
                gasman^hprg, kotsoft, lordcoxis, mike^zt, mister
                beep, nodeus^lf, prof^4d, psb, random, rob^entire,
                sq^skrju, TSL, true-grue, tutty^debris,
                tygrys^speccy.pl, unbeliever, utz.

Software used:  SjASMPlus ver.1.07RC8 by Aprisobal,
                based on the SjASM by Sjoerd Mastijn;
                Processing ver.2.0;
                MATLAB 2010a;
                ZX7 compressor by Einar Saukas;
                Spectaculator ver.8.0 by Jonathan Needle;
                UnrealSpeccy ver.0.38.1 by SMT and other people;
                UnrealSpeccy modification by TS-Labs and EARL;
                ZXSpin ver.0.7 by Paul Dunn;
                ZX Paintbrush ver.2.3.5 by Claus Jahn;
                Photoshop CS2;
                Irfan View ver.4.30 by Irfan Skiljan;
                Far ver.2.0 by Eugene Roshal & FAR Group;
                Far plug-ins to work with ZX files by HalfElf;
                TRDtool ver.2.2 by Shiru;
                TRX2X ver.1.2 beta 2 by Alex Makeev;
                monoscl by Shiru;
                mktap ver.5 by Jan Bobrowski;
                7-zip ver.9.22 beta by Igor Pavlov;
                as well as various in-house software.