• Please review our updated Terms and Rules here

8088 Domination: A new FMV method for 8088 PCs

Trixter

Veteran Member
Joined
Aug 31, 2006
Messages
7,478
Location
Chicagoland, Illinois, USA
Some of you may be familiar with my 2004 work 8088 Corruption, which displays full-screen full-motion color video with audio on any 8088 PC with CGA, a hard drive, and a Sound Blaster. While my solution to that problem was novel at the time -- using text mode to get around the bandwidth limitations in the system -- it suffered greatly from having a "blocky" appearance and no way to display fine detail, such as what is needed for readable text.

I'm pleased to announce that, 10 years later, I've designed and built a new system for FMV with completely new tech that surpasses the original in every way. I demonstrated this system at a North American demoparty called @party this past weekend in a production called 8088 Domination, where it won the category it was presented in.

The bits have been released, so here are some fun links:

If you want to run it on your own vintage hardware: https://www.scene.org/file.php?file...ol/8088_domination_party_version.zip&fileinfo

Video of what it looks like on the real hardware: https://www.youtube.com/watch?v=MWdG413nNkI
(This is preferable to DOSBox, because DOSBox doesn't get the composite colors quite right. The production was written for the "new" style of CGA composite artifact colors.)

Demoscene discussion on the production: http://www.pouet.net/prod.php?which=63591

I will work on a write-up of how the tech works, and release the source code, before the month is over. The write-up will take me a few days because I had to solve graphics, hardware, and software problems in new and creative ways to make this happen, and explaining it all will take longer than usual. Until the write-up is finished, though, feel free to ask any questions :) although if you want a hint on how it works, seek to offset 512 in any *.XDV file and peek at what is there ;-)
 
Jim.... while I wouldn't normally resort to this verbiage.... there's just no better, more appropriate way to say it....

****ing amazing! Congrats on pulling this off! - I can't wait to have a few moments free to try it out on my CGA/MDA dual-headed XT!
 
Absolutely astounding.

The sheer creativity and technical finesse in this really cannot be understated. For those not familiar with quite how limited the 4.77MHz 8088 chip and IBM CGA card are, any kind of smooth animation in graphics mode is near impossible with that combo, let alone full-screen, 30 fps and with 40kHz audio with concurrent background disk transfers. Running six minutes of video in 30MB - just 85KB/s - is the key, I for one will be very interested to learn quite how that is achieved!

(Btw it needs more than 256KB to run, I jumped straight to 640KB and it runs fine, IBM Portable PC 5155. Visicalc screen burn visible on the bad apple video!).
 
Wow!... absolutely mind blowing, considering the hardware limitations. I certainly look forward to reading your write up. Well done.
 
You... releasing source :p? Hell hath frozen over XD.

Absolutely beautiful! :D
 
Nice job. When can I get a PCjr port (no audio that doesn't require SB for pacing)? :)

And what sort of storage is required to stream with no delays?

And I know you want to go to Assembly this year.
 
Thanks for the kind words, everyone! Will post when writeup is finished.

Eeguru: PCjr/Tandy can't play digitized audio without consuming 90% of the entire machine, so that's out of the question, sorry :)

Storage needed: MFM should work ok but 640KB for buffering will help quite a bit. I noticed a bug in the player; it doesn't recover from rebuffering very well, so I'm going to fix that before releasing a final version with source.

I don't want to go to Assembly this year; I am hoping to go to Revision next year, though.
 
I don't mean supporting Tandy/Jr sound. I'm asking if the demo will run w/o sound support? Not sure if you were using the DMA transfers to pace anything.
 
I use the soundcard interrupt for pacing. There is a -q (quiet) switch just like 8088flex but I just noticed I hadn't fixed it -- if you try to use it, very hilarious (bad) things happen. I'll work on fixing that for the final release so that people without sound cards can still run it.
 
DOSBox doesn't get the composite colors quite right. The production was written for the "new" style of CGA composite artifact colors.

I was wondering why the colours were brighter on the capture than on DOSBox. Which video mode are you using? I had been assuming it was the normal BIOS mode 6 with palette 15 (which has the same colours on old and new CGA).
 
Trixter, have you any idea how far this (presumably new compression) technique could be pushed? For instance, might "TV quality" be possible with say a 12MHz 286?
 
Apologies if this is a stupid question - but I just wanted to check - is it essential to use the composite out to get color?
 
Is a Sound Blaster 2 required? I can't actually play this demo because I don't have an 8-bit ISA sound card, and they seem to be difficult to come by at a reasonable price.
 
Apologies if this is a stupid question - but I just wanted to check - is it essential to use the composite out to get color?

For the first part of the demo, yes. The second part (the silent film homage and after) is in black and white by design.

Is a Sound Blaster 2 required? I can't actually play this demo because I don't have an 8-bit ISA sound card, and they seem to be difficult to come by at a reasonable price.

For now, a Sound Blaster or compatible card is required. It must have a DSP 2.00 or better.
 
I was wondering why the colours were brighter on the capture than on DOSBox. Which video mode are you using? I had been assuming it was the normal BIOS mode 6 with palette 15 (which has the same colours on old and new CGA).

Exact setup code:

Code:
procedure xdc_setvid(b:byte);
{1=160x200x16, 2=640x200x2}
begin
  asm
    mov ax,0006
    int 10h
  end;
  if b=1 then asm {turn on colorburst}
    mov dx,m6845_mode_ctl
    mov al,c_videosignal_enable+c_graphics_enable+c_640x200_enable
    out dx,al
  end;
end;

I generated 16 colors in "160x200" style and then captured each color with my capture device with everything set to defaults (ie. no adjustments). I then determined the RGB values of those colors and converted my graphics to those standards.
 
Back
Top