            DEMOS FAQ, Version 1.02
                            8/19/95

Before reading this FAQ, you might benefit from recognizing some
abbreviations used in this document:

Sound cards:
GUS     Gravis Ultrasound
SB      Sound Blaster
PAS     Pro Audio Spectrum

Languages:
ASM     Assembly
BAS     BASIC
PAS     Pascal
C       "C" programming language

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+INDEX+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

General:

1.0     What is a Demo?
1.1     How/Where do I get a demo?
1.2     What are the best Demos?
1.3     I can't get this Demo to run!  What can I do?

How to create demos:

2.0     What Compilers do I use?
2.1     Are there any programming references I can read?
2.2     Where can I find some example Source Code?
2.2.1   I'm no idiot--I want some REAL programming info!
2.3     Where can I find some painting programs?
2.4     Where are some music composition programs?
2.4.1   How can I play music modules from my own code?

Demos and the Internet:

3.0     Is there a place on the Internet I can learn more about demos?
3.0.1   What can I talk about on comp.sys.ibm.pc.demos?
3.0.2   What can I *NOT* talk about on comp.sys.ibm.pc.demos?
3.0.3   I'm new at this... How can I post a message without sounding like
        a total fool?
3.0.4   Can I erase my old postings?
3.1     What's IRC?  Are there any IRC channels established for demos?
3.2     What's the World Wide Web (WWW)?  Are there any places to learn
        about demos on the WWW?
3.3     Are there any newsletters about demos?

Misc. Information Regarding Demos:

4.0.0   Why is the Gravis Ultrasound sound card supported more
        than the Sound Blaster in demos?
4.0.1   What are the different types of GUS sound cards?
4.0.2   Why is the Gravis Ultrasound sound card supported more
        than General MIDI?
4.0.3   Can I emulate the GUS with my Sound Blaster?
4.1.0   Which video card is best for viewing demos?

FAQ information:

5.0     Who's contributed to this FAQ?
5.1     How can I contact you guys to submit something?

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+DEMOS+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

1.0     What is a Demo?

        A Demo is a program that displays a sound, music, and light show,
usually in 3D. Demos are very fun to watch, because they seemingly do things
that aren't possible on the machine they were programmed on.

        * They show off the computer's hardware abilities (3D objects,
          multi-channel sound, etc.)
        * They show off the creative abilities of the demo group
          (artists, musicians)
        * They show off the programmer's abilities (fast 3D shaded
          polygons, complex motion, etc.)

Demos are an art form. They blend mathematics, programming skill, and
creativity into something incredible to watch and listen to.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

1.1     How/Where do I get a demo?

Many demos can be found on local BBSes, but if you have Internet access,
you can easily get them off Internet sites.  You need to have ftp access
to a couple of ftp sites.  Here are some listings:

ftp://ftp.cdrom.com/pub/demos   A huge site in the U.S; carries diverse
                                programs related to music, graphics,
                                magazines, programming info/source code.

ftp://ftp.mpoli.fi              The "Future Crew" ftp site; carries many 
                                old and new demos.

Some other sites are: (Usually, these are mirrors of ftp.cdrom.com)

        ftp.luth.se
        ftp.sun.ac.za
        ftp.uwp.edu
        wuarchive.wustl.edu
        ibmpc.wit.com

Demos are usually in a subdirectory similar to /pub/demos or
/pub/msdos/demos. 

Here's some more examples:  /pub/demos/groups or /pub/demos/alpha

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

1.2     What are the best Demos?

Since demos are an art form, no single person is qualified to say which
ones are the best.  Since here are plenty available, you can choose.
Here's a list of the most highly praised demos:

Name:                                   Sound cards supported:
~~~~~                                   ~~~~~~~~~~~~~~~~~~~~~~
Unreal / Future Crew                    Sound Blaster | GUS
Panic / Future Crew                     Sound Blaster | GUS
Second Reality / Future Crew            Sound Blaster | GUS
Crystal Dream I / Triton                Sound Blaster |
Crystal Dream II / Triton               Sound Blaster | GUS
Show / Majic 12                                       | GUS
Verses / EMF                            Sound Blaster | GUS

