# Instructions: When starting the project for the first time, you'll have to wait for it to decompress all the data. This should only happen once. If you restart the project, you shouldn't have to wait for it to load again (Provided that you let the project finish loading* the first time). * Loading here means to get past the loading screen, not to finish playing the video For a consistent experience and faster loading time, go to TurboWarp: https://turbowarp.org/618759663 ------------------------------------------------------------------------- # Video information: - Resolution: 80 * 60 pixels - Frame rate: 10 frames/second - Colors: #000000; #7f7f7f; #ffffff (hopefully) ------------------------------------------------------------------------- # Why? In my very unsuccessful journey of searching for a way to write a quine* program in Scratch, I (kinda obviously) was experimenting with rendering images using the pen extension. After coming out with no success in writing the quine, I decided to "repurpose" (more like rewriting everything) the image renderer to do this. * A quine program is a program that prints its own source code with no external input. Read more at https://en.wikipedia.org/wiki/Quine_(computing) https://esolangs.org/wiki/Quine https://esolangs.org/wiki/User:Hakerh400/How_to_write_quines ------------------------------------------------------------------------- # How? First I downloaded the video and audio from Youtube using some sites on the internet. Then I used FFmpeg to lower the video's resolution and split it into a bunch of images at 5 frames/second. After that, I wrote some Javascript code to convert the images into a text file with each line containing compressed* information about a frame. I then upload that text file onto a list on Scratch, decompress the frames to another list, and then draw each frame with the decompressed data. * The reason we have to compress the data is that if you store too much data in a list, Scratch won't be able to save the project
# Notes: - Sometimes the video may get out of sync with the music. I've tried to reduce the problem as much as I can but if that does happen, just restart the project. If it gets too out of sync, you can change the FPS variable in the scripts (the higher the number, the faster the video) - If you want to see the Javascript code mentioned earlier, leave a comment below. If a lot of people want to see it, I'll put a link here ------------------------------------------------------------------------- # Credits: Credits to the original video "【東方】Bad Apple!! PV【影絵】" on Youtube (https://www.youtube.com/watch?v=FtutLA63Cp8) Credits to @griffpatch for his idea on run-length encoding (the compression algorithm I was talking about) Credits to me for everything else in the code I hate descriptions