MegaRay by Coders In Action
M e g a R a y ───────────── I. Introduction of CIA ────────────────────── What is CIA ? CIA stands for Coders In Action (terribly original, I know ;-)) We are a group of BELGIAN coders (not many of them around, I'm afraid), concentrating on demos. We collect, spread and create them. At this moment our group mainly consists of coders, but no grafix artists. We are hoping to change that in the near future. How can I reach CIA ? Well, you can call our WHQ in Antwerp. It's at Einstein BBS, +32-3-3851594 II. About this demo ─────────────────── Right. About this demo. Well, for one thing, it is BIG. And I mean GIGANTIC. There are a few reasons for that : - This demo is nothing but animations. Since you all know animations take a lot more room than, say, filled polygon 3D animations, it's quite logical that this demo is so BIG. - I included a different looping sample for each anim, for the intro part AND for the loading-and-decoding screen. These also take a lot of room and are not very compressable. The animations ARE compressed, but not with a very good (=time consuming) algorithm for time reasons. You don't want to be staring at that loading screen for 3 hours every time, believe me ! System requirements for this demo : - 286 (386 preferred) - VGA (anything half standard will do - no fancy VGA tricks done.) - 2 Meg internal memory, with about 600 Kbytes of free DOS mem. - Optional but VERY preferrable : SB (Pro) or compatible Why is there no support for XT computers ? Get real. Why VGA and not EGA or CGA or hercules ? Get real. Why, O Why 2 Meg. Well, the explanation for that is quite simple. I had this nice toolbox for XMS memory, and I just had to use it, so I made the animations just a tad too big to fit into the conventional memory. No, just kidding. Each animation consists of 30 frames. Each frame measures 150 by 150 pixels. If you know that in 320x200x256 one byte equals one pixel, it's fairly easy to calculate. I'll help : 150 * 150 * 30 = 675000 bytes. This means that you need 675000 bytes of completely empty and free memory to hold one unpacked animation. Since the standard avialable DOS memory can only be a maximum of about 620 Kbytes (with a good memory manager), and I need some room for the code and the samples as well, it's easy to see why I need that extra meg. (I actually use a bit more than 675000 bytes for other things as well, so you'll need about 950000 bytes of free XMS memory). VERY IMPORTANT : A free lesson in memory. There are (basically) 2 kinds of memory above 640 Kbytes. There is Extended memory and there is Expanded memory. Extended memory is the one people always call XMS, expanded is EMS. Easy, right ? Normally, without any drivers, you don't have ANY of those two. (unless you have actually bought one of those plug-in boards with EMS on ?! Don't know anybody who has one of those). If you install HIMEM.SYS, you suddenly get XMS memory ! Easy to use, faster than EMS etc. If you foolishly decide to install EMM386, you suddenly get EMS memory ! Of course, you loose about half the CPU time to port and interrupt emulation by that driver, because it switches your processor into a different mode that uses interrupts and ports differently, but who cares, right ? QEMM is a different thing altogether. It combines both HIMEM.SYS and EMM386. This means : when an program requests XMS, QEMM will behave like HIMEM and give XMS. When a program requests EMS, QEMM will turn into EMM386 and give EMS. I am strongly against EMS memory, because it is a stupid standard. It takes a SLOW memory manager to emulate it and it's slower than XMS. Therefore this demo will ONLY work with XMS memory. So if yoy have EMM386 installed, THROW IT OUT ! You must, however, have HIMEM.SYS or QEMM386 installed. Still with me ? This short lesson about memory is in no sense complete. For simplicity's sake I left out things like UMB and HMA 'cause you don't need to know about those for this demo. I also simplified some things, so don't shoot me if you (think you) know better. You need about 600 Kbytes of your DOS memory available. You can check this by typing MEM at the DOS prompt. If you don't have enough, try removing some TSR programs and make sure you have DOS loaded high. (check your DOS manual to find out how to do that) About raytracing : What is raytracing ? Hmm, right. You asked for it. Here comes another lecture. I'll keep this one short, I promise. Basically, raytracing is your computer doing a lot of silly calculations to make some nice pictures. It calculates rays of light (from one or more light- sources), and how they hit different objects, thus creating a rather realistic feel of the objects. See, simple ! It involves a lot of maths, and a lot of patience, since it is a very lengthty process. Rendering times of a few hours are no exception for the better pictures. Simple animations like the ones in this demo take an average of 2 minutes/frame on my 486 DX/33. (that is, with a coprocessor.) I used a public domain raytracer called Persistance of Vision (POV). It is one of the best around at this moment. Another good, widely available raytracer is DKBtrace. About the samples : I recorded all the samples with trusty old Sound Blaster Pro. They were all recorded at a frequency of 11000 Hz. This is a very good quality for little space, and as long as there's no singing, the samples sound very clear. About the Sound Blaster support : I have made an autodetection routine. This should correctly identify a Sound Blaster on any of the possible ports. I haven't got around to making a working IRQ for DMA detection routine, so you still have to enter that one manually if the BLASTER environment string is not set. (my parser is NOT very intelligent. If your BLASTER string has the info about the IRQ for DMA line and the Port info in a different order than mine, it won't work. The correct string for my parser would be like this : SET BLASTER=A220 I7 D1 T4 (only the 2 first fields matter) If you haven't got an environment string called BLASTER, my autodetect will kick in, but you'll still have to manually enter the IRQ line. III. Technical & programming info ───────────────────────────────── This demo was *entirely* written in Turbo Pascal 7.0. All the animations were rendered with Persistance of Vision, all the other grafix were made in Deluxe Paint II enhanced. All the sample were recorded and edited with Vedit2. All textfiles and source codes were edited with Qedit. All routines are made by me, except the XMS toolbox. That one was done by a guy called Yuval Tal. (freeware, can be reached through Internet : [email protected] or [email protected]) I made this demo on my own, because I started it before I joined CIA. Besides, we're almost all coders and no grafix artists, so it's sometimes easier to do it alone. I promise we'll do a MEGA demo sometime later, where we'll all make our contributions. This is also probably my last demo that uses pure samples. My next one will use a mod player. With Speaker support, SB, SBPro etc. This demo was created on the following system : 486 DX/33Mhz with 256K cache Trident 8900 S-VGA card S-VGA monitor 255 Meg Hard Disk (taking about 7 Meg of space) Sound Blaster Pro IV. Errors & bugs ! ──────────────────── If you find any bugs, you can always contact me. I'm not going to release this demo in different versions, but I can avoid making the same mistakes in the future. Possible errors : - The program crashes when trying to find a SB: This is something that happened to me quite a few times. Some other programs that use the SB do something to it that makes my autodetection crash. A cold restart should help. (Press the big button marked RESET and try again) - I have a SB, but the program tells me I don't ! This means there is a bug in my autodection routine. Do a reset (cold), and try again. If it still goes wrong, check if you have the BLASTER environment string setup correctly. This string should have been set automatically when you installed your SB software from disk. - The program correctly identifies a SB, but I hear no sounds ! - check the volume on your card - SB Pro : check your MASTER volume and your VOICE volume (software !) - If all else fails, copy your own CT-VOICE.DRV into the MEGARAY directory. If that doesn't solve the problem, I don't know what will. - Other errors. Many strange things can happen if you haven't got enough memory. For some strange reason my error handler does not always catch those problems in time. Just try freeing more memory (both conventional (DOS) and XMS). V. What other incredibly cool demos did I make, and where can you get them. ─────────────────────────────────────────────────────────────────────────── If you really MUST know, I made the following pieces of shit : - TEMPLE.ARJ my very first VGA/SB demo ! (sounds : TEMPLE OF LOVE) - CLARK.ARJ my very second VGA/SB demo ! (sounds by Anne Clark) - KILLER.ARJ my third VGA/SB demo ! (sounds Cop Killer by Body Count) - X-MAS.ARJ Yes ! A very small and traditional X-Mas scrolly ! FM music. - FELIX1.ARJ A rather cool VGA/SB demo. (felix - don't you want my love) - FELIX2.ARJ The sequel to felix1 (Duh). (it will make me crazy) - LAIKA.ARJ BBS ad. for Laika's Homebase Archive BBS (no sounds- only VGA) - CIA-PUZ SB/VGA scroller+starfield. - MEGARAY.ARJ Yes ! You guessed it ! This one ! If you're really interested, all these demos can be found on Einstein BBS ! Sorry for the size of the demo, and the size of this NFO file. L8r, Purple Zebra 1993
[ back to the prod ]