These demos are available in the ftp sites listed in the above section 1.1,
"How/Where do I get a demo?".  You can also grab them directly off
of PC Demos Explained (see FAQ 3.2) on the World Wide Web.

For continuing reports on what people think is a good or bad demo,
you can monitor what people say on the Internet (see FAQs 3.0-3.3).
The semi-weekly newsletter DemoNews (see FAQ 3.3) also rates demos
on a five-star system.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

1.3     I can't get this Demo to run!  What can I do?

First of all, if you're not running DOS 5.0 or later, reboot your
machine and boot DOS.  You *must* be running actual DOS.  You *can't*
run demos under:

        Windows 3.1
        Windows95 (at least, not yet)
        Windows NT
        SoftPC (Macintosh MS-DOS emulator)
 
So, if you boot DOS and it still won't run, you might be hitting the
Protected Mode issue: The very nature of demos (high-speed specialized
graphics) lend themselves to taking over the entire machines' hardware,
which obviously doesn't help when trying to debug a problem ("It worked
on my friend's machine, why not mine?" and so on).   Furthermore, since
a couple of years ago, demo programmers started to use more and more of
their own protected mode programming routines instead of using the ones
already running on the system.  So usually, if you have QEMM386, 386MAX,
or EMM386 installed (protected mode memory managers), those demos would
not run.  (This does not mean all demos won't run on today's memory
managers--all Future Crew demos, for instance, run just fine.)

So, the solution is to boot your machine without a protected-mode memory
manager.  Personally, we suggest you do a clean boot by hitting F5 when
you see the message "Starting MS-DOS", or to make a multiple config menu
system that includes a "bare-bones" config.sys and autoexec.bat
configuration.

Here's what a "bare-bones" configuration looks like:

Your CONFIG.SYS should look like:

DEVICE=C:\DOS\HIMEM.SYS

Your AUTOEXEC.BAT should look like:

SET BLASTER=A220 I5 D1 H5 T6    (if you have a Sound Blaster sound card;
                                make sure you use the right settings, 
                                the above is an example)

SET ULTRASND=240,7,6,7,5        (if you have a Gravis Ultrasound card;
                                make sure you use the right settings, 
                                the above is an example)

C:\ULTRASND\ULTRINIT            (if you have a Gravis Ultrasound card)

...and any other sound card initialization programs.  (These will depend
on your sound card, of course.)

That's it--nothing else.  Try running the demo; with nothing in its way,
it should work.

If you *absolutely must* have some other programs in your CONFIG.SYS or
AUTOEXEC.BAT in order for your computer to run, then try having them
take up as little memory as possible, if they provide the option.

Note: Some programs need EMS to run.  For that, you *need* a memory
manager.  To do this, add this line after the "HIMEM.SYS" line in the
above CONFIG.SYS example:

DEVICE=C:\DOS\EMM386.EXE RAM

Also, a demo might complain about not having enough free DOS memory.  To
fix that, add this line after the "HIMEM.SYS" line in the
above CONFIG.SYS example:

DOS=HIGH

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-CODING DEMOS-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

2.0     What Compilers do I use?

In order to make a demo, you need to know how to program.
Self-explanatory, I guess, but we still needed to address it.  :-)

You need to know a common language that lends itself to programming DOS
programs, like Assembler, Pascal, C/C++, or BASIC.

Some Assembler compilers are:

        Turbo Assembler 3.1 or above    ("TASM")
        Microsoft Assembler             ("MASM")

Some C/C++ Compilers are:

        Watcom C++ 10.0a
        Borland C++ 3.1, 4.0, 4.5
        Visual C++
        Turbo C/C++

Some Pascal Compilers are:

        Turbo Pascal 6.0 or 7.0
        Borland Pascal 7.0

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

2.1     Are there any programming references I can read?

ASSEMBLER:
* Assembly Language for the IBM-PC 2nd Edition, by KIP R. IRVINE
* Mastering Turbo Assembler, Hayden Books 1989, by Tom Swan
* PC System programming, Abacus 1990, by Michael Tischer

