UFO from Planet Slime by k2 [web] & Peisik [web] & St. Vincent And The Grenadines [web]

                            K2, Peisik and SVatG PRESENT

                           -=: UFO from Planet Slime :=-

  b0rje       ......... MP3 decoder
  cce         ............... music
  halcy       .... concept, 3D gfx,
              ... blender debugging
  PoroCYon    ................ code
  Tiger[DS]   ......... MP3 decoder

This was a fun one to make. On monday? tuesday? I asked around for ideas for
a compofiller, and halcy came up with https://halcy.de/slimeo.gif , and old
Blender animation he made, and cce came up with a track he had lying around.

So off I went to make it into an actual demo. Getting the UFO itself on the
console wasn't too difficult, and I had a semifinished bloom effect lying
around to put on top of it, as well as the fancy 'glitch' lighting effect from
Weiche Kekse. However, then I also needed the text/title overlay, extra buffers
for the bloom effect, and something to put on the bottom screen as well.
Fitting this all in the 656k of VRAM definitely did prove to be an interesting
exercise. Bloom eats two of the main 128k banks, the 3D textures need 2 extra
128k banks, a 256-color version of the title/text overlay managed to fit in the
combined E and F banks (96k), bank G (16k) was needed for 3D texture palettes,
so I had banks H and I (48k total) left for the bottom screen. Clever usage of
overlapping background graphics data, windowing effects, "mode 7" effects and
lots of raster interrupt tricks managed to make it possible.

In the process of doing that, I actually bumped upon a few extra hardware
quirks related to how background graphics are backed by VRAM, found a timing
bug in melonDS, and some more fun stuff, which I had to work around. So here's
how the emulators handle it:

* no$gba: sniffing glue as usual
* desmume: surprisingly, works well enough?!, but the 3D graphics are much
           darker than on real hardware. Things also start borking due to the
           MP3 decoder.
* melonDS: shits itself on the bloom effect (display capture reads all return
           0) due to a timing bug, otherwise would've worked perfectly.

And all this in a few days, while also having a fever (I hope it's not
COVID-19, but after 2 or 3 days the only other symptom I have is a sore throat,
so, probably not. Hopefully.)

Also, can we please have some competition on this wonderful little platform? :)


17:42 <@fincs> DS is still oldskool

We greet:
  Adapt - Alcatraz - Calodox - CyberCat - Desire - devkitPro - dotUser - DSS
   Elix - EOS - Fuel - Impure 1940 - Ivory Labs - Jumalauta - melonDS - MFX
     Monad - Nuance - Polarity - Poo-Brain - Popsy Team - PVM - Rabenauge
     RBBS - Royal Elite Ninjas - Shitfaced Clowns - Slipstream - SunSpire
       Suricrasia Online - STS - TiTAN - TRBL - WRD - xq - Xylem - #lsc