FMV of Touhou fan film "bad apple" Updated 31/1/2025: Increased render speed a little and added the stats for nerds like me ;-) Updated 14/2/2025: added grayscale Music by M. Minoshima Original lyrics by Nomico Animation by Anira Lyrics translated by Gasman
480x360 @ 15fps (3286 frames) with a base512 decoder using 512 3x3 tiles. 63 million tiles (567 million pixels) encoded to a 4.7mb list. It is decent compression and reasonable speed. 96 tiles give 99.5% of fmv image data so only 1/2 percent is encoded as a double byte. The original video had motion blur gray which needed to be converted to monochrome using a 1x3 hline dither. Monochroming the motion blur part, took me too long to figure out. After getting base256 working for wire walk, i felt I could try base512. My previous 1 bit scanner would be too big and slow. I'm now more comfortable with python, so tried learning pillow image library. The scanner and encoder code in the python sprite as a comment. The 512 monochrome tiles are all combinations of 3x3 bits (2 to the power of 9). Used a tile frequency list to further reduce encoded size. Stamping can be slow and revert to pen moves for RLEs. It set brightness by sum of 1s in binary of tile value for a crude grayscale effect. There is 3 issues with this method 1. I get a weird issue when I use 3x3 tiles as it try to stamp half pixels, so I needed to pad pixel south and east to use transparent 4x4 tile. Any suggestions on a fix? 2. The 512 tiles costumes and 512 Unicode costumes take 180kb of your precious project.json 5mb limit :-( 3. 1x3 dither artifacts are not all grayed out Check out @52525rr masterpiece bad apple, in it full glory. https://scratch.mit.edu/projects/976545683 This project is heavily inspired by & reuse some of the logic as I tried to reverse engineer his method with 3x3 tiles to see if i could save space. Source video used https://scratch.mit.edu/discuss/youtube/nC5IVYD9FA4 A 9x9 may improve compression further and then fill non solid black using 3x3 tiles. It could have done @ 30fps if upload from scratch2 client, as that can upload 10 MB but prefer to stick to scratch3