Smells Like Amiga Spirit by Useless
Smells Like Amiga Spirit from Useless in the year 1995... Useless presents you a production in where all parts are REALLY smooth and without ANY jerks on a 486-SX33-ISA... 0. Introducing ────────────── This textfile contains infos about a brand new group, who's main purpose is to release demos. For the moment, we code in Turbo Pascal (for the initialisation) and in Turbo assembler (for the main parts) We'll probably code all in assembler in the future, but our (the coders) time is quite small for demo productions. 1. Useless ? Who's that ?? ────────────────────────── Now it's time for us to present. You probably remarked that we're french. (if not, I must tell you something: we're french) As I write this words, we're only two members, whose main purpose is to code : Hornet, aged 18, code, occasionnal gfx (since we haven't found a graphic artist). Organizer, like scrollys (as you saw), real name Guillaume Cottenceau, address : 28 rue beauregard, 17000 La Rochelle, France. Satanic, aged 18, code, occasionnal gfx. Specialised in music engine, real name Yohann Magnien, address : 84 rue Marius Lacroix, Bt B2 n°47, 17000 La Rochelle, France. If you live near La Rochelle, are a graphic or musician artist, and would like to enter our group, send us a representative piece of your work. You'll just need to perform your art directly on computer. (we do not have enough time to export it on) We can also send you any part of our code, if you think you could learn from it. Please don't write our pseudos on letters or so : postmen are quite strange guys. If you have released a demo that is not public-diffused, just send it to one of us, we're very interested in the demo scene. 2. The demonstration ──────────────────── Satanic coded an intro last year, with a mega-scrolling and 2D vector balls. I personally worked on HD problems, and on a strategic game. We wanted to join our effort to present you a demo. Both of us possess a Gravis, this wonderful soundcard : we're enjoying its marvellous qualities (Midi standard, 32 digitized voices at the same time (hello poor SBs!), on-board RAM,...) and for that Satanic coded a player of MOD and S3M for Gravis UltraSound (with no ultraclicks)... Because most of the PC users are MAD and have SBs he also coded his player for SBs, but we don't warranty the perfect running of the demo with a SB, because of its high CPU-time needing. TroubleShooting ─────────────── a) Computer Speed ─ ─ ─ ─ ─ ─ ─ ─ ─ This demo is designed for my old 486 sx33 ISA (trident 89000 svga card) We think it's an old 'n shitty PC, so we use (nearly in all the demo) ALL the power of this machine : this means that if your computer is too slow, the progs will not be able to show the full frame rate... and copper parts will be horribles : the progs can't draw enough points per horizontal refresh... (you can simulate that with a fast PC by running the demo without turbo) Anyway, parts like Points, RotoZoom and Falling Snow use all your CPU power by incrementing the number of the points shown. The tests showed that the demo runs faster with no EMS manager in memory. But remember that the player uses EMS... (especially for SBs) b) video mode ─ ─ ─ ─ ─ ─ ─ If the auto-test searching for your VESA mode crashes the computer, or if it doesn't detect properly your VESA version you can skip it and decide by yourself the SVGA mode you want for the demo, by launching the demonstration with this parameter : /vga or /vesa1 or /vesa2 This will choose automatically the SVGA mode you want. * vga : assume VGA. * vesa1 : vesa with one window for the I/O accesses to the Video-RAM. * vesa2 : vesa with one window for the inputs/one window for the outputs. Note of interest : don't look too far for SVGA parts : we have only made SVGA (plus VGA) part for the last part, Falling Snow. c) SoundCard ─ ─ ─ ─ ─ ─ If your computer is too slow, the demo will run awfully, but will not crash with a GUS... but it will crash with a SB/SBP/SB16... we're sorry of that! By the way, the demo asks more CPU power with SBs coz the mixing is done realtime (what pieces of shit! buy a gus!) so you need more than a 486 sx33 to enjoy music if you've got one of those antedeluvian soundcards. Forcing using a soundcard can be done running the demo with the parameters : /c1 : gus /c2 : sb /c3 : sbp /c4 : sb16 Using /nosound is adviced for slow computers with sb. /m### will set mixing rate to ### (decrease sound quality on sbs) /loop will launch the demo endlessly (waves will pass automatically after 10 secs and Falling Snow will be cut off) A) Psychedelic Waves ──────────────────── Coded by Hornet. Normal 12h mode. The "wave effect" was seen on the ACME-SNS intro, and i loved it! The "magnifying glass effect" was seen so many times, but not in hi-res... Full framerate on a 486 SX33... B) Floating Points ────────────────── Coded by Hornet. 13h tweaked-mode (320*200) Ray-traced gfx by Hornet. Tests the speed of your computer to present you a maximum of points floating in the air, preserving the full framerate... The original idea is ripped from Unreal/FC. C) Twister ────────── Coded by Satanic. Normal 13h mode. Ray-traced gfx by Satanic. Gives a good 3D-looking, using a shadow routine. Full framerate for sure! The original idea was seen on an Amiga demo. D) Interferences ──────────────── Coded by Satanic. Normal 13h mode. Simply pretty looking... E) ZigZag Coppers ───────────────── Coded by Hornet. Normal 13h mode. Full screen/full framerate on a 486-33-ISA! Quite easy, using asm and the offset register... Good looking, uh? The original idea was seen in Wish/Majic12, but I put more colors, coppers, and a little scrolly. (to give enough time to our player) F) Interferences Again! ─────────────────────── Coded by Satanic. Normal 0Eh mode. Use two bit plans for the proper interferences, and a third one for the scrolly. The planar modes can provide good-looking effects, isn't it? G) Straight Coppers ─────────────────── Coded by Hornet. Normal 13h mode. The original idea is ripped from the "Copper Faked" demo. H) Spaced Vector Balls ────────────────────── Coded by Satanic. 13h normal mode. The original idea is ripped from Second Reality/FC. 512 8-pixeled balls at full framerate! I) Rotozoom ─────────── a) "Zoom" in 3D ─────────────── Coded by Satanic. Normal 13h mode with two 16-colors pages. b) Blur-effect ───────────────── Coded by Hornet. Normal 13h mode. (Poor framerated... obliged!) The original idea was seen on TV and on Super NES. c) Main part : Rotozoom ─────────────────────── Coded by Satanic. Modified 13h mode : 320*100. Tests the speed of the computer to present you an effect at the full framerate!! Who had the original idea? J) End-scroller part ──────────────────── Coded by Hornet. Modified 13h tweaked-mode : 320*400. So easy and so smooth using the two pages!! (the VGA modes have a 256k amount of memory) K) Snow part ──────────── Coded by Hornet. VGA 12h mode (640/480/16) or SVGA VESA 101h mode (640/480/256) 1 or 2 frames. "FINAL" logo drawn by Hornet, with DP2 - cool with 256 colors! Original idea seen on the BLASTER-SOUND intro from Iguana. X) Music player ─────────────── Magic Satanic spent a lot of time up-grading his player, and now he's ready to show UMP -the interfaced player which use XMS and EMS and support GUS, SB, SBP, SB16- and also to put his routines in this demo. The GUS routines are very fast and quite debugged... but since SBs are shitty and since we've got only GUS at home, the SBs routines are quite bugged, especially when your computer is slow. *** We're in need of musicians!! *** Y) Loader ───────── Coded by Satanic. Z) Backgrounds ────────────── There are two images constructed by Moray and ray-traced by Povray, and a picture drawn with DP2. *** We're in need of true graphicians!! *** 4. Coding ───────── I had lots of problems coding powered graphic applications until I bought "PC system programming" by Michael Tischer. He put in this book all the best of PC, MSDOS and 80x86 User's reference manual edited by IBM, Microsoft and Intel. It's a good way to learn the out ports, the interruptions, the EGA/VGA card, tweaked-mode, etc... Some advices. A) In TP7 : a) don't modify DS in a procedure or a function if you want to get data informations. (simple but can be nasty) If you're in need of segment registers, use gs and fs in TASM with the .386 directive. b) when you need memory, don't write directly in the conventionnal memory (using the mem or move instructions) but pointers, like that : the mem or move instructions are more useful than using pointers directly, so initialize your memory with pointers, and use this memory addressing it with the segment where the pointer has been created : you can have this information doing this : "segm:=seg(p^)" B) In assembler, some conditionnal tests are slower than others, because some test only one flag (jb,je,jae...) are others test more than one flag : at least two : don't use them if you can. They are : jbe,ja,jl,jle,jg. C) To calculate a square root in assembler, you can use the following tip : the limit of the suite whose U0=1 and Un+1=.5*Un+.5*x/Un is the square root of x. Easy to demonstrate, because the limit of the suite is : l=.5*l+.5*x/l <==> l^2=.5*l^2+.5*x <==> .5*l^2=.5*x <==> l^2=x <==> l is the square root of x D) On Trident 8900 and compatible you can have a 128Ko video page at 0A000h-BFFFh : just send 0106h to out port 3ceh.(the graphic data controller) However, since it isn't compatible with other video cards, you may not use this for demo-coding. You can also use SVGA easily : send Eh to out port 3C4h ; then the number of the 64k bank "xor 2" to out port 3C5h. For example in 640/480, the pixel at x:135 ; y:267 is at the place : 267*640+135=171015. It's in the 171015 div 65536=bank n°2 (after the bank 0 and the bank 1) So send Eh to out port 3C4h, then 2 xor 2=0 to out port 3C5h ; then finally send the number of the color to the memory at 0A000h:(171015 mod 65536) !! E) Try to use the shift-by-bit instructions instead of division (when you can) Since (for example) 2^7=128 : * n div 128=n shr 7 For the rest of the entire division : * n mod 128 (the rest of the entire division) =n and 127 (this uses a bit-mask) Fast !! (but possible only with powers of 2 : 2^1 ; 2^2 ; 2^3 ...) X. Personnal feelings ───────────────────── I want to tell you a thing : experience demos. I really think the good demomakers are the best coders, graphic and music artists. What ? When you see Second Reality (Future Crew), Untitled (Dust) or Show (Majic 12), even Fishtro (Future Crew) and Crystal Dream II (Triton), and after you enjoy a Windows trip, aren't you confused ? Yes, it's quite different... Yes, very different... Thank you, really, Sammi Tammilehto, Jonne Valtonnen, Markus Stein, Maxwood, for all the pleasure you gave to all demo-experienced PC users ; the CD-ROM pseudo-interactive productions will have difficulties with guys like you. To all the people who say that pure assembler is the unique way to produce fast routines, I only say that Doom, which ins't one of the slowest games, is coded in C. NEVER forget to enjoy when you use your PC. A computer is not a TV set. Hornet, 2 Jan 1996.
[ back to the prod ]