Watch Pokemon intro as Full Motion Video (FMV). SPACE = replay the video O = toggle outlines on/off Please be patient. Loading can take a minute on slower devices. Used DeepSeek V4.1 flash max with $0.48 credits spent.
FMV is a balance between 4 things: compression, quality, load time and runtime. This sacrifices load time for the other three: preloading all 960 frames (16 fps, res4 120x90 colour + res1 vector lines, project.json 4.79 MB) before playing. Edges drive perceived quality most, so vector outlines and colour feathering at edges were targeted over resolution. No frame deltas with an avg 4kb per frame in base256. Colour RLE: a 120x90 grid of 4px cells snapped to one of 16 scene-clustered 32-colour palettes; rows run-length encoded, a short run with a top 4 colour is single byte. Full colour depth is kept for a little extra draw count. The avg drawcount is 3k with only 1 frame skipped on android at 16fps. Vector edge outlines: ImageMagick for the edge mask (Sobel on a 0.6px-blurred grey frame, morphological close); NumPy/Pillow for skeletonise, trace, merge parallel ink lines, re-skeletonise, RDP simplify with junctions held. End-trim 1px, drop tiny paths. Packed as varint counts + zigzag deltas, drawn last at 3px, 66% transparency. This is based on @ThePenPerson badApple outlines https://scratch.mit.edu/projects/1225174815 and my circle food with clone list packing I tried a (luma) grayscale tile atlas over a pen colour (chroma) based but lost on size and runtime: a stamp per edge block is ~6x the outline segments and +2.3 KB/frame. Outlines suit cartoon art; tile edges plus pen fill better suit live-action. extract edges: https://gist.github.com/slyi/06670c08e54400a38e653d44565aa7b8