The results are in!

After a bit of a delay, the results of the 8086 compo are finally in. Sadly, there was a lack of entries; only three were submitted. However, they all did at least one thing that was particularly amazing for an 8086, so they're all successes. One achieves a full-screen 16-color CGA bitmap zoom-rotater at 9 fps on a 4.77MHz machine, another does 256 grayscale emualtion on a CGA card, and the last one uses both the Tandy *and* the Adlib at the same time to achieve stereo sound. Fairly surprising! To all people who entered the compo: Thank you, and please contact me at trixter@mcs.com to receive your prizes.

Without further ado, here are the results:

  1. 4.77MHz by Joe Snow / Nuclear Meltdown Productions -- Total Score: 53 points.
  2. VGA-less by Quantum Porcupine -- Total Score: 46 points.
  3. 8086 Feet Under by ASMonger -- Total Score: 16 points.

Here are the judging forms that were used, so you can see why the scores turned out the way that they did:

Here are the entries, so you can run them for yourself:

The original invitation follows as a reminder of what was asked of the entries. Thanks go to all who contributed or showed any interest. Until next year, keep coding!

P.S.: It is very possible that next year the 8086 compo will mutate into something more palatable for the general public. For example, VGA will definitely be allowed. I'll annouce everything on comp.sys.ibm.pc.demos in October 1996.

___________/\_ ______________ ______ _______ ______ /\______ \__ ___/ | \_ _____/ / __ \\ _ \ / __ \ / _____/ | | / ~ \ __)_ > </ /_\ \ > </ __ \ | | \ Y / \ / -- \ \_/ \/ -- \ |__\ \ |____| \___|___/_________/ \________/\_______/\________/\_______/ _______/\ ________ _____ __________/\______ \_ ___ \ \_____ \ / \\______ \_____ \ / \ \/ / | \ / \ / \| ___// | \ \ \____/ | \/ Y \ | / | \ \________/\_________/\____|____/____| \_________/
The 8086 Compo Rules Info File - October 6th, 1995


The 8086 Compo is a demo competition organized by Hornet over the internet. Hornet produces DemoNews. a newsletter for the demo scene, at www.hornet.org.

This HTML document is version 1.0 of the 8086 compo rules, and is not as current as the electronic version. You can get the most recent electronic version of the rules from 8086_com.txt

This document utilizes Netscape markup tags, but is viewable under other WWW browsers.


Introduction

Why an 8086 Compo?

Much like Snowman pioneered hosting Music Contest 2 and 3 over the internet, Hornet is now hosting a demo compo over the internet--but this compo has a very interesting limitation: All entries must run on an 8086. But why an 8086 compo?

Many demos and intros today are, sadly, either "object shows" or bundles of poorly optimized routines. Many of the older coders in the scene long for the days of hard, fast, to-the-metal coding, when your only demo machine was an 8086 with CGA or EGA. You had to code well to create anything decent; just look at some of the 3D games of that time, like Elite or Flight Simulator 1.0. People don't write code like that anymore, prefering instead to use the 80387 for floating-point, or off-screen buffers for animating simple small objects. It's almost like a Pentium isn't good enough anymore!

So, to seperate the men from the boys, Hornet is hosting the first 8086 compo. Prizes aside, this is a real way to prove your raw programming skill and impress everybody!


The Rules

The Machine

The compo machine is a Tandy 1000 with 640K of RAM and a 20 MB hard disk. The Tandy, as you recall, is a 4.77MHz 8088 CPU and has CGA graphics (320x200x4 and 640x200x2) and CGA 80x25 16-color text mode (normal CGA text, which has no palettes or EGA/VGA font-changing). (The Tandy actually has slightly more hardware than that, but I'll get to that later.) You do not have to use the extra graphics or sound capabilities of the Tandy, but you'll get Extra points if you do. For a list of suggestions on how to score higher in the compo, read the section "Programming Extras and Suggestions"; for an explanation of what Extra points are, read the section, "The Judging". Sorry, but actual EGA is not allowed--the compo machine doesn't support it, and that's not the point of the compo anyway.

A Covox Speech Thing (actually, just a normal LPT DAC) will be attached to the parallel port of the compo machine, as well as a Sound Blaster 1.0 or 1.5, depending on what is available. So, your available sound output options are: Sound Blaster, Adlib/FM, PC Speaker, LPT DAC, and Tandy 3-voice sound.

If the demo entry doesn't run on the compo machine for some reason, it will be tested on another 8088 (different brand of computer) running at 4.77MHz.

Finally, you do not need to have access to an 8086 to enter the compo--but make sure your entry runs on one. :-)

Technical Guidlines

All entries must be no more than 360K. Compression is fine; a 360K .ZIP or .ARJ file is acceptable. (Why 360K? That's the size of a double density 5 1/4" floppy disk, which is the way the earliest demos were distributed.) The demo must not exceed 10 MB uncompressed, however, because that's the total amount of free space allowed on the hard drive, which is where your demo will run.

Anything is allowed, including lookup-table tricks and precalculation, within reasonable time limits. (This is probably the only compo you can enter where precalculation is not only allowed, but encouraged!) If you have to precalculate something, it has to take less than 15 minutes and, preferably, display a time elapsed/time remaining display. All precalculation must be done before the demo starts to avoid long pauses in the middle of the demo, but can be written to the hard disk for quick retrevial during the demo. Up to 10 MB of hard disk storage on drive C: is allowed for storing precalculation.

The Judging

I (Trixter / Hornet) am the initial judge of the compo because I still have my Tandy 1000 as well as my other 4.77 MHz PC; I also have access to another working Tandy 1000, also with a hard drive, in case the compo machine breaks down. However, anyone else can judge if they have access to a 4.77MHz PC. Or, if you live in the Chicagoland area, you can come to my house to judge as well. To become a judge, contact me and I'll send you a program that verifies if your computer is the correct speed for judging.

Up to 10 points will be given in the following areas: Graphics, Sound, Code, and Extra. So, the maximum score an entry can get is 40 points. Here's how the categories break down:

Deadline and Time Lines

The compo starts accepting submissions on October 15th and ends accepting on January 31st. The judging will be from February 1st to 7th (to allow time for the other judges to get their results to me). The results will be released after February 10th in DemoNews and on a Web page along with all the entries. The prizes will be mailed out shortly thereafter.

Submitting Entries

Submit your entries to the FTP site in the /pub/demos/incoming/code/8086/entries directory. If your upload is bad, upload it again ending in ".good". Be sure to include a text file including your name, email address, phone number, and mailing address (in case you win a prize).

The Prizes

Nobody used to do demos for money, just recognition. But in the current tradition of mega-parties, 10 prizes are offered, and are pieces of software (games) for the IBM PC. The first-place winner of the compo gets first pick of what he wants mailed to him (mailed free of charge, of course); the 2nd place gets second choice, etc. All prizes have full docs and boxes (i.e. they're not pirated, they've been bought and paid for), and many still have registration cards. If less than 10 people participate, then the distribution of the prizes will continue round-robin until they all are distributed. This means that if only five people enter, they will each walk away with 2 prizes, etc. Sorry, only one entry per person or group is allowed.

The prizes offered are a wide range of games for different CPU platforms; this way, if you still use a 8086 or 286, these will still be of some benefit. :-) Here's a list of the prizes and the CPU recommended to play them:

 Name				Type				CPU Required
 ~~~~				~~~~				~~~~~~~~~~~~
 Savage Warriors 		Fighting game; CDROM		Pentium
 Evasive Action 		Action; Flight simulator	486
 Lands of Lore 			Adventure/RPG			386
 Pinball Arcade 		Pinball; CDROM			386
 Wing Commander Academy 	Space Sim			386
 Wing Commander Privateer	Space Sim			386
 Body Blows 			Fighting			286
 Alien Breed 			Action				286
 The Last Ninja 		Adventure/Fighting		8086
 Prophecy 			Adventure/RPG			8086


Programming Hints/Techniques

Obvious Pitfalls

A question is probably in your head right now: "How will I know how my program runs on an 8086 if I don't own one?" From a technical standpoint, make sure you follow the obvious rules: Don't use any 8087 or 80286 / 80386 instructions (if you're writing it in Turbo Pascal, make sure you turn off 286 code generation with {$G-} and 8087 instructions with {$N-}). Also, don't try to use hardware that isn't there (i.e. don't look for retrace by looking at the VGA port, etc.)

Free Beta-testing

The harder issue at hand, however, is how do determine how fast it will run if you don't have that slow a machine to test on. The good news is that I will test anything submitted to me on the actual compo machine to make sure it works--in other words, I will beta-test your compo entry as many times as you like in order to make sure it runs okay and runs like you think it should. Just make sure you get it to me as many times as necessary before the submission period ends.

Checking for Speed

You might want to avoid the standard technique of creating an off-screen buffer and then moving the buffer to video memory, like in many demos today. This works on modern machines with VLB or PCI video cards, but you will probably not exceed 10-12 frames per second on an 8086 if you do this, regardless of the fact that you're only moving 16K. (Remember, we're talking about the slowest PC ever.) You should instead only copy part of the screen, or maybe only the parts that have changed. You may also want to consider writing directly to the screen. Use "dirty rectangles" to eliminate flicker, etc.

As for tips on making sure it works well, try using a timer for movement and other calculations. This way, you can get the movement correct on your faster PC, and you'll be sure that it moves the same way on the slower one (but, of course, at a much lower frame rate. :) You can also insert delays in your code if you like, with compile directives so you can "compile them out" when you're finished. Try locking the screen update rate at 8 frames per second, to get a feeling of how it will look.

Finally, there's nothing wrong with making the whole thing run in text mode. For an example of what text mode can do, look at some of the excellent text-mode demos I've provided in examples.zip.


Programming Extras and Suggestions

Hardware Programming

There's many tricks you can use to make an 8086 or Tandy do cool things, and better yet, I've got examples (some with source code) of how to do them! All examples can be ftp'd from ftp.cdrom.com in examples.zip. Here's some of the things you can use to get more points during the judging:

CGA can be "fooled" into displaying 160x100x16! I am providing easy-to-understand Pascal source code that can do this in CGA, EGA, and VGA, so you can program and test your routines on your modern graphics card (if you don't have CGA or EGA). See examples.zip (16colcga.zip)].

The Tandy has a 3-voice sound chip (copied from the PCjr, just like the 16 color graphics mode) that can output some fairly decent music for its age. The three channels can also be used together cleverly to output digitized sound. Programming these natively will give you great control, but if you can't find the docs or don't have the time or skill, there's a package that I'm providing that will not only allow you to play MIDI and digtized sound on the Tandy sound chip, but other sound cards as well, and even on the PC speaker (yes, even a 4.77MHz PC speaker can play digitized sound, although it can't do much else while it's doing that). (The package, incidentally, is the DigPak and MidPak drivers from Miles Design. You can use these for free for non-commercial use.) [See examples.zip (digimidi.zip)].

The Tandy also has a 16-color graphics mode (320x200x16) that is only slightly different in memory organization than EGA; use this mode as well as CGA or text mode and you're guaranteed at least 2 Extra points. This 16-color graphics mode is the same mode as the PCjr (the Tandy is a clone of the PCjr, not the PC). Sorry, but I don't have any docs on this right now. I seem to remember, however, that the only thing about it that's different from EGA is that 1) you initialize the mode differently, and 2) the memory is interleaved, just like CGA. Otherwise, it's the same 4 bits-per-pixel, and you can't change the palette (it's the standard text palette). Sorry, but actual EGA is not allowed--the compo machine doesn't support it, and that's not the point of the compo anyway.

4.77 MHz is slow, but you can still play a MOD on the PC speaker at about 4000Hz, or maybe higher on a LPT DAC or Sound Blaster. [See examples.zip (glx212.zip)]. If you don't have the skill for this, then try some other music-playing tricks: For instance, you could write a program that arpeggiates quickly between notes (psuedo-mixing), using a MOD, or S3M (adlib?) file for the music... Or, you can take your existing MOD playing routines and mix the song to a hard disk file and play it back from there. Be creative.

The CGA 320x200x4 color mode has three palettes; try using that to your advantage. Also, you might want to think about coding in 640x200x2 colors, as you have more resolution.

Programming Techniques

There are many things you can do to get a higher score that don't involve any hardware programming at all:

Make your demo run even better on a faster machine (all will be tested on a Pentium as well as the compo machine--but don't worry if it doesn't run on the Pentium, because no points will be taken off if it doesn't). Here's an example: Remember Unreal's "Apparently this is possible" part? The faster a computer you have, the more circular bobs are put on the screen. Also, older games (some of the first PC demos) did things like this, including using EGA if it was available, but falling back to CGA if it was not.

Use a timer to display something on the screen while the next section loads, just like Chronologia by Cascada (for you newer 'sceners) or MegaDemo by Space Pigs (for us old geezers).

Don't have any ideas? Then convert one of your exiting demos (or someone else's demo) to work on a slow machine with CGA! Higher scores may be awarded to faithful conversions of parts of Future Crew demos, Triton demos, and others (like Unreal or Crystal Dream's vector parts, etc.). For instance, this message goes to members of Orange, Impact Studios, Epical, Xtacy, Halcyon, Capacala, Iguana, and others: Convert your winning demos to 8086!

These are just a few suggestions... be creative!


Closing

If this is starting to sound too hard, don't get discouraged! As Charlatan once said, "Good code isn't good design, and good design doesn't need good code," so if you are having trouble with the programming, fall back on what most demos are lacking today--design. Use text mode if you feel you can't get enough speed. Precalculate things; remember, there's a hard drive with 10 MB free on it at your disposal to store precalculations. Also, if you want a drawing program that supports the Tandy 320x200x16 color mode, DeluxePaint supports it. If you have VGA or EGA only and can't use that mode (or don't want to :) use the 320x200x16 EGA mode and don't change any colors, and you'll get the same thing, so you can compose your graphics in that mode on your nice fast computer. :)

Come on everybody--let's get back to the real basics of clever programming! Here's a chance to show everyone you're the best!


Jim Leonard (Trixter / Hornet)
trixter@hornet.org