The original Pokemon intro played using only pen -- My fourth project in... a few days that does this. Note, one it's loaded once (the variable on the top left reaches 100), it's safe to restart the project without having to load it again. Probably run on Turbowarp if you want this to run at near full speed: https://turbowarp.org/564349334/fullscreen?turbo&stuck This renders squares in a quadtree to compress the entire video. I thought I was the first to think about compression like this for a while, but before finishing this I remembered that @Layzej made something very similar like this first, just using circles instead of rectangles! https://scratch.mit.edu/projects/88979905/ Even still, mine is actually a major attempt to compress video, and while they did mention compression in their project, it seems clear that their main goal was to just test how well it compressed as a simple test for reducing list item counts, but more importantly, how cool it looked. There it compressed badly, but it looked very cool. I'm actually quite proud of the algorithm used here, especially because it makes use of every single bit it gets. Every single frame starts at 0, 0 with a square size of 256. 0 to End square splitting and use a solid color, 1 to split squares again (Not used if at minimum square size, implied 0) If squares will continue being split: { For all four corners of the square: { 0 to not draw a new square there, 1 to draw a new one If you draw a new square: { New Square Bits } } } else { If current processing the largest possible square { 0 to not draw anything, 1 to draw a solid color } rrrrggggbbbb for the solid square color } This gives the information for both encoding and decoding, but it's important to note that the decoding algorithm detects when it should or shouldn't split a square, giving the only main parameter for the algorithm (the "threshold" that needs to be exceeded for the type of square that will be drawn to be decided). If I'm not mistaken, this project leaves only a bit more than 331 bytes to spare before the 5mb limit. If I try to make the quality any higher it always seems to jump to 87 bytes over the limit. This is, to my knowledge, the highest quality video player of the entire Pokemon intro. (Update -- As of log 2 this has been fixed!) Some people with eyes may be able to tell that squirtle doesn't run during the one scene -- That's because I didn't set the maximum square size to be smaller than the screen size, so it decides that it's not worth it to render any new frames. I'm rather disappointed that Scratch doesn't run this at full speed, even when drawing circles instead of squares. I guess it makes sense because I'm doing recursion, but even still. As with my previous project, if anyone has any ideas on how to speed this up, or how to compress the project more (preferably without JSON editing), please tell me! I've updated this project a lot of times, occasionally changing code to be shorter (the "for each" block really saved a ton of bytes!), but mainly just to show a higher quality video. Most recent updates: Log 2: Updated encoder to prefer higher quality detail only if it's a main part of the scene (This is done by upping the splitting threshold the higher the depth). Gives a lot more detail while keeping a great size! Log 1: Updated video to have only ~367 bytes remaining before the 5mb limit