C/C++:
* A Book on C, programming in C, Third Edition Kelley/POHL

VGA:
* EGA / VGA a programmer's reference guide, 2nd edition, Bradley Dyck Kliewer
* Programmers guide to EGA and VGA cards, 3rd Edition, Addison Wesley,
  by Richard Ferraro

Graphics:
* Computer Graphics: Principles and practice, 2nd edition, Foley, Van
  dam, Feiner, Hughes

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

2.2     Where can I find some example Source Code?

You can find plenty of source code for graphic effects, sound routines,
and other examples in the following ftp sites:

ftp://ftp.cdrom.com/pub/demos/code
        Included are subdirectories which are categorized depending on
        the nature of the effects.  Most of the interesting stuff is
        under graph and demosrc.

ftp://x2ftp.oulu.fi/pub/pc/programming
        Same as above, but different subdirectories, of course.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

2.2.1   I'm no idiot--Where can I find some REAL programming info?!

Okay, okay--you don't have to yell.  :)  The sites listed above are
fairly complete, but some readers of this FAQ have suggested some
other things to look at if you didn't know about them:

- Hardware descriptions of different hardware, like Intel processor
optimizations, are at http://www.intel.com/IAL/processr/ap500ovr.html

- "Real-time" methods of Phong shading can be found at
ftp://ftp.cdrom.com/pub/demos/code/graph/phong

- Graphics algorithms can be found in the comp.graphics.algorithms
FAQ at ftp://rtfm.mit.edu/pub/usenet/comp.graphics.algorithms

- The PC Gamer's Programming Guide has lots of juicy tricks, and
can be found at ftp://x2ftp.oulu.fi/pub/msdos/programming/gpe/pcqpe10.zip

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

2.3     Where can I find some painting programs?

Most demo coders use Deluxe Paint ][e by Electronic Arts.  This program
is out of print for the IBM, but you can find it in some bargain bins or
you can purchase it directly from Electronic Arts.  If you own an Amiga,
you can easily purchase Deluxe Paint IV for the Amiga and use that.

There are some good shareware painting programs as well, such as
Paint Shop Pro 3.0 for Windows, and Neopaint for DOS.  You can find
them at:

Paint Shop Pro: ftp://ftp.cica.indiana.edu/pub/pc/win3/desktop/psp30.zip

Neopaint:       ftp://x2ftp.oulu.fi

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

2.4     Where are some music composition programs?

For music, most demo groups use "music modules", a format that
originated on the Amiga.  MODS vary greatly in formats on the PC,
however; the standard formats right now are MODs and S3Ms; some
lesser-used formats are MTM and XM.

In order to create a module, you need a program called a "Tracker".  The
best ones so far are:

Name                                    Loads           Saves
~~~~                                    ~~~~~           ~~~~~

Fast Tracker II by Triton               MOD, XM, S3M    MOD, XM
Scream tracker 3.2 by Future Crew       MOD, S3M, STM   MOD, S3M
MultiTracker by Renaissance             669, MOD, MTM   MTM

You could find these trackers in
ftp://ftp.cdrom.com/pub/demos/music/programs/trackers

For more info on the different types of PC MOD formats, check out PC
Demos Explained--specifically, at this URL:

        http://www.mcs.com/~trixter/html/demo_reference.html

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

2.4.1   How can I play music modules from my own code?

There are several libraries for playing music on several demo sites.
One place to get them is ftp://ftp.cdrom.com/pub/code/sound; in there,
you'll find many libraries, including:

Name            filename        formats                 language
~~~~            ~~~~~~~~        ~~~~~~~                 ~~~~~~~~

MIDAS 0.4       mdss*.zip       most modules - XM       ASM, PAS, C
Mikmod 2.03     mik*.arj        most modules + XM       C
Bells, Whistles bwsb*.zip       many formats            ASM, BAS, PAS, C

Any of the above libraries are more than enough to play modules on any
sound card (such as Sound Blaster/Pro, Sound Blaster 16, Pro Audio
Spectrum/+/16, and of course, the Gravis Ultrasound).

(Note that these libraries are for playing MODs or MOD-related formats,
and do not play MIDI music.  For that, you could try the widely
available Miles Drivers; or, if you only have a GUS, you could use
UltraMID or the GUS SDK.  See the GUS FAQ for more info.)

+-+-+-+-+-+-+-+-+-+-+-+-+Demos and the Internet+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3.0     Is there a place on the Internet I can learn more about demos?

There are several, actually:

        For files or information:  ftp://ftp.cdrom.com/pub.demos

        For discussions or news, you have two choices, Usenet and IRC:

                IRC:    #coders (programming talk) or #trax (music talk)
                Usenet: comp.sys.ibm.pc.demos

        For General Info on the WWW, you can always try:
        http://www.mcs.com/~trixter/html/demos.html

(Note:  Although this newsgroup has "demos" on the end of it, it does not
talk about subjects such as GAME DEMOS.  For those, look in series
comp.sys.ibmpc.games.XXXXX)

comp.sys.ibm.pc.demos is a nice place to ask questions about demos in
general, so if you have any general questions concerning demos, ask here
first.  As such, we'll talk about comp.sys.ibm.pc.demos first, then IRC
and the WWW later in this document.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

3.0.1   What can I talk about on comp.sys.ibm.pc.demos?

People post various things. Some concerning Demos, others about
technical questions,  such as:

        "How do I code Gouraud Shading?"
        "How do I code Plasma/Copper bars, etc.?"
        "Does anyone know how to contact xxx?"

Other misc. postings are about new programs coming out.  For example, if
you coded a demo or made some of your source code public, let us know about
it here.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

3.0.2   What can I *NOT* talk about on comp.sys.ibm.pc.demos?

Some posts come up so frequently that many of the members of the
newsgroup are getting tired of hearing them.   Here's a list of subjects
to avoid:

        "GUS is better than SB!"        These arguments should be posted
        "SB is better than GUS!"        on a sound card group, not here.

        "What's the fastest PutPixel?"  This is asked too many times.

        "mY dEm0 t0TalLy rUleZ!"        "Elite" postings are usually the
                                        mark of a "lamer", and are ignored.

        "PC SUCKS!"                     Usually, these are posted by people
                                        who have left their terminal
                                        unattended :), or by Amiga/Atari
                                        lamers.  Do not reply to these.

These kinds of posts usually bring lots of replies--and they're not
friendly ones!

Also, comp.sys.ibm.pc.demos is NOT a binary newsgroup!  Many people in
third-world or poor countries get this newsgroup the only way they can--
delivered directly to their home computer.  A binary file in
comp.sys.ibm.pc.demos can easily cost them a lot of money!  So, please
do not post any binaries.  If you want to upload a binary file where
many other demo people can get at it, however, look in the above section
about ftp sites--you can upload there as well, usually in /incoming
directories, like ftp://ftp.cdrom.com/pub/demos/incoming/demos

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

3.0.3   I'm new at this... How can I post a message without sounding like
        a total fool?

        - Be yourself.  

        - Use common sense; sometimes a reply to the
          original sender would be much better than posting it into
          comp.sys.ibm.pc.demos if there's already a ton of replies.  

        - Flaming (sending mean messages to) other people will get you
          nowhere.

        - Avoid long signature files.

Another good practice to follow when posting is to edit the original
message and answer appropriately; i.e. don't just reply back with *all*
the text of the previous senders already shown.  It is usually a hassle
to go through 5 pages of old replies, and then 1 sentence of answer.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

3.0.4   Can I erase my old postings?

ONLY IF YOUR NEWSREADER PROVIDES THE OPTION TO DELETE POSTS.
Otherwise, you can't.  Once you've posted something, it is posted
to every newsgroup it was bound for, and some people may see it
before you cancel it.  So, think before posting a message.  If you
post something that you realize was a mistake, cancel it (if you
can) and post another one, right away, and write in it what you
really meant.  That usually stops people answering another 50
messages to the (incorrect) original.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

