You are here: The Oldskool PC/Oldskool PC Software/8088 Corruption

8088 Corruption

An exercise in displaying full-motion video on the first IBM PC

Personal appearance: I'll be a speaker at Block Party 2008 -- come meet me and talk to me about 8088 Corruption!

8088 Corruption is a program that Sandor Tojzan and myself created in 2004 to demonstrate that it was indeed possible to display full-motion, full-screen color video (with sync'd audio) on an original 4.77MHz IBM PC with nothing more than a Sound Blaster card and CGA. I came up with the player and first few encoders; Sandor created the final (quality) version of the encoder.

Downloads of the player and sample video files are available so that you can try it yourself on your own classic hardware. It's not a hoax, I swear :-)

Background

This started as a bit of a joke around the office about doing st00pid things with old technology, like, "Oh yeah? Well, I can calculate fractals on an abacus!" or "Oh yeah? Well, I can whistle at 300 baud!", etc. During said nerdly session, I blurted out, "Oh yeah? Well, I can display video on my XT!". Later that day I started to obsess about the idea...

Months later of tinkering on an IBM PC Model 5150, I had something working, and casually mentioning the project to gODjR/iq2000 (Sandor) sparked his interest and he began work on a MUCH vastly improved transcoder for video to our system. He delivered it a few days before the demoparty Pilgrimage 2004, and I encoded the sample video I had prepared into raw data, transferred it to the 5150, and then packed the whole thing up (monitor and all) and took it on the plane with me. Once there, I ran into massive hard drive corruption problems and lost half the video data and 75% of the audio data -- but, even with a broken production, we won 1st place ;-)

Demonstration

I gave a presentation on 8088 Corruption at Block Party 2007. The best way to see what 8088 Corruption is all about, if you're not able to run it yourself, is to watch the video of that talk. The video of that talk is available at The Internet Archive. While it is possible to watch it online, I highly suggest you download the MPEG-2 file, burn it to a DVD, and watch it on a set-top DVD player; this is because some of the examples have full 60Hz motion that can only be seen properly with a non-broken video player. The presentation not only shows the program in action, but more importantly explains exactly how it was created, the methods that were used, and ways to improve the system.

The original video I made for the Scene.org awards in 2004 is still available below, but the quality isn't nearly as good as the Archive version above. It's presented here only for historical purposes:

Downloads

8088flex.zip: This is the most recent version of the player program and the file you should download first. It contains an updated player, the original "8088 Corruption" video in a new format ("TMV") to work with the new player, documentation, and some source code.

Some additional videos are available:

The original 8088 Corruption program is still available, but only for historical purposes. You should really be downloading the 8088flex distribution.

Ports

Not patient enough for me to release the source code, Mike Melanson reverse-engineered the data format in case people wanted to write a player for your own platform. After his page went up, several people did just that:

Questions and Answers

Q: Is that a cat I hear in the background of the video? Yep, my 14-year-old tabby mix Niki. I didn't realize she was audible in the video until after it was submitted, and I didn't feel like re-editing the video for fear that I would be accused of tampering.

Q: Big deal, my 8-bit C64/Atari/Speccy can do more with less. Digitized audio aside, yes, they can, because they have much more flexible graphics hardware. Even the simple act of being able to redefine the character font in text mode gives them much higher graphics capabilities than what we had to work with. The true hack of 8088 Corruption isn't the playback software, but rather the video conversion to make the most of CGA, which was very fixed and limited (can't change the font, can't change colors, etc.).

Q: It has a hard drive in it; can you really call that a "stock" 5150? Since it was perfectly possible to add hard drives to a 5150 before the introduction of the XT (5160) in 1983, yes. I have always claimed that all you need to run 8088 Corruption is a 5150, a hard drive, and a Sound Blaster, which is not an unreasonable or false claim. However, the criticism isn't lost on me, and I am working on a demo project that will indeed run off of floppies and not require a hard drive or sound card.

Roadmap

There are lots of things I would like to add if I had the time. If any of these appeal to you, let me know and I might fire up the compiler again:

Known Bugs

Press

8088 Corruption was originally only seen by about 70 people at Pilgrimage 2004, after which I fixed it up and released it. In Spring of 2005, it was nominated for a scene.org "best of 2004" award; while I don't think anyone seriously thought I would win :-) I was still extremely flattered and humbled.

A year later, I noticed Google Video was in beta, so I took the scene.org video I created (since hardly anyone has a real 5150 any more), stuck it there, and promptly forgot about it. 2 weeks later, 8088 Corruption gave me another 15 minutes of fame when someone noticed it on Google Video and posted it on digg.com, where it became one of the most "dugg" stories for the week of January 22, 2006. During the next 24 hours, news of it spread to Slashdot, waxy.org, and two dozen blogs and my home network (where I initially hosted everything) ground to a screaming halt.

Because it was one of the most "dugg" stories that week, discussion of 8088 Corruption became a short segment of Diggnation. You can download a portion of that segment if you originally missed it.

Two years later, on New Year's Day 2008, it hit Digg again. I'm very flattered!

Thanks

8088 Corruption wouldn't have nearly been such a fun project without many other people. I would like to thank:

And of course, a really big thank-you to everyone who has contacted me over the years to say how much they like it.

Development History

(key: "+"=added feature; "-"=bugfix; "*"=misc. change... newest entries at top)

20070623:

- Rewrote sections to hack around a race condition.

+ Added support for fractional framerates in the AVCOMP video compiler.

+ Rewrote the video compiler and player to support an actual file format (just a header, really). This was done to support multiple playback rates.

* Added documentation and basic source code (some libraries are not included, so you can't recompile it, but you can definitely see how the player engine is implemented; email me if you want full source).

* Made additional videos available in a separate download package.

20060222:

+ Removed buffering routines (on 8088, the double-memory-copy was *slowing things down*. Sheesh! So, assuming your hard drive is defragmented, this version is faster and shouldn't rebuffer so much on MFM/RLL drives (and hopefully not at all!)

+ Added command-line parameter: If you specify a filename on the command-line, 8088_COR.EXE will load it instead of 8088_COR.DAT. Added as a convenience to anyone screwing around with their own encoders.

* Symbolic debug information is now attached to the end of the .EXE. I'm still not comfortable distributing the source yet, but at least the debug info will make it much more readable in a debugger if you decide to go poking around.

Comments

Some of my favorite comments by people who like 8088 Corruption:

In order to get the a/v synch, he's got the soundcard (the only element in the machine with a reliable timer) initiating all the video transfers. So the machine essentially has a sound card-driven OS. My brain fell out when I heard that. -- Guybrush / Northern Dragons
Smoother video than my dual core Vista machine! -- Krumm
If he is able to achieve full motion video at 30FPS on a 4.77MHZ processor can you imagine what he could do given the right funding for research? -- gamemaster357

[Oldskool Home] [Copyright and Usage] [Disclaimer] [Contact Me]
This page's content was last modified on Jan 12, 2008 12:27 pm.