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. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-