8 ms·
Can anyone clarify what's going on here?
by aportnoy 8y ago
Can anyone clarify what's going on here?
- jmillikin 8y agoThis looks like a Demoscene[0] site. It's sort of a contest to create artistic computer programs with the smallest possible executable size. I found a YouTube link in the description: https://www.youtube.com/watch?v=8Q1vN51o-Dg https://www.youtube.com/watch?v=8Q1vN51o-Dg Bad Apple[1] is a famous Flash animation from ~10 years ago set to a pop song remix of a video game stage theme. Because it's so stylized there's a whole bunch of parodies / homages that imitate it. Here it's parodying old iTunes commercials[2]. There's another famous demoscene program named 8088 Domination that includes a version of the same song: https://youtu.be/_yTsCOy7j0M?t=168 https://youtu.be/_yTsCOy7j0M?t=168 Keep in mind while you're watching these videos that they're showing full-motion video and audio playback on a machine with single-digit Mhz of processing power. I like to think about this every time Slack pegs one of my cores to render an emoji. The OP link says the program runs on a "BK-0010/11M" which Wikipedia says[3] is a Soviet clone of the PDP-11. Looks like it's a popular platform on this demoscene gallery. [0] https://en.wikipedia.org/wiki/Demoscene https://en.wikipedia.org/wiki/Demoscene [1] https://www.youtube.com/watch?v=9lNZ_Rnr7Jc https://www.youtube.com/watch?v=9lNZ_Rnr7Jc [2] https://www.youtube.com/watch?v=X2HFiwfvsc0 https://www.youtube.com/watch?v=X2HFiwfvsc0 [3] http://en.wikipedia.org/wiki/Electronika_BK http://en.wikipedia.org/wiki/Electronika_BK
- anyfoo 8y agoGood summary. A bit more generally, demos are often written to run under constrained conditions. They are also often written for competitions that set those conditions. Sometimes, like in this case, the constraints are entirely dictated by the hardware, and the objective is just to make the most impressive demo given the particular device’s limitations, very often pushing the hardware way past what was commonly thought to be possible. Modifying the hardware is usually not allowed, but playing “dirty” in software by using undocumented and maybe even unintended, obscure implementation details of the platform is highly encouraged. No stone is left unturned. 8088MPH (by the same makers as 8088 Domination) is a very good example. For decades, nobody knew it would be possible to display 1024 colors, at the same time, on the original PC (which most nominally supports only 4 colors at the same time, which could be stretched to 8 with a trick). You can watch the demo here: https://youtu.be/yHXx3orN35Y https://youtu.be/yHXx3orN35Y And read about the methods used and invented here: https://trixter.oldskool.org/2015/04/07/8088-mph-we-break-all-your-emulators/ https://trixter.oldskool.org/2015/04/07/8088-mph-we-break-al... Sometimes, there are also additional constraints like size limits, which is especially popular on more advanced hardware like modern PCs. For example, the objective could be to make the most impressive demo in 1024 bytes.
- mrob 8y ago>which could be stretched to 8 with a trick The old tricks of 160x100 pseudo-text mode and composite artifact colors both allowed for 16 colors at once when used in the obvious manner. 8088MPH reached 1024 colors by combining both tricks: https://int10h.org/blog/2015/04/cga-in-1024-colors-new-mode-illustrated/ https://int10h.org/blog/2015/04/cga-in-1024-colors-new-mode-...
- wiz21c 8y agoor 128 bytes : https://www.youtube.com/watch?v=cD49RXnEGNE https://www.youtube.com/watch?v=cD49RXnEGNE (yep you read it, that's 128 bytes; to give you an idead the tiniest GIF image is 26 bytes long). This post is 191 bytes long :-)
- bane 8y agoTo add a little more commentary on why this is particularly impressive, they're more or less using the stock hardware, with the only "modifications" being some custom peripherals. But those peripherals still have to move data through the I/O ports of the original machine. The pouet comment by one of the authors says that it isn't even able to read data off of the IDE hard drive at 16kB/frame @ 30 fps (480kB/sec) because it's so slow. On top of it, COVOX audio device requires the CPU to generate the sound and pulse it out of the parallel port where it acts as a DAC. Here it's generating a 22.725Khz stereo signal along with the hard drive I/O along with the computation required to decode the video stream and display it. This machine is ~.5MIPS and is a clone of a PDP-11. In demoscene conventions, this actually is a controversial production because it's technically a "video" and demoscene productions need to generate their display and run in real time. But there's lots of argument that the ability to harness this machine in the way they did is computationally impressive enough that there's some debate over it. However there are some categories of demoscene works that also allow for these kinds of productions and the debate is really over how it was competed more than what it is. For comparison, here's what games on the BK normally look like https://www.youtube.com/watch?v=-IOre6AAcGc https://www.youtube.com/watch?v=-IOre6AAcGc https://www.youtube.com/watch?v=X7zVVeirSdI&t=161s https://www.youtube.com/watch?v=X7zVVeirSdI&t=161s
- PhasmaFelis 8y ago> Bad Apple[1] is a famous Flash animation from ~10 years ago set to a pop song remix of a video game stage theme. I just realized that the video can be summarized as "a downsampling of a parody of a music video of a remix of a song from a niche Japanese video game." The internet is weird.
- PhasmaFelis 8y agoAddendum: I just told some friends in chat that I was watching a downsampling of a parody of a music video of a remix of a song from a niche Japanese video game running on a Soviet personal computer from 1984. They called me a hipster. :<
- Annatar 8y agoIt's a demo. Coded in assembler. On a horribly slow (4 MHz) Russian PDP-11 clone with no DMA capabilities. 72 cycles to move a word from one memory location to another. http://www.pouet.net/prod.php?post=836903 http://www.pouet.net/prod.php?post=836903 As such, it's a very impressive feat of coding prowess. Compare and contrast with web "programming".
- yalok 8y agoThe clock might have been 4MHz, but the actual MIPS was only 0.5, IIRC. The beauty of that cpu/architecture is that you could write in machine code easily, no assembly required. For example, MOV a constant to a pointer in memory was code 012737 with 01 denoting move command, 27 specifying the first operand as a constant residing in the memory immediately following that instruction, and 37 is specifying the second operand as a pointer, also in memory. 010102 was MOV register 1 to register 2. I self-taught myself this while in the high school, because Basic was too slow there.
- raverbashing 8y agoI was about to correct you but then "mind blown" I can imagine how inefficient it is to have every command take 3 bytes, kind of explain its slowness (but other 8-bit machines weren't much better in MIPS terms)
- pjc50 8y agoTwo bytes: it's octal, and the system is a 16-bit machine. The leading octal digit is always 0 or 1, if I've understood https://en.wikipedia.org/wiki/PDP-11_architecture https://en.wikipedia.org/wiki/PDP-11_architecture correctly. Surprisingly similar orthogonality to ARM.
- Annatar 8y agoIt's extremely efficient, actually. After a while spent in the monitor on the C=64 (courtesy of the Final Cartridge III), we started just punching in hex opcodes instead of mnemonics; more efficient that way. I still remember that $4c is the hexadecimal opcode for the jmp instruction: 4c 00 c0 jmp $c000