Oldskooler Ramblings

the unlikely child born of the home computer wars

Archive for November 8th, 2006

CGA Corruption

Posted by Trixter on November 8, 2006

The majority of my 15 minutes of fame, it seems, has come from google video and youtube, with my 8088 Corruption demonstration. I did it mostly to impress other demosceners at a wild compo, but I’ve received at least 100 emails about it, had it reverse-engineered, and had unix and gameboy players made for the data file… it’s quite humbling.

Ever since then, people have asked for more. While I can easily do more — the framework supports 60 frames per second instead of the 30 used in 8088 Corruption, and let me tell you, 60fps CGA video is wickedly creepy — I have always wanted to do a “proper” 8088 megademo. This means it would work off of two floppy disks, use no more than 640K of RAM, use the internal speaker for sound, and of course, work with stock CGA.

That may not have the “wow” factor of 8088 Corruption, but just like the numa numa guy, you can never really make a sequel to an internet phenomenon, can you? It never turns out as good. So I’ve pretty much made up my mind that, should I ever have the free time to make another oldskool demo, it will feature — amongst other things — 60Hz CGA demo effects.

I can hear it now: “CGA demo effects? CGA sux! CGA has 4 ugly colors, slow memory, and only one video page! What are you going to do, make it look even shittier?” Well, non-believer, I’ve been dorking with CGA for a while and have already come up with some neat stuff. But the concept went into 2nd gear when my old friend Andrew Jenner (the guy who reverse-engineered Digger) contacted me with some CGA questions and we got to talking, then experimenting. You see, Andrew has been working with the MESS guys trying to get their CGA emulation 100% perfect, and has been studying the Motorola 6845 character generator documentation and CGA tech reference for weeks, so he had some unique insight I never had the patience for.

Here’s a taste of what we’ve been able to do with stock CGA on a regular XT:

100% successful:

  • 160×200 two video pages
  • 320×100 two video pages
  • 256×128 two video pages (great for sprites)
  • 320×100 full-screen interleaved with two video pages
  • the ability to shift the screen left and right in two-bytecolumn increments on any scanline

50% successful:

  • 640×200 in 4 colors (not a typo!) but every other column doesn’t latch memory quickly enough so every other bytecolumn is garbled)
  • 320×100 full-screen non-interleaved (desired scanline pattern would be aabbccdd but it comes out ababcdcd)
  • 160×400 interlaced (both sets of lines are generated properly by the MC6845, but the surrounding CGA hardware doesn’t half-shift the second set so you get 200 flickering lines instead of 400 individual lines)

Should Be Possible But Untested Due To Lack Of Time:

  • Changing display memory offset every other scanline
  • The ultimate bomb: Text and graphics mode splitscreen! I’m serious!

When I have trouble falling asleep at night, I think of the possibilities… then shortly before I drift off to sleep, I remind myself of what a colossal nerd I must be. But still, it’s very satisfying doing things that nobody else has done, let alone even thought of.

Posted in Demoscene, Vintage Computing | 11 Comments »