8088 Corruption DAT

From MultimediaWiki
Jump to navigation Jump to search

8088 Corruption is the name of a somewhat academic project by one Jim Leonard, a.k.a. Trixter. The goal of the project was to play full screen, full motion video on an original IBM PC. The specs of the "original IBM PC" included:

  • Intel 8088 CPU running at 4.77 MHz
  • CGA video
  • original Sound Blaster audio

The result of the project was an FMV data file (8088_COR.DAT) encoded in a particular format as well as a playback program that runs on the original IBM PC. However, by understanding the format of the data, it is possible to create decoders for other platforms.

The "Corruption" system was expanded to include support for variable playback rates and audio rates, which the current and final version of the system. This addition is documented at 8088 Corruption TMV.

DAT File Format

The 8088_COR.DAT data file is a sequence of data frames without any header. All playback parameters are implicit to the format. Each data frame is 2735 bytes long. The first 2000 bytes of the frame represent the video data and the last 735 bytes are the audio data. The total size of the data file ought to be divisible by 2735.

Video Format

The video format operates in a CGA text mode using the CGA's hardwired palette and 8x8 BIOS font. Frames are presented at a rate of 30 per second. The video coding necessarily acts as a vector quantizer with the 8x8 BIOS font acting as a vector codebook. Each frame is comprised of 40x25=1000 text cells, or vectors. Each vector is represented by a pair of bytes. The first byte is an codebook index, a.k.a. an index into the 8x8 font table. The second byte of the pair represents the attributes. The upper 4 bits (7-4) of the attribute represent the background color and the lower 4 bits (3-0) represent the foreground color.

Data Resources

Audio Format

The audio format used in 8088 Corruption is simply unsigned, 8-bit PCM played at 22050 Hz. Each frame contains 735 PCM bytes which happens to be the quotient of 22050/30.