Preview
Start.of.8086.Rules.v1.1...........................................Size:17,870
___________/\_ ______________ ______ _______ ______ /\______
\__ ___/ | \_ _____/ / __ \\ _ \ / __ \ / _____/
| | / ~ \ __)_ > </ /_\ \ > </ __ \
| | \ 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 ftp.cdrom.com.
Our demo archive is located under /pub/demos.
This document is also available on the World Wide Web at
http://www.cdrom.com/pub/demos/hornet/8086 and has all links enabled.
You can also download the most recent version of this document from
ftp://ftp.cdrom.com/pub/demos/hornet/8086/8086_com.txt
All new items added since version 1.0 have a "%" in the first column.
This makes it easy to see what has been added or changed.
=--------------------------------------------------------------[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 Sound Blaster 1.5 (without the CMS ships, sorry) will be in the compo
%machine, and a Covox Speech Thing (actually, just a normal LPT DAC) will be
%attached to the parallel port. 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 at trixter@mcs.com or
trixter@ftp.cdrom.com 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:
Graphics: Good art and design elements get higher scores.
Don't feel like you're limited to 320x200x4; CGA
also has a 640x200x2 color mode that's usable for
some high-res stuff.
Sound: Any sound is better than nothing; look in
the section "Programming Extras and Suggestions"
for more ideas on producing different types of
music and sound.
Programming: Anything impressive or clever earns higher
scores. Pre-calculation is allowed, with some
limitations; see above for furthur explanation.
Extra: The "Extra" category is a way to earn more points
with either clever design, a particularly advanced
programming trick (see the section "Programming
Extras and Suggestions"), or anything else that
impresses the viewer. All Extra categories start
at 3 points, and you can actually *lose* Extra
points if your demo is offensive, vulgar, etc.
_____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 ftp.cdrom.com 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, over 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, and only three prizes per person will be distributed.
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
%Falcon 3.0 Action; Flight simulator 486
%SimEarth for Windows God/Sim 386
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 attempt to change
%into VGA mode or write to A000:0000 if there isn't a VGA in the system,
%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.
%I am also attempting to hook up my video capture board to the compo machine.
%If this is successful, you can receive a Video for Windows file of your demo
%being tested, with either the sound of the demo, or my voice annotating what
%I'm seeing and other comments.
_____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 on ftp.cdrom.com in the
/pub/demos/incoming/code/8086/examples directory.
=----------------------------------------[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 the
/pub/demos/incoming/code/8086/examples directory. 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). The file is called 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 called digimidi.zip (see the location above) 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.)
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. (To see this for
%yourself, get glx212.zip in the /pub/demos/incoming/code/8086/examples
%directory on ftp.cdrom.com). 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) for output on the PC
%Speaker, 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. You could forget the whole MOD thing and play an
%Adlib (FM) file, which doesn't use much more CPU time than beeping the
%speaker. 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. Use it to fake a 160x100x16 greyscale mode, or
%something.
_____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!
.......................................................End.of.8086.Rules.v1.1.