When average is all we strive for, perfection of a thing seems like a waste of time and effort when it can be made easier, faster, and cheaper. But when we desire the average, we can't wow ourselves. That this machine can do this is amazing. The man who put it together has great talents as well.
It's awesome to see but in 1981 there would have been no market for it. No medium to store the captured video, no reason to play captured video on an IBM PC. Doesn't mean I don't respect demo coders for making hardware do the impossible.
@@bluebull399 I still think they would have paid some big money just for the bragging rights when showing off their PCs. I mean just look at this and imagine it happening in the early 80s instead on a household PC, I would have wet my pants for sure and they would love this on a showroom.
IBM didn't care about audio visual performance at all. They made a system with no hardware sprites, no sound, no scrolling, and the ugliest colors known to man. They deliberately made the system bad for games so it would be taken "seriously" and bought by business customers for $5000.
if i was window shopping at a computer store back in 1984 and they had an XT running this demo i would probably shell out the thousands of dollars to get it right there on the spot.
And have considerably more storage capacity. For example, a big reason early NES video games had simplistic graphics was because you only had 48KB for everything on the game cartridge, as the years rolled by that capacity increased to over 500KB and the visuals improved immensely (this was also helped with advanced Memory Mapper chips getting added to cartridges).
Yep, computers are wonderful machines, they do anything that you ask that is within their limits. I just hope big enterprises like Microsoft and Apple don't start messing things up by adding 101 limitations and hardware requirements as they are already starting to do with the new x64, TPM, and some other requirements for Windows 11. Well, at least the Linux kernel will be always there when we eventually need it.
WTF?! As a child of the 80s that was very proud of his Amiga because of the graphic and sound capabilities.... This is INSANE!!!! This runs on vintage IBM PC hardware from circa '81?! The High Res portion of this demo is comparable to Amiga's Spaceballs demo. If you made this in the 80s, it would have shut us all up. Amiga, Atari ST, Mac. But I'm sure it would take ten million dollars worth of ram in those days. Excellent job.
-The IBM 5150, to my knowledge, can only handle up to 256KB of RAM, whereas the 5160 can handle 640KB.- This demo is super-optimized. _EDIT:_ Misinformation from Wikipedia, the 5150 _can_ handle 640KB of RAM.
640K was an absolute ton of RAM, but if you had an XT and an expansion board or two you could get 640K pretty easily, and if you ordered it with CGA and a 10MB disk, you'd have been golden to run this. The Soundblaster didn't exist until later, though Im willing to bed that the video alone would have won several awards!
It's crazy how these composite artifacts, dithering and scanlines actually add to the style. Imagine playing games like this back in the 80s when such machines were state of the art.
I just watched it on a CRT and it didn't look any better on my LCD, but I was also watching it at 720p. I suspect it looks much more impressive at 200p on a monitor with much slower phosphors. I kinda miss those days, when drawing a circle on my Commodore 128 was impressive.
Fantastic through and through. Wouldn't expect anything less from you! 640x200 mode looked _really_ sharp. Excellent job! It's amazing how much power that "dinky" CPU (by today's standards) actually has, when fed proper code. If programmers today could only do that! Imagine, instead of a couple gig for a program we'd be looking at a few hundred meg. Seems programming this way is really a lost art.
jaykay18 Even with a lets say 120MHz CPu we could be geting all our work done, but nope the damn programmers of today make the software so damn bloated same with webpages.
Sony Trinitron That's right. There's a reason you used to be able to buy a computer years ago and have it last 15 years. Now you buy one and it craps out before the warranty is even up, but it's already obsolete anyway.
As someone who got his start gaming on an 8088, This is sick as hell. I said "wow" when the breakdancing guy popped onscreen, and the B&W silhouette demo is astonishing. This is to say nothing of the audio quality, which I couldn't have imagined was possible with 1981 tech.
see 8088 MPH by Hornet + CRTC + DESiRE, (which was presented in 2015, I believe) The intro explains a little why this is so difficult for an 8088 with CGA in comparison to a Commodore64. There's also a lecture "8088 Corruption explained" which goes into some of the technical details of some of the techniques.
At 2:05 there is quite some artifacting with only changing pixels that are significantly different from frame to frame. But resolution is amazing considering the hardware limitations. This is such an impressive software. I'm quite blown away. PS: 2:17 haha!
That is amazing! I think few people under the age of about 30-35 will really grasp just how mind blowing this is. I grew up with a PC/XT in the house and those things were SLOW! I mean really, REALLY slow, and CGA graphics looked terrible. The cheapest slowest smartphones you can get now are orders of magnitude more powerful than a PC/XT.
This is pretty neat. I see some people are under the wrong impression from this video. They think that this 4.7Hz computer is generating the scenes they are seeing. This is not the case, it is playing a pre-rendered video that has been converted to play on the computer. It is playing an animation frame by frame like an older cartoon, it is not computer generating the cartoon like a pixar movie.
Yes not impressive by any means by today's standards. However, if you grew up during that timeframe and were even remotely interested in computers, this is Awesome. These are the OLD SCHOOL PCs that IBM first released when they got into the micro computer field. Think big ugly heavy dinosaur machines with green text only screens.
Good point. So the question becomes what technology was used to digitize it? I've seen a few demos by "MrAtari" that do the same thing on a 1.8 Mhz Atari 8-bit computer. It seems from reading the descriptions that he used an Atari 8-bit to digitize the video and audio, record it, and play it back. That's still impressive considering that the machines were so slow back then that one would think it difficult for a computer to keep up with the signal coming from a live video source while digitizing it. Though it's possible to keep a low sample size and rate and still have it look decent for the time.
Mark Miller Digitization on older, slower computers was single frames only, not moving video. My old ComputerEyes took roughly 10 seconds to produce an image of a still frame provided by a vcr on "pause".
Jim Leonard Thanks for the detail. Was digitizing the audio more straightforward? So, I see the challenge you addressed with this demo was getting a satisfying frame rate for the playback animation with the graphics technology of the time. Having run some applications in text mode on DOS and in unaccelerated VGA graphics (in Windows) that scroll text, I can appreciate the accomplishment. :)
Thanks! Yes, digitizing audio was much more straightforward and there were many devices for many home computers if the time that could do so. Some even had that capability built in, such as the Tandy TL series.
They already do real-time ray tracing at 4K while still having time to compute game physics and (possibly) encode the whole thing to H.264, encrypt it, and beam it wirelessly to a server halfway around the world. What more could they possibly do?
Childhood dream come true, discovering it a bit late, even thoough I heard about it for a while (familiar with the Pouet crowd, but more on the CPC side of it ;) ). Sir you made history for those who can appreciate it, I can't even believe what I can see. I always wondered as an 9-year old kid in 1993 whether a genius could actually put together the right "magical" pieces of code in extraordinarily nimble algorithms to finally make my Amstrad CPC 6128 (powered by 3.5Mhz Z80 CPU) able to somehow output video, even in the worst conditions and borderline unintelligible movement and a garbled image, in very low-res, low-fps modes, but I was wrong. Jim does it in high-res, high-fps , clear-cut contours and completely comprehensible scenes. I wonder if the almost as capable Z80 can pull a similar feat ?
Way to go, Trixter! Your work inspired some of the video compression tricks I used in Apple Game Server ]I[. I've actually gotten some pretty decent framerates on the good ol' Apple // but haven't had the time to publish results. (too many things going on.) :-) -BLuRry
I used these machines back in the day and also the amstrad 1512 (with the nec v20 if i'm not mistaken). Never really saw a CGA on composite mode in person though. Anyway my mind was completely blown away! Absolutely fantastic! :)
It's goa trance by Space Cat circa 2003. Exact name escapes me at the moment, sorry! This video, it's actually a mix of two different mixes of the same song.
_Damn._ I mean, I was impressed by Corruption, and by the 2600 version of Bad Apple... but the latter was a cheat because it used a special 16MB bankswitching flashcart, and, well, this is pure code on authentic original hardware, and just on another level entirely. *How?!*
Thanks for the kind words :-) Here's the tech details: trixter.oldskool.org/2014/06/19/8088-domination-post-mortem-part-1/ Short answer: I wrote an animation compiler.
...weird, those hummingbirds seem familiar, I feel like I've read that first page already sometime recently but it didn't really sink in. But the second one is where the meat of the trick is hidden, and, well, that's a pretty smart solution that I don't think I'd have ever have got round to developing myself. Very neat lateral leap :) And in terms of the way more important changes are prioritised and little ones are left neglected as they hopefully won't be noticed until a larger change sweeps them up, I think what you've essentially done there is something akin to the MP3 CBR encoder/decoder "bit bucket", or an MPEG quantiser matrix. Both also things that are used as a way to determine what to keep and what to ditch in encoders that have to fit a whole bunch of delta changes to rendered data into a very small data budget. Just without the benefit of discrete cosine transformation wavelet encoding of the visual and audible frequency data and having to instead bruteforce raw pixels onto the screen. Or in other words, if the motion picture experts group think that kind of technique is a good approach for their video and audio codecs...
This is really good and I think a lesson learned is even having computers is a huge advancement. We are really spoiled these days with how fast computers have become but this proves that you need the lowest computers to do the most amazing things with them.
I think it's that today's programmers don't optimize for speed, or size, only flexibility -- which is actually what modern systems programming needs these days. Hardware advances take care of the speed and size issues.
For those who want to know what is the music, it's : Space Cat - Power Up (ua-cam.com/video/e5Ptg5Mb2MQ/v-deo.html) Pour ceux qui veulent savoir quelle est la musique, c'est : Space Cat - Power Up (ua-cam.com/video/e5Ptg5Mb2MQ/v-deo.html)
Just for my education, this is running a video of bad apple, not the demo itself right? Still, mighty impressive what has been achieved here with such limited resources.
I think it would be reasonable to say that this is as close as you can get to a purely technical demo. It's basically a video-player that plays back a video file in a format designed specifically for the limitations of early PC hardware. So, yes, it is running a video of Bad Apple, just in a unique file format.
Just have to say, I tried this on my Tandy 1000 RSX (a 386), and it plays beautifully. Tried it as well on my Tandy 1000 HX (an XT), but it was showing artifacts looking like static for about 3/4 of the frames, but that might just be a quirk of the Tandy video. Not sure. I've got another XT-class machine with a CGA/EGA card, and a SoundBLASTER 2.0 Pro that I'll be trying this out on once my XT-IDE card kit arrives.
Static might mean the file was corrupted when you copied it over, one way to check for this is to copy over the zip file and unzip it on the target hardware, that way the CRC check can ensure if the zip file is intact or not.
@@JimLeonard I copied it straight from my main rig to the CF card I'm using in that machine, but I could always try again... Or try a different CF card, these ones are fairly cheap cards, it could be failing. Need to clear stuff off my bench. The Tandy 1000 HX was never intended to support a hard drive, so I'm using a CF card off an XT-IDE rev.4 based controller I designed for the machine's rather annoying stacking bus header, but I don't think that should make a difference, since CF cards read a lot faster than traditional hard drives, especially MFM drives. Playing off my 1000 RSX, it's on an actual IDE hard drive. I'll be able to do a better comparison once my other XT-IDE card arrives, and I can put it in my other XT machine.
@@BlackEpyon Feel free to email me to continue this, as YT comments aren't great. But my initial thought is that if you're sure the file is good, then another reason for "static" is that it can't meet the bandwidth requirements. Play the file outside of the batch file, just xdcplay.exe filename and it will tell you what the peak bandwidth needed is. If it can't sustain 110KB/s then it might not play properly.
This is just unbelievable, especially after corruption, which already blew me away. Really, REALLY impressive, congratulations :) Too bad my 8088 only has VGA output (and HGC but no monitor), I'd love to give this a shot. Does it work with an NEC V20 or would I have to swap the original intel 8088 back in?
IIgs would be a good idea; there are homebrew hard drive projects for it, and audio hardware is built-in. Even a simple lores conversion would look good if it were at the full 30fps.
Grab the Apple Game Server ]I[ source from sourceforge -- it has the ability to calculate a stream of frame data based on differences per frame (including page flipping) and it can handle all the modes. My plan was to use that code to generate a stream and fill up a slinky ram card (aka ramfactor or apple ram expansion) with the stream since you can read it cheaply by peeking the same byte over and over. The original design was to optimize the stream of graphics data sent over a serial port but it lends itself really well to this kind of application as well. I won't say that Apple Game Server ]I[ has *everything* you need but it has a good 75% of what you need once you hook up a decoder and run the frame data through. Should be very possible with JavaFX 8 but I have too many things going on to do it myself.
Patchuchan I missed this demo at cocofest (it's 30 minutes from my house!) but it looks like he came up with a lot of the stuff I did, but 3 years before me. Cool! I still think my delta sorting and code generation are innovate ;-) but I'm very glad to see this on the coco3.
Some of the artifacting reminds me of interlacing, i'm guessing lines get skipped when decode time runs out which makes me wonder if it's possible to use interlacing in two dimensions like the old analog MUSE HDTV system did.
Is there a version of this with simulated composite artifacting? (Or is this that version, and do the colours really look that bad?) Also: bug at 4:48, the screen is all black when it should be all white.
Alex C No version with simulated artifacting because the images weren't converted taking that into account. However, since you can use any conversion method you want with XDC you could certainly give it a try yourself. re: bug, that was an encoder bug that has been fixed in the latest version, see x86dc.wordpress.com for more info.
Really awesome! By the way, are you using a standard codec (XviD, MPEG4, etc) for the input video file and then a really magically tweaked decoder, or is the file in your own special encoded format?
From what I read from the scene.org link, he actually wrote some magic that turns the video itself into CPU opcodes. So literally the video itself is an executable. This spares precious cycles that would be wasted on things like loops, jumps, and calculations needed to support a more "typical" generic codec.
Jim Leonard Thanks for the link. I've already read it. Technically awesome in every way! Just on last curiosity... What's the size of the final executable for this video?
The player is roughly a 22k .exe, uncompressed. I could probably shave that down a bit as there is some dead code in there, but there's no need, really.
Jim Leonard Just made a test run at 0.2MIPS, as smooth as the video shows. Now I really want to test the colored version. Is the 16 color mode compatible with VGA?
Chaoji Li Unfortunately no; it relies on the CGA composite color signal. Some emulators support that though; if you run DOSBox 0.74 and set mode=cga you should see color. When I was developing it I used cycles=fixed 312.
As a veteren scener and master of this technology, could you share some advice for aspiring students in school right now who are interested in developing these kinds of skills?
Oh gosh, I'm not sure where to start. Some of these skills were built up over several years of working with the same technology. Additionally, I'm not sure my skills translate to anything new. I think the best way to start these days, for modern platforms, would be to play around with either cables or notch, as they were built for this kind of thing, or trying to do some sample projects in unity. In terms of core skills, I would take high school math at least through trigonometry. Root42 yt channel has some introductory demo effects in assembler if you really want to play with older platforms. Hope that helps?
@@JimLeonard Thank you so much for replying! I'm trying to get better at 68k assembler and currently learning RISC-V assembler, haha... Hopefully someday when I'm a bit more experienced I can do something cool =)
@@LynnXternal For learning 68000 assembler, there is a very rich history of Atari ST and Amiga programming tutorials, however finding all of them might require some digging as many (most?) were included in diskmags and fanzines. There are very mature Amiga and Atari ST emulators out there, so that makes learning much easier. The best thing you can do is just to poke around -- don't start with something complicated, instead start with (I'm serious) trying to put a single pixel on the screen. Curiosity will take it from there. :-)
Actually... there are two slower PCs. One was a clone that runs at 3.58 MHz, and then there's the PCjr which has an extra wait state in the first 128K RAM, so code running in the first 128K of a PCjr runs at half the speed of an IBM PC.
@@Mylittleretrocomputerworld Output through the speaker is possible, but it would have buffered more, had a lower framerate, and been lower-quality audio. But I did test it eons ago. The xdv player can work without a sound card or hard disk, if that's more impressive. Website has some examples to download.
In the age of abstraction, we're starting to forget the art of optimization. This video is a reminder.
When average is all we strive for, perfection of a thing seems like a waste of time and effort when it can be made easier, faster, and cheaper.
But when we desire the average, we can't wow ourselves. That this machine can do this is amazing. The man who put it together has great talents as well.
Amen.
Amen
Imagine what we could do with modern hardware and sufficient optimization
this is the reason I doesn't like "frameworks" and libraries... they hide codes that not always are good and optimzed, they "only" work...
I got rick rolled by an 8088
then you know you came to the right place ;)
i ain't even mad
a machine from the 80s delivering a douchebag from the 80s, just perfect :D
This is worst thing of 8088
I'm not even mad. I'm impressed, actually.
IBM would have paid BIG MONEY for that back in 1981...
It's awesome to see but in 1981 there would have been no market for it. No medium to store the captured video, no reason to play captured video on an IBM PC. Doesn't mean I don't respect demo coders for making hardware do the impossible.
this demo works only w/ sb so it could not be released in 81'
I mean if you show this to big blue in '81 they'd be getting rickrolled 6 years before the song came out.
@@bluebull399 I still think they would have paid some big money just for the bragging rights when showing off their PCs. I mean just look at this and imagine it happening in the early 80s instead on a household PC, I would have wet my pants for sure and they would love this on a showroom.
IBM didn't care about audio visual performance at all. They made a system with no hardware sprites, no sound, no scrolling, and the ugliest colors known to man. They deliberately made the system bad for games so it would be taken "seriously" and bought by business customers for $5000.
Oh, man. Didn't expect Bad Apple!
yea me ever
Nor Rick...
if i was window shopping at a computer store back in 1984 and they had an XT running this demo i would probably shell out the thousands of dollars to get it right there on the spot.
Get the time machine!
Even better you could copy the Rick Astley song which was yet to be released and make millions
I’d get it for the fact that it’s also showcasing some Touhou content around 17 years before the release of Highly Responsive to Prayers.
just goes to show what computers are actually capable of if you put enough dedication into it
And have 30+ years to unlock all its secrets!
And have considerably more storage capacity. For example, a big reason early NES video games had simplistic graphics was because you only had 48KB for everything on the game cartridge, as the years rolled by that capacity increased to over 500KB and the visuals improved immensely (this was also helped with advanced Memory Mapper chips getting added to cartridges).
Yep, computers are wonderful machines, they do anything that you ask that is within their limits. I just hope big enterprises like Microsoft and Apple don't start messing things up by adding 101 limitations and hardware requirements as they are already starting to do with the new x64, TPM, and some other requirements for Windows 11. Well, at least the Linux kernel will be always there when we eventually need it.
The audio is so beyond rich.
The graphics are insane.
Absolutely incredible work.
i dont think the audio is from the ibm tho
@@gereniccc4487 It absolutely is! Creative Soundblaster II
WTF?! As a child of the 80s that was very proud of his Amiga because of the graphic and sound capabilities.... This is INSANE!!!! This runs on vintage IBM PC hardware from circa '81?! The High Res portion of this demo is comparable to Amiga's Spaceballs demo. If you made this in the 80s, it would have shut us all up. Amiga, Atari ST, Mac. But I'm sure it would take ten million dollars worth of ram in those days. Excellent job.
-The IBM 5150, to my knowledge, can only handle up to 256KB of RAM, whereas the 5160 can handle 640KB.- This demo is super-optimized.
_EDIT:_ Misinformation from Wikipedia, the 5150 _can_ handle 640KB of RAM.
Probably my favorite comment ;)
640K was an absolute ton of RAM, but if you had an XT and an expansion board or two you could get 640K pretty easily, and if you ordered it with CGA and a 10MB disk, you'd have been golden to run this. The Soundblaster didn't exist until later, though Im willing to bed that the video alone would have won several awards!
@@AiOinc1 but making the file woulda taken years, sadly XD
dont worry, the pc reached the amiga media capabilities ca in 1990 with the 486 + vga + sb. the sound blaster released just in 89.
It's crazy how these composite artifacts, dithering and scanlines actually add to the style. Imagine playing games like this back in the 80s when such machines were state of the art.
I can't. I grew up gaming on an 8088, and this demo would have melted my little brain.
I just watched it on a CRT and it didn't look any better on my LCD, but I was also watching it at 720p. I suspect it looks much more impressive at 200p on a monitor with much slower phosphors. I kinda miss those days, when drawing a circle on my Commodore 128 was impressive.
I never thought I would see bad apple on an 8088 machine running CGA. Amazing!
Dang, I got rickrolled twice: once with Rick, and again with Bad Apple. An amazing 8088 demo, and by and large a worthy successor to Corruption.
Fantastic through and through. Wouldn't expect anything less from you!
640x200 mode looked _really_ sharp. Excellent job! It's amazing how much power that "dinky" CPU (by today's standards) actually has, when fed proper code. If programmers today could only do that! Imagine, instead of a couple gig for a program we'd be looking at a few hundred meg. Seems programming this way is really a lost art.
There is an OS called KolibriOS, that does what you talk about since its been written with FASM assembly language.
jaykay18 made me think 640*200 mode on te Atari ST has been woefully overlooked
Ashley Whiteman That very well may be. I personally never had experience with the Atari machines.
jaykay18 Even with a lets say 120MHz CPu we could be geting all our work done, but nope the damn programmers of today make the software so damn bloated same with webpages.
Sony Trinitron That's right. There's a reason you used to be able to buy a computer years ago and have it last 15 years. Now you buy one and it craps out before the warranty is even up, but it's already obsolete anyway.
As someone who got his start gaming on an 8088, This is sick as hell. I said "wow" when the breakdancing guy popped onscreen, and the B&W silhouette demo is astonishing. This is to say nothing of the audio quality, which I couldn't have imagined was possible with 1981 tech.
LOL! Jim Managed to Rick Roll us in his presentation. Well done btw Jim.
The Japanese animation part was super impressive, looked as good as something you'd see on todays screens
see 8088 MPH by Hornet + CRTC + DESiRE, (which was presented in 2015, I believe) The intro explains a little why this is so difficult for an 8088 with CGA in comparison to a Commodore64. There's also a lecture "8088 Corruption explained" which goes into some of the technical details of some of the techniques.
At 2:05 there is quite some artifacting with only changing pixels that are significantly different from frame to frame. But resolution is amazing considering the hardware limitations.
This is such an impressive software. I'm quite blown away.
PS: 2:17 haha!
That is amazing! I think few people under the age of about 30-35 will really grasp just how mind blowing this is. I grew up with a PC/XT in the house and those things were SLOW! I mean really, REALLY slow, and CGA graphics looked terrible. The cheapest slowest smartphones you can get now are orders of magnitude more powerful than a PC/XT.
I still love this video every time I watch it. What impossible thing are you going to do on your PC next?
This was my first exposure to bad apple
Stop making Bad Apple even more impressive than it already is!
Amazing work, though, I'm extremely impressed
I like this :-) Regardless of the filesize of the demo, its nice that you have managed to give this device graphic capability in software :-)
This is pretty neat. I see some people are under the wrong impression from this video. They think that this 4.7Hz computer is generating the scenes they are seeing. This is not the case, it is playing a pre-rendered video that has been converted to play on the computer. It is playing an animation frame by frame like an older cartoon, it is not computer generating the cartoon like a pixar movie.
Yes not impressive by any means by today's standards. However, if you grew up during that timeframe and were even remotely interested in computers, this is Awesome. These are the OLD SCHOOL PCs that IBM first released when they got into the micro computer field. Think big ugly heavy dinosaur machines with green text only screens.
Good point. So the question becomes what technology was used to digitize it? I've seen a few demos by "MrAtari" that do the same thing on a 1.8 Mhz Atari 8-bit computer. It seems from reading the descriptions that he used an Atari 8-bit to digitize the video and audio, record it, and play it back. That's still impressive considering that the machines were so slow back then that one would think it difficult for a computer to keep up with the signal coming from a live video source while digitizing it. Though it's possible to keep a low sample size and rate and still have it look decent for the time.
Mark Miller Digitization on older, slower computers was single frames only, not moving video. My old ComputerEyes took roughly 10 seconds to produce an image of a still frame provided by a vcr on "pause".
Jim Leonard Thanks for the detail. Was digitizing the audio more straightforward?
So, I see the challenge you addressed with this demo was getting a satisfying frame rate for the playback animation with the graphics technology of the time. Having run some applications in text mode on DOS and in unaccelerated VGA graphics (in Windows) that scroll text, I can appreciate the accomplishment. :)
Thanks! Yes, digitizing audio was much more straightforward and there were many devices for many home computers if the time that could do so. Some even had that capability built in, such as the Tandy TL series.
Just imagine what today's computers could do... oh my god...
Exactly.
They already do real-time ray tracing at 4K while still having time to compute game physics and (possibly) encode the whole thing to H.264, encrypt it, and beam it wirelessly to a server halfway around the world. What more could they possibly do?
a modern computer could probably render this video in real time several times over
I couldn't believe my own eyes! :D
Excellent work. You put so much effort into this that you turned impossible in possible :D
Once again, great work!
Someday, Second Reality on a Babbage Engine.
That would be like that boy on the backseat of the car after dentist.
don't worry, I'm working on it. Give me 15 minutes, a 5.25" floppy disk filled with hentai and a bobby pin.
Sound generated by carefully timing the rotation of the main drive spindle...
I didn't watch the whole thing, but it seems incredibly impressive. Great job - a wonderful hack!
Looking forward for the surely interesting technical explanation! ;)
I wouldve payed thousands to have had this on my 8088 :) Awesome job man!
It's amazing to think this is just the work of great coding and could feasibly be done on something as primitive as a gameboy colour.
Fucking amazing considering this runs on a IBM PC with a 8088!
Bad Apple on an 8088? I can't even get it on my viola!
This is amazing. Simply amazing work!
Childhood dream come true, discovering it a bit late, even thoough I heard about it for a while (familiar with the Pouet crowd, but more on the CPC side of it ;) ). Sir you made history for those who can appreciate it, I can't even believe what I can see. I always wondered as an 9-year old kid in 1993 whether a genius could actually put together the right "magical" pieces of code in extraordinarily nimble algorithms to finally make my Amstrad CPC 6128 (powered by 3.5Mhz Z80 CPU) able to somehow output video, even in the worst conditions and borderline unintelligible movement and a garbled image, in very low-res, low-fps modes, but I was wrong. Jim does it in high-res, high-fps , clear-cut contours and completely comprehensible scenes. I wonder if the almost as capable Z80 can pull a similar feat ?
The Z80 likely can, given that it usually has much less video memory to change than CGA (16KB).
Thanks for the kind words :-)
Way to go, Trixter! Your work inspired some of the video compression tricks I used in Apple Game Server ]I[. I've actually gotten some pretty decent framerates on the good ol' Apple // but haven't had the time to publish results. (too many things going on.) :-) -BLuRry
Glad to hear it!
This is crazy, insane, wizardry. You are literally doing something impossible.
How can this even be possible? Truly awesome.
That's pretty cool. And it even runs on Windows 98 but without colors.
As always, absolutely amazing!
I used these machines back in the day and also the amstrad 1512 (with the nec v20 if i'm not mistaken). Never really saw a CGA on composite mode in person though.
Anyway my mind was completely blown away!
Absolutely fantastic! :)
I this demo definitively proves that the IBM PC was indeed the FIRST piece of hardware that could legitimately lay claim to the term 16-bit.
8088 has an 8-bit external data bus.
Holy SHIT!! My mouth is agape...
I can't believe I got rickrolled in 2014. This is more clever than my mysterious youtube links in svn commit messages =)
I think you might have inadvertently turned bad apple into an actual demoscene meme...
Guilty as charged
Brilliant!
very impressive! It's still amazing how much people can push old hard ware to do what it was never designed for --- or was it? ;)
This is bloody awesome. And hey, Bad Apple!! Great taste ;)
Wow.. Just WOW! ..and btw, Tron looks like best fit for this sorcery =)
Seriously underrated achievement
this is really awesome!
This is just incredible! Great work!
Brilliant! Beyond brilliant! Bad Apple looks great in CGA!
Well done sir. Well. Done.
This is just incredible
Astonishing.
Simply incredible
This is stunning
That was the most hype bad apple I've ever seen
Time to get this tech into a Dragon's Lair port!
It was briefly pursued, actually. Conversion quality was not high enough for me, but it's not off the table. Better methods may exist in the future.
I'm kind of surprised, as I thought the bright, cel-shading artwork would convert nicely. But, I defer to the expert!
Even with the occasional issues with the limited refresh rate of the system during Bad Apple, it still looks good.
Thanks. Just one more MHz and full updates would have been possible, but the system is hobbled by slow memory bandwidth.
A very weird and late comment, but what’s the music that plays on the first segment?
It's goa trance by Space Cat circa 2003. Exact name escapes me at the moment, sorry! This video, it's actually a mix of two different mixes of the same song.
@@JimLeonard Thanks for the reply anyway!
@@JimLeonard Power Up, Oforia Remix
so great
Wow. Just wow...
You are my hero.
OST is Space Cat - Power Up
Slighted remixed by me, but yes (the edits are in the middle portion with the text).
Jesus, this is coming from an 8088 and a SB? What kind of black magic goes into this?
There should be a link to a series of articles that describe how it was created in the video's description
Fantastic! Nice to see a famous MMD video too! Maybe do a demo showing a Miku video too? :)
It's a good attempt sir, but I was disappointed it wasn't in stereo! ;)
Had to stay compatible with older Sound Blasters!
The black and white animated one looks good.
_Damn._
I mean, I was impressed by Corruption, and by the 2600 version of Bad Apple... but the latter was a cheat because it used a special 16MB bankswitching flashcart, and, well, this is pure code on authentic original hardware, and just on another level entirely.
*How?!*
Thanks for the kind words :-) Here's the tech details: trixter.oldskool.org/2014/06/19/8088-domination-post-mortem-part-1/
Short answer: I wrote an animation compiler.
...weird, those hummingbirds seem familiar, I feel like I've read that first page already sometime recently but it didn't really sink in.
But the second one is where the meat of the trick is hidden, and, well, that's a pretty smart solution that I don't think I'd have ever have got round to developing myself. Very neat lateral leap :)
And in terms of the way more important changes are prioritised and little ones are left neglected as they hopefully won't be noticed until a larger change sweeps them up, I think what you've essentially done there is something akin to the MP3 CBR encoder/decoder "bit bucket", or an MPEG quantiser matrix. Both also things that are used as a way to determine what to keep and what to ditch in encoders that have to fit a whole bunch of delta changes to rendered data into a very small data budget. Just without the benefit of discrete cosine transformation wavelet encoding of the visual and audible frequency data and having to instead bruteforce raw pixels onto the screen. Or in other words, if the motion picture experts group think that kind of technique is a good approach for their video and audio codecs...
This is really good and I think a lesson learned is even having computers is a huge advancement. We are really spoiled these days with how fast computers have become but this proves that you need the lowest computers to do the most amazing things with them.
It makes you think that programmers these days are lazy and cannot code for sh*t
That is the case.
I think it's that today's programmers don't optimize for speed, or size, only flexibility -- which is actually what modern systems programming needs these days. Hardware advances take care of the speed and size issues.
Sooo, it has been 9 years since, where's 4k full color 60 fps with 7.1 sound on 8088?
Almost ready. Need to solve a few quantum equations first.
@@JimLeonard We believe in you! I'm sure it'll be sooner then controlled effective nuclear fusion!
Awesome Jim :)
For those who want to know what is the music, it's : Space Cat - Power Up (ua-cam.com/video/e5Ptg5Mb2MQ/v-deo.html)
Pour ceux qui veulent savoir quelle est la musique, c'est : Space Cat - Power Up (ua-cam.com/video/e5Ptg5Mb2MQ/v-deo.html)
Correct, although I mixed together two different remixes of the song for the final soundtrack.
Omg so cool. Good job!
Bravo. BRAVO!
that´s freaking amazing !!!!!!
Great job!
7 years later I got Rick rolled....
Just for my education, this is running a video of bad apple, not the demo itself right? Still, mighty impressive what has been achieved here with such limited resources.
I think it would be reasonable to say that this is as close as you can get to a purely technical demo. It's basically a video-player that plays back a video file in a format designed specifically for the limitations of early PC hardware. So, yes, it is running a video of Bad Apple, just in a unique file format.
This is better resolution than my backup phone’s screen
Just have to say, I tried this on my Tandy 1000 RSX (a 386), and it plays beautifully. Tried it as well on my Tandy 1000 HX (an XT), but it was showing artifacts looking like static for about 3/4 of the frames, but that might just be a quirk of the Tandy video. Not sure. I've got another XT-class machine with a CGA/EGA card, and a SoundBLASTER 2.0 Pro that I'll be trying this out on once my XT-IDE card kit arrives.
Static might mean the file was corrupted when you copied it over, one way to check for this is to copy over the zip file and unzip it on the target hardware, that way the CRC check can ensure if the zip file is intact or not.
@@JimLeonard I copied it straight from my main rig to the CF card I'm using in that machine, but I could always try again... Or try a different CF card, these ones are fairly cheap cards, it could be failing. Need to clear stuff off my bench.
The Tandy 1000 HX was never intended to support a hard drive, so I'm using a CF card off an XT-IDE rev.4 based controller I designed for the machine's rather annoying stacking bus header, but I don't think that should make a difference, since CF cards read a lot faster than traditional hard drives, especially MFM drives. Playing off my 1000 RSX, it's on an actual IDE hard drive.
I'll be able to do a better comparison once my other XT-IDE card arrives, and I can put it in my other XT machine.
@@BlackEpyon Feel free to email me to continue this, as YT comments aren't great. But my initial thought is that if you're sure the file is good, then another reason for "static" is that it can't meet the bandwidth requirements. Play the file outside of the batch file, just xdcplay.exe filename and it will tell you what the peak bandwidth needed is. If it can't sustain 110KB/s then it might not play properly.
This is just unbelievable, especially after corruption, which already blew me away. Really, REALLY impressive, congratulations :)
Too bad my 8088 only has VGA output (and HGC but no monitor), I'd love to give this a shot. Does it work with an NEC V20 or would I have to swap the original intel 8088 back in?
Thanks! It will work with VGA and an NEC V20, but you will see only a B&W image on your VGA monitor.
It'll work with any PC, but yeah you'll only get color with CGA in composite
Someone should do Bad Apple on an actual Apple II maybe a IIc+ or IIgs.
IIgs would be a good idea; there are homebrew hard drive projects for it, and audio hardware is built-in. Even a simple lores conversion would look good if it were at the full 30fps.
Grab the Apple Game Server ]I[ source from sourceforge -- it has the ability to calculate a stream of frame data based on differences per frame (including page flipping) and it can handle all the modes. My plan was to use that code to generate a stream and fill up a slinky ram card (aka ramfactor or apple ram expansion) with the stream since you can read it cheaply by peeking the same byte over and over. The original design was to optimize the stream of graphics data sent over a serial port but it lends itself really well to this kind of application as well. I won't say that Apple Game Server ]I[ has *everything* you need but it has a good 75% of what you need once you hook up a decoder and run the frame data through. Should be very possible with JavaFX 8 but I have too many things going on to do it myself.
Jim Leonard If you did this on the //gs with fill-mode it would be crazy fast.
Jim Leonard
The end result should be similar to this example done on the COCO3.
watch?v=42jBBrqn70w
Patchuchan I missed this demo at cocofest (it's 30 minutes from my house!) but it looks like he came up with a lot of the stuff I did, but 3 years before me. Cool! I still think my delta sorting and code generation are innovate ;-) but I'm very glad to see this on the coco3.
Some of the artifacting reminds me of interlacing, i'm guessing lines get skipped when decode time runs out which makes me wonder if it's possible to use interlacing in two dimensions like the old analog MUSE HDTV system did.
The CGA video ram is actually interlaced, so that's exactly what you're seeing.
Awesome !!!!!!!!!!!!
Is there a version of this with simulated composite artifacting?
(Or is this that version, and do the colours really look that bad?)
Also: bug at 4:48, the screen is all black when it should be all white.
Alex C No version with simulated artifacting because the images weren't converted taking that into account. However, since you can use any conversion method you want with XDC you could certainly give it a try yourself.
re: bug, that was an encoder bug that has been fixed in the latest version, see x86dc.wordpress.com for more info.
HOLY SHIT
这种视频效果感觉很魔幻,反而充满想象力
Really awesome! By the way, are you using a standard codec (XviD, MPEG4, etc) for the input video file and then a really magically tweaked decoder, or is the file in your own special encoded format?
From what I read from the scene.org link, he actually wrote some magic that turns the video itself into CPU opcodes. So literally the video itself is an executable. This spares precious cycles that would be wasted on things like loops, jumps, and calculations needed to support a more "typical" generic codec.
XICO2KX: Special format that isn't even data at all, it's code. See the description for a link to a write-up on how it was done.
Jim Leonard Thanks for the link. I've already read it. Technically awesome in every way!
Just on last curiosity... What's the size of the final executable for this video?
The player is roughly a 22k .exe, uncompressed. I could probably shave that down a bit as there is some dead code in there, but there's no need, really.
I am Big fan of the Demoscene for me is Amazing talent of Sir's Hackers,
Alright I just got rick rolled on an 8088
Just imagine how much better the games would have been back then if programmers could utilize these graphics and video modes.
Tried the demo on a PC emulator running on iOS, no color output so far, but the sound is fantastic, with the emulated CPU set to running at 1MIPS.
You can go lower than 1MIPs and it should still run. Original 8088 is somewhere around 0.2 MIPs in practice :-)
Jim Leonard
Just made a test run at 0.2MIPS, as smooth as the video shows. Now I really want to test the colored version. Is the 16 color mode compatible with VGA?
Chaoji Li Unfortunately no; it relies on the CGA composite color signal. Some emulators support that though; if you run DOSBox 0.74 and set mode=cga you should see color. When I was developing it I used cycles=fixed 312.
Bad apple actually got a pretty cool effect!
This video's kind of fuzzy, could you reupload it in 4K/60fps? :-P
As a veteren scener and master of this technology, could you share some advice for aspiring students in school right now who are interested in developing these kinds of skills?
Oh gosh, I'm not sure where to start. Some of these skills were built up over several years of working with the same technology. Additionally, I'm not sure my skills translate to anything new. I think the best way to start these days, for modern platforms, would be to play around with either cables or notch, as they were built for this kind of thing, or trying to do some sample projects in unity. In terms of core skills, I would take high school math at least through trigonometry. Root42 yt channel has some introductory demo effects in assembler if you really want to play with older platforms. Hope that helps?
@@JimLeonard Thank you so much for replying! I'm trying to get better at 68k assembler and currently learning RISC-V assembler, haha...
Hopefully someday when I'm a bit more experienced I can do something cool =)
@@LynnXternal For learning 68000 assembler, there is a very rich history of Atari ST and Amiga programming tutorials, however finding all of them might require some digging as many (most?) were included in diskmags and fanzines. There are very mature Amiga and Atari ST emulators out there, so that makes learning much easier. The best thing you can do is just to poke around -- don't start with something complicated, instead start with (I'm serious) trying to put a single pixel on the screen. Curiosity will take it from there. :-)
genuis :)
Song at the start?
Space Cat - Power Up
reminder, this is the low end model of the first x86 chip, you literally cannot go lower than that in term of PC performance
Actually... there are two slower PCs. One was a clone that runs at 3.58 MHz, and then there's the PCjr which has an extra wait state in the first 128K RAM, so code running in the first 128K of a PCjr runs at half the speed of an IBM PC.
amazing for an xt, but dont forget, the sb released just in 89, the sbp2 in 92.
Not really possible, since GUS DMA transfers are 16-bit only which requires a 286 or later system.
Jim Leonard yeah i forgot the 8 bit bus, i fixed it earlier :) but the meaning is same, it was not available.
@@Mylittleretrocomputerworld Output through the speaker is possible, but it would have buffered more, had a lower framerate, and been lower-quality audio. But I did test it eons ago.
The xdv player can work without a sound card or hard disk, if that's more impressive. Website has some examples to download.