Start.of.DemoNews.123..............................................Size:63,577

______/\___________________________       __  ________________ ___  /\_______
\____   \  ________ _   _ ______   \     /  \|  \  ________   |   \/  ______/
/   |    \  :)   \   \_/   \   |    \   /    \   \  _)   \    |    \______  \
/    |     \       \   |     \  |     \ /          \       \  /~\    \    /   \
\_____     /_______/___|     /________/ \____\_____/_______/_________/________/
   \_____/            |____/

                                                       | Subscribers  :  2304
             DemoNews #123 - 15 May 1996               |   Last Issue :  2208
                                                       |   Change     :   +96
     DemoNews is a newsletter for the demo scene.      | Archive Size : 2377M
      It is produced by Hornet at ftp.cdrom.com.       |   Last Issue : 2645M
    Our demo archive is located under /pub/demos.      |   Remaining  :  611M
                                                       |
==[Contents]===================================================================

          Calendar
          Downloads
          Uploads
          Articles
            Introduction................................Snowman
            Announcing NAID 1996........................Struk
            A Graphician's Tip Book - Part 1............Shaithis
            Intro to 3D Graphics - Volume 05............Kiwidog
            NAID: As if You Were Here...................White Noise
            Imphobia 12 Voting..........................Darkness
            FunktrackerGOLD for Linux...................Jason Nunn
          Subscribing
          Closing


==[Calendar]===================================================================

Date      Event            Location  Concact Points (email has an '@')
--------- ---------------- --------- ----------------------------------------
31 May 96 Naid             Canada    [email protected]
                                     www.autoroute.net/~naid
                                     naid.conceptech.qc.ca
02 Jun 96 The Scene        Singapore [email protected]
                                     www.singnet.com.sg/~ckiang/tsc96.html
07 Jun 96 Abduction        Finland   [email protected]
                                     www.hut.fi/~maurala/abduction.html
19 Jul 96 Flag             Hungary   [email protected]
28 Jul 96 Summer Encounter Denmark   [email protected]
                                     www.vision.auc.dk/diffusion/SE96
04 Aug 96 Summit           Israel    [email protected]


==[Downloads]==================================================================

Combined               Demos 1 0197 nooon_st.zip      Gfx 1 0036   airwar.zip
                             2 0175  animate.zip          2 0030 dst_frac.zip
 1 0334     cp16.zip         3 0171  inside1.zip          3 0026 veced300.zip
 2 0261    ft206.zip         4 0169  inside2.zip          4 0025   vamp10.zip
 3 0235     cp17.zip         5 0168 contrast.zip          5 0023  scarlet.zip
 4 0212    it202.zip         6 0156  fashion.a01          6 0019    girl3.zip
 5 0197 nooon_st.zip
 6 0185 scrmt321.zip   Music 1 0334     cp16.zip     Code 1 0177  3dsco20.zip
 7 0177  3dsco20.zip         2 0261    ft206.zip          2 0110   mphong.zip
 8 0175  animate.zip         3 0235     cp17.zip          3 0100 voxeltut.zip
 9 0171  inside1.zip         4 0212    it202.zip          4 0087    ccard.doc
10 0169  inside2.zip         5 0185 scrmt321.zip          5 0081 voxelsp2.zip
11 0168 contrast.zip         6 0160 m4w230sx.zip          6 0077  tpp1src.zip

Total downloads this week : 69,058


==[Uploads]====================================================================

=----------------------------------------------------------(File Information)-=

Main site  : USA       ftp.cdrom.com/pub/demos

Mirrors    : Sweden    ftp.luth.se/pub/msdos/demos
             S. Africa ftp.sun.ac.za/pub/msdos/demos
             USA       ftp.uwp.edu/pub/msdos/demos
             USA       ftp.co.iup.edu/code

Other sites: Belgium   hagar.arts.kuleuven.ac.be/demos
             Sweden    ftp.arosnet.se/demo

Web pages  : Denmark   www.th-zwickau.de/~maz/sound.html
             Canada    datex.ca/trax
             USA       www.jax-inter.net/users/mblocker/demos
             U.K.      www.dcs.ed.ac.uk/~mxr/gfx
             Belgium   hagar.arts.kuleuven.ac.be/~sdog/party.html

All ratings are subjective.

=---------------------------------------------------------------------(Music)-=
/demos/music                     Size Rated Description
=------------------------------- ---- ----- ----------------------------------=
/disks/1996/e/eh-0496.zip        1482 *     04/96 Pack by Exploding Hedgehogs
/disks/1996/e/eh-best1.zip        806 *+    Best of...Vol. 1 by Exp. Hedgehogs
/disks/1996/n/no-image.zip        841 **+   Images by J. Redfern
/disks/1996/r/rpcarmgn.zip       1474 *+    Carmagnola by Red Power
/disks/1996/s/sdc-0003.zip       1291 **+   Volume 3 by SDC
/disks/1996/s/sdc-0004.zip       1239 **+   Volume 4 by SDC
/disks/1996/s/secworld.zip        372 **+   Secret Worlds by Resound
/disks/1996/t/tr-burn.zip        2086 ***   Burning by Tracktor
/disks/1996/t/tr-subl1.zip       1497 ***   [1/2] Sublevel by Tracktor
/disks/1996/t/tr-subl2.zip       1163 ***   [2/2] Sublevel by Tracktor
/disks/1996/t/tripto1a.zip       1459 ***+  [1/2] Tripout Volume 1 by Trip
/disks/1996/t/tripto1b.zip       1485 ***+  [2/2] Tripout Volume 1 by Trip
/disks/1996/t/trx0496a.zip       1222 **+   [1/2] 04/96 Pack by Traxx
/disks/1996/t/trx0496b.zip       1256 **+   [2/2] 04/96 Pack by Traxx
/disks/1996/t/trxds001.zip       1140 **    Deranged Songs Volume 1 by Traxx
/disks/1996/u/u-flo.zip           761 ***   Flo by Ultrabeat
/disks/1996/u/unify2.zip         1036 ***+  Unification 2 by Aim Higher
/disks/1996/w/wr-dipth.zip        593 **+   Diptheria by Wraith
/disks/1996/z/zinc-gtf.zip        858 **    Groovy Time Fabric by Zinc
/songs/1992/mod/p/pmb-rain.zip    143 **+   Cheek Rain by FX
/songs/1993/mod/d/dancextc.zip    105 **+   Dance Xtc by Dune
/songs/1994/mod/w/warsa-ny.zip    281 ***   Warsaw-New York by DSX Design
/songs/1994/s3m/c/csp.zip          99 +     Carmel Snack Pack by dintel
/songs/1994/s3m/h/hpl_32k.zip      15 ***   Hpl-32k by Dune
/songs/1994/s3m/j/jumper.zip      177 **+   Jumper by Aphex
/songs/1994/s3m/m/mindcont.zip     75 **+   Mind Controller by Cyclone
/songs/1994/s3m/t/t10-nghb.zip    111 ***   Top 10 Neighbours by dune
/songs/1994/xm/i/icedesrt.zip     344 **+   Ice Desert by Aphex
/songs/1994/xm/k/kz-geoma.zip     306 ****  Geomancer by Kal Zakath
/songs/1994/xm/t/thegrdnb.zip     126 **+   The Garden Behind by Aphex
/songs/1995/s3m/0-9/0que.zip       87 **    -QUE by Dune
/songs/1995/s3m/a/arsa.zip         24 **+   Arsa Bamk by Dune
/songs/1995/s3m/c/cages.zip        89 **+   Crystal Cages by Cyclone
/songs/1995/s3m/c/ccs-glsw.zip    199 ****  The GlassWalker by Aahz
/songs/1995/s3m/c/control.zip     162 ***   Control E by Dune
/songs/1995/s3m/c/cover.zip       116 ****  Cover of Darkness by Daedalus
/songs/1995/s3m/c/crimson.zip      70 +     Crimson Fantasy by Son Zoo
/songs/1995/s3m/d/div-ultr.zip    156 *+    Decieving Delight by Diversion
/songs/1995/s3m/d/dmk-eco.zip     157 ***   Ecolove Remix by Hector
/songs/1995/s3m/d/dmk-our.zip     146 **+   Our Time Alone by Hector
/songs/1995/s3m/d/dmk-yoot.zip    400 ***   Big Yoots Forever by Hector
/songs/1995/s3m/f/first.zip       115 ***   The First by Roxton-Pond
/songs/1995/s3m/f/frequent.zip    157 ***+  Frequent by Dune
/songs/1995/s3m/h/harmitus.zip      6 ****  Harmitus Painaa Mieltani by Dune
/songs/1995/s3m/i/imadeths.zip     45 **    I Made This by Dune
/songs/1995/s3m/j/jeesmaan.zip    241 ****  Jees Maan Mii Is Avaruus. by Dune
/songs/1995/s3m/l/lifeforc.zip     81 ***+  Life Force by Cyclone
/songs/1995/s3m/o/oceanic.zip     323 ****  Oceanic by Griffin
/songs/1995/s3m/r/reoclasc.zip     25 ***+  Reoclassic Mokk by Dune
/songs/1995/s3m/s/southern.zip    101 ****+ Southern Pacific by Dune
/songs/1995/s3m/t/teknorap.zip    102 ****  Last Train by Dune
/songs/1995/s3m/t/tension.zip     168 **+   Surface Tension by Cyclone
/songs/1995/s3m/u/uh-oh.zip       143 ***   House Party MCXZorro by Dune
/songs/1995/s3m/v/victory2.zip    268 ***+  Final Victory by Daedalus
/songs/1995/s3m/w/waves.zip        74 **    Waves by Cyclone
/songs/1995/xm/d/d_1-te2.zip       27 *     rave1 by dune/orange
/songs/1995/xm/n/ns.zip            42 ***   Study Break by TJ
/songs/1995/xm/s/shield.zip       508 ***+  Shield of Protection by Lioz
/songs/1996/it/g/gem-resr.zip     447 *+    Resurrection by Galahad
/songs/1996/it/i/i-xtinct.zip     103 **    Xtinct FunkJungle by Motiv
/songs/1996/it/i/inthehal.zip     229 *+    In Hall..Mountain King by Sturm
/songs/1996/it/j/js-caway.zip       5 ***   Chipping Away by Jestyr
/songs/1996/it/l/lwclouds.zip     125 *     Long White Clouds by Sturm
/songs/1996/it/n/neb-crow.arj     170 **    Crow Supremacy by MikPos
/songs/1996/it/n/nf-knew.zip       82 *+    Knowing the Answer by NF
/songs/1996/it/o/orc.zip          213 **    The March of the orcs by Bishop
/songs/1996/it/w/winddown.zip     516 ***+  Wind Down by Reuben Fortier
/songs/1996/mod/a/amu.zip          80 **+   AM 1.R SZ by Lala & H.Robi
/songs/1996/mod/b/batucada.zip    205 **    Batucada by DJ Dero
/songs/1996/mod/b/beau_day.zip    195 **+   Beautiful Day by Smash
/songs/1996/mod/c/cyberspc.zip     82 **    CyberSpace by LaLa
/songs/1996/mod/d/dreamsre.zip    105 **    Dreams of Reality by Soundmaster
/songs/1996/mod/d/drumrunr.zip    150 *+    Drum Run Remix2 by Tronster
/songs/1996/mod/d/dungeonw.zip    101 *+    Dungeon Walk by LaLa
/songs/1996/mod/m/m_adult.lha     392 **+   Adults by Dreamfish
/songs/1996/mod/m/m_far.lha       263 ***   Farawayadventure by Carebear
/songs/1996/mod/m/m_subi.lha      163 **+   Subi's Back by Subi
/songs/1996/mod/m/m_trib.lha      237 ***+  Tribute Remix by TheFoxII
/songs/1996/mod/p/pinochio.zip     79 ***   Pinochio by Cortex
/songs/1996/mod/t/teknodan.zip     78 **+   Tekknodance by SoundMaster
/songs/1996/mod/t/tinytune.zip     10 **+   TinyTune by SoundMaster
/songs/1996/mod/y/ybkeep.zip      119 **+   The Keep by Yannis
/songs/1996/mod/y/ybroam.zip       66 ***   Roaming the Ruins by Yannis
/songs/1996/mtm/k/k_rept.zip      290 **+   Reptillian by Quarex
/songs/1996/other/k/k_kitexp.zip  403 **+   Kitchen Experiment by Vivid (AMS)
/songs/1996/other/u/u_consol.zip   46 **    Consolidation by Lala (ULT)
/songs/1996/other/u/u_crimew.zip  124 ***+  Crimewave by Lala (ULT)
/songs/1996/other/u/u_illusi.zip  367 **+   Illusions of Love by Lala (ULT)
/songs/1996/other/u/u_moment.zip  145 **    Moments of Friendship by Lala(ULT)
/songs/1996/other/u/u_snowfl.zip  511 ***   Snowflake Hymn by Lala (ULT)
/songs/1996/other/u/u_vastne.zip  315 **    The Vastness of Space by Lala(ULT)
/songs/1996/s3m/a/a_intro.zip     232 ***   Introspection by Subliminal
/songs/1996/s3m/a/a_tback.zip     208 **+   No Turnin' Back by Subliminal
/songs/1996/s3m/a/a_unlmnd.zip    119 **+   Unlocked Mind by Subliminal
/songs/1996/s3m/a/aa-tranc.zip    129 ***   Trance Dance? by Mindless
/songs/1996/s3m/a/agony.zip       195 *     Agony by Dornbush & Fisher
/songs/1996/s3m/a/andrea.zip      262 *     Andrea by Dornbush & Fisher
/songs/1996/s3m/a/andreabm.zip    227 *     Andrea-BRemix by Dornbush+Fisher
/songs/1996/s3m/a/andreahh.zip    249 *     Andrea HRemix by Dornbush+Fisher
/songs/1996/s3m/a/angtalk.zip     251 **+   Angel Talk by Intermission
/songs/1996/s3m/a/another.zip     160 **+   Another Lies by The Revelations
/songs/1996/s3m/a/ara_seek.zip     55 **    Seek by Ara
/songs/1996/s3m/a/ashit.zip       107 *     AShit by Dornbush & Fisher
/songs/1996/s3m/b/battle.zip      133 ***+  Fight to the Finish by Nitro
/songs/1996/s3m/b/blast.zip       533 *     Blast..Brains by Dornbush+Fisher
/songs/1996/s3m/b/bn-aevea.zip    276 ***+  Aevea by DJBeanz
/songs/1996/s3m/b/bronx.zip       521 **    Rumble in the Bronx by Stein
/songs/1996/s3m/b/bullet.zip      801 *     Bullet with Butter.. by Stein
/songs/1996/s3m/b/bw-gtagt.zip    125 ***+  Goodbye to a good.. by Blackwolf
/songs/1996/s3m/c/ccs-caff.zip    250 **    Caffeine by Absalom
/songs/1996/s3m/c/ccs-dfub.zip    147 ***   DasFunky UberAlles by Aahz
/songs/1996/s3m/c/ccs-enf.zip     193 ***   Ebb & Flow by Absalom
/songs/1996/s3m/c/ccs-eps.zip     330 ****  Epsilon Eclipse by Mayhem
/songs/1996/s3m/c/ccs-insm.zip    499 ***+  The Insomniac by Mayhem
/songs/1996/s3m/c/ccs-srq.zip     349 ***+  My Satin-Robed Queen by Mayhem
/songs/1996/s3m/c/ccs-ssre.zip    229 ***   Sidestep Remix by Aahz
/songs/1996/s3m/c/ccs-wud.zip     256 ***+  Wake Up Dead by Aahz
/songs/1996/s3m/c/cyborgc.zip     173 +     Cyborg Cop by uToPiA
/songs/1996/s3m/d/d_allend.zip     80 +     All Good Things... by Noble Roman
/songs/1996/s3m/d/d_begin.zip      50 *     Sad Beginnings by Noble Roman
/songs/1996/s3m/d/d_dont.zip       73 +     Don't Bother Me by Noble Roman
/songs/1996/s3m/d/d_echoes.zip    162 +     Echoes from Within by Noble Roman
/songs/1996/s3m/d/d_melody.zip     18 +     Pianoic Melody by Noble Roman
/songs/1996/s3m/d/desire07.zip    238 +     Desire by Sonzoo
/songs/1996/s3m/d/dickd1.zip       74 *     Tyrone by Dick Ditties
/songs/1996/s3m/d/dmicnfm.zip     218 **+   Conformity by Stavross
/songs/1996/s3m/d/dmk-strv.zip    215 ***+  Striving for the Light by Hector
/songs/1996/s3m/d/ds-darkc.zip    118 *+    Dark, Cold, and Empty by Froyd
/songs/1996/s3m/d/ds-know.zip     197 **    Don't Know Her by Ez
/songs/1996/s3m/d/dvision.zip     135 **    Double Vision by Porus
/songs/1996/s3m/e/envy.zip         95 *     Envy by Stein
/songs/1996/s3m/f/flying.arj       91 **+   Flying in the Sky by Love 4 All
/songs/1996/s3m/f/for_bles.zip    204 *+    Bless You by Fortune
/songs/1996/s3m/f/for_itts.zip    167 *+    Into the Shadow by Fortune
/songs/1996/s3m/f/for_prog.zip    113 *+    Progression by Fortune
/songs/1996/s3m/g/g_fntn2.zip     185 **+   (fount[)ag(ain]) by Q. Porcupine
/songs/1996/s3m/g/gem-tree.zip     81 ***   Trees by OxideMan
/songs/1996/s3m/h/hide.zip        225 *+    Hide by Crimeday
/songs/1996/s3m/j/jacobs_l.zip    256 ****  Jacob's Ladder by Ler
/songs/1996/s3m/j/java.zip         54 **+   Kingdom of Java by Fizz
/songs/1996/s3m/k/kguns.zip        65 ****  Karate Guns PLUS! by Meat
/songs/1996/s3m/l/lg-oasis.arj    312 ***   Oasis by Legend
/songs/1996/s3m/l/lnc-days.zip    212 **+   These Sunny Days by Linearic
/songs/1996/s3m/l/lnc-exp.zip     203 **+   Expedition to Unknown by Linearic
/songs/1996/s3m/l/lnc-jmca.zip     91 **    I Come From Jamaica by Linearic
/songs/1996/s3m/l/lnc-rock.zip    146 **+   Rockers Will Survive by Linearic
/songs/1996/s3m/l/lost.zip        139 ***+  Lost in a Cloud by Cardiac
/songs/1996/s3m/m/masked.zip      149 **    Masked message by Juggernaut
/songs/1996/s3m/m/mess.zip        118 **+   Total Mess by Juggernaut
/songs/1996/s3m/m/miracle.zip      97 **    The Miracle (Queen) by Zaigamor Spellweaver
/songs/1996/s3m/n/nex-cact.zip    377 **+   Plastic Cactus by Nexus
/songs/1996/s3m/n/nm-life.zip     222 ***   Portrait of Life by Nomex
/songs/1996/s3m/n/noreturn.zip    103 **    There..no return... by Juggernaut
/songs/1996/s3m/o/outsider.zip    331 ***   Outsider by Juggernaut
/songs/1996/s3m/o/oym-trf.zip     298 *+    Turbulent Rhythm Flow by Oyml A.
/songs/1996/s3m/o/oym-ttds.zip    110 **    Trippy Trippy Disco.. by Oyml A.
/songs/1996/s3m/p/pal_chem.zip     94 **    Chemistry of Hate by Paladin
/songs/1996/s3m/p/pal_wth.zip     158 *+    Welcome to Hell by Paladin
/songs/1996/s3m/p/peaceful.zip     68 ***   Peaceful Journey 1.01 by Cyclone
/songs/1996/s3m/s/s-time.zip      184 ***   Time Slips By by Gamera
/songs/1996/s3m/s/s_slides.zip    151 **+   Slides by Shudder
/songs/1996/s3m/s/slenter.zip     238 +     Slenterpunk by Dornbush and Fisher
/songs/1996/s3m/s/smi_brmx.arj    164 *     Boom Ring Mix by Joker
/songs/1996/s3m/s/smi_crn.arj      48 **    Cryin' (cover) by Joker
/songs/1996/s3m/s/smi_dcmp.arj    317 *     Dance Computer by Joker
/songs/1996/s3m/s/sr_progr.zip    247 **    Progression by S.Roger
/songs/1996/s3m/s/sum-song.arj    119 **+   Summer Song by Fox
/songs/1996/s3m/t/tl-affli.zip    569 ***+  Affliction by Timelord
/songs/1996/s3m/t/tp5_dune.zip    389 ****+ World of Saracens by Dune
/songs/1996/s3m/w/wake.zip        186 **    Wake by Bishop
/songs/1996/s3m/x/x-files.zip     276 ***+  The X-files by Daedalus
/songs/1996/s3m/x/x96revol.zip    126 ***   Revolution 2 by Maxtracker
/songs/1996/s3m/z/zeolite2.arj    149 **+   Zeolite Mix 2 by Utopia+Crimeday
/songs/1996/s3m/z/zn-1day.zip     141 **+   One day... by zinc
/songs/1996/xm/0-9/3xd578k9.zip    17 ***+  Gateway 20k Compo Songs by Dune
/songs/1996/xm/0-9/97-cross.zip   580 **+   Getting the Hang by Celorn K.
/songs/1996/xm/a/air-rt.zip       471 ***   Runtime by Airon
/songs/1996/xm/a/apsbrain.zip     131 ***   Brainchild by APS
/songs/1996/xm/a/asg.zip          605 *     All System Go! by Eeli
/songs/1996/xm/b/baddream.zip     104 +     ...Bad Dream by Dr. Westwood
/songs/1996/xm/b/ballad.zip       440 ***+  The Ballad of Romeo by doj/ct
/songs/1996/xm/b/beautif3.zip    1536 **    Beautiful life by K.O Xtrong
/songs/1996/xm/b/bodyheat.zip     148 **    Feel my Bodyheat by Igneous
/songs/1996/xm/b/boriqua.zip      737 **    RR Boriqua Anthem by K.O. Xtrong
/songs/1996/xm/c/cb-bubbl.arj     397 **    Whatever Bubbles by PeDRo
/songs/1996/xm/c/cb-draft.arj     193 **    Draft by Logos
/songs/1996/xm/c/cb-shake.arj     146 *+    Something to Shake by TruxX
/songs/1996/xm/c/cbk_brxb.zip     466 *+    Breax > Beats by Cubik
/songs/1996/xm/c/cbk_sday.zip     228 **    I Don't Like Sundays by Cubik
/songs/1996/xm/c/cbk_svu1.zip      51 *+    Sellout vs. Underground by Cubik
/songs/1996/xm/c/cc-rmwng.zip      87 **+   Raising My Wings by Cruel Creator
/songs/1996/xm/c/ccs-time.zip     625 ****  Give Me Some Time by Aahz/Absalom
/songs/1996/xm/c/cemetery.zip     473 **+   Cemetary by Embrittlement
/songs/1996/xm/c/consolid.zip      39 *+    Consolidation by LaLa
/songs/1996/xm/d/dahouse.zip      349 +     Rock Da House by Eye of Hurricane
/songs/1996/xm/e/e_asg.zip        605 *     All Systems Go by Eeli
/songs/1996/xm/e/el-bp_ae.zip     308 **+   Bluefire Pop by Electric Lucidity
/songs/1996/xm/e/el-esotr.zip     255 **+   Esoteric by Electric Lucidity
/songs/1996/xm/e/el-thu.zip       442 **+   The Half Unknown by Electric Lucidity
/songs/1996/xm/e/elw-dead.zip     257 ****  Deadlock by Elwood
/songs/1996/xm/e/elw-fall.zip     321 ****  Fall from Sky by Elwood
/songs/1996/xm/e/elw-feat.zip     378 ****  Feats of Valor by Elwood
/songs/1996/xm/e/elw-icom.zip     230 ****  Inferiority Complex by Elwood
/songs/1996/xm/e/elw-litt.zip     283 ****+ Little Man by Elwood
/songs/1996/xm/e/elw-shad.zip     232 ****  Into the Shadow by Elwood
/songs/1996/xm/e/elw-shot.zip     212 ****  Shooting Star by Elwood
/songs/1996/xm/e/elw-swee.zip     320 ****+ Sweet Dreams by Elwood
/songs/1996/xm/e/es_wuf.zip       106 *     Wolf Waltz by Estinor
/songs/1996/xm/e/evacuate.lzh     146 **+   Evacuate! by BMP
/songs/1996/xm/e/evoldork.zip     930 **+   Evol Dork by The Green Reaper
/songs/1996/xm/f/fantoz96.zip     182 **+   Fantozi Original by BassQ
/songs/1996/xm/f/fh-nrefl.zip     214 **    Nostalgic Reflection by FH
/songs/1996/xm/f/fsk_5min.zip      73 ***   5 Minutes of Morning by VadimVS
/songs/1996/xm/g/g_darkp.zip      300 ***+  Dark Promise by Hunz
/songs/1996/xm/g/g_sonido.zip     453 *     Sonido Matanzero by Ryan
/songs/1996/xm/g/gentle.zip       283 **    Be Gentle With Me by Peter Kendell
/songs/1996/xm/g/gustoso.zip       95 *+    Gustoso by Pix
/songs/1996/xm/i/it-start.zip      52 **+   Startrekkin Forever by It-Alien...
/songs/1996/xm/j/jb-21stc.zip     552 ****  21st Century Dig.. by J. Bonnell
/songs/1996/xm/j/jb-bunkr.zip     252 ***+  The Bunker by John Bonnell
/songs/1996/xm/j/jb-uncle.zip     511 ***   Uncle John by John Bonnell
/songs/1996/xm/j/jr-htheb.zip     374 **+   Huggy the Buggy by J.Rook
/songs/1996/xm/k/k_frothy.zip     264 ***+  Frothy Moo Jooce by Lord Pegasus
/songs/1996/xm/k/kb.zip           448 +     Klondike Bar by Joe & Steve & Bob
/songs/1996/xm/k/koti_01.zip      285 ***   Breakin' Thru by Kotivalo
/songs/1996/xm/k/koti_02.zip      345 ****  Hypnosis by Kotivalo
/songs/1996/xm/k/koti_03.zip      301 ***   When Twilight Comes by Kotivalo
/songs/1996/xm/k/koti_04.zip      153 ****  Walking by Kotivalo
/songs/1996/xm/l/levi.zip         341 ***   Powers of Levitation by Rascal
/songs/1996/xm/m/mo-mania.zip     540 **    Movie Mania by Igneous
/songs/1996/xm/n/n55-dawn.zip     372 ***+  Dawn by Xerxes
/songs/1996/xm/n/na_fate.zip      389 ***+  Fate by Gain
/songs/1996/xm/n/ng-freon.zip      81 **    Freone (oZone edit) by Demuc
/songs/1996/xm/n/ng-sl.zip        335 **+   Skyline (remix) by Solaris
/songs/1996/xm/n/no-hope.zip      170 ***+  Hope by Syrinx
/songs/1996/xm/o/o-paci.zip       301 **+   Pacific Ocean by Oona
/songs/1996/xm/o/o-re_hsi.zip     232 ***   Intelligent reload by Oona
/songs/1996/xm/o/o_dbbrn.zip      373 **+   More db's than brains by Otis
/songs/1996/xm/o/o_phong.zip      459 **+   Trancehaded trip by Otis
/songs/1996/xm/o/o_trip2.zip      380 **+   The Trip part II by Otis
/songs/1996/xm/p/pahdistb.zip     299 **    Disturbance by PAH
/songs/1996/xm/p/para-vox.zip     648 ****  Paranoia (voice mix) by Scirocco
/songs/1996/xm/p/paranoid.zip     297 *+    Paranoid by Green Reaper
/songs/1996/xm/p/pb_dance.zip     193 **+   Keep Dancin by Point Blank
/songs/1996/xm/p/pb_roll.zip      367 ***   Destiny Roll by Point Blank
/songs/1996/xm/p/pmb-soun.zip     192 **    Sound of S.A by Snes
/songs/1996/xm/r/r_leap.zip       159 *+    Leapfrog by Ryan
/songs/1996/xm/r/r_true.zip       262 *     True Remorse by Ryan
/songs/1996/xm/r/r_vict.zip       182 *     Victory by Ryan
/songs/1996/xm/r/riversid.arj     365 ***   Riverside Ballad by Soundmaster
/songs/1996/xm/r/ru-4ever.zip     267 **    Dream 4ever by DJ Rex
/songs/1996/xm/r/russia.zip        35 *+    Russian Feel by Sleepwalker
/songs/1996/xm/s/sc_impac.zip     155 ***+  Impact by Screamager
/songs/1996/xm/s/sensatio.zip     249 ***   Sensations by Soundmaster
/songs/1996/xm/s/si-mroc1.zip     195 **    Modern Rock 1 by J. Bonnell
/songs/1996/xm/s/sky_ilde.zip     214 **+   Illogical Decision by D.J. YoYo
/songs/1996/xm/s/sky_inds.zip     513 **+   Industry of Noise by D.J. YoYo
/songs/1996/xm/s/sky_only.zip     192 **    Only You by D.J. YoYo
/songs/1996/xm/s/sky_open.zip     314 **    Open Your Mind by D.J. YoYo
/songs/1996/xm/s/sky_rain.zip     282 **+   Raindrops by D.J. YoYo
/songs/1996/xm/s/soda-ste.zip      92 **+   De Musica Ligera by Nadim Hobaica
/songs/1996/xm/s/spazm.zip        234 **+   Spazmodic..Vengeance by G. Reaper
/songs/1996/xm/s/stabbing.zip     184 *     Backstabbing by Bombi D
/songs/1996/xm/s/symph.zip        114 **    Symphony in Her Mind by Saxy
/songs/1996/xm/t/tejin.zip         67 *+    TJ Intro Tune by Sleepwalker
/songs/1996/xm/t/thebegin.zip     268 **+   The Beginning by Humanoid
/songs/1996/xm/t/tom-divn.zip     450 ***   Divna by Mateus
/songs/1996/xm/t/tom-poho.zip     301 ***+  Czech Pahoda 96 by Mateus
/songs/1996/xm/t/tricky.zip       246 ****  Tricky by Balrog & Mellow-D
/songs/1996/xm/w/w-snowin.zip     213 ****  Snowin' At Sahara by Weed
/songs/1996/xm/w/wasser.zip       393 ***+  Wenn das Wasser blubbert by DOJ
/songs/1996/xm/x/xs1.zip          844 *     Excessive Force by Utopian Dreamer
/songs/1996/xm/x/xs2.zip         1120 +     Excessive Trance by Utop.. Dreamer
/songs/1996/xm/x/xs3.zip         1038 *     ??? by Utopian Dreamer

=------------------------------------------------------------------(Graphics)-=
/demos/graphics                Size Rated Description
=----------------------------- ---- ----- ------------------------------------=
/images/1995/g/gfx_ddt.zip      276 **+   ENL95:grfx:02: Robots by Royal Ghost
/images/1995/g/gfx_lkr.zip      129 **    ENL95:grfx:XX: Check eyes by Hired
/images/1995/g/gfx_ovr.zip       90 **    ENL95:grfx:XX: Prince by Battle
                                         | Master
/images/1995/g/gfx_qmg.zip      393 **+   ENL95:grfx:03: Ships by Queue Members
                                         | Group
/images/1995/g/gfx_ren.zip      108 ***+  ENL95:grfx:01: Rave Babe by Ren of
                                         | Scene Side
/images/1996/e/elements.arj     615 *+    Elements by MikPos
/images/1996/l/lt-jezth.zip      46 **    Jezeth by Light
/images/1996/l/lt-ltm.zip       134 **    Little Mistake by Light of Kosmic
/images/1996/l/lt-pfear.zip     157 ***   Planetary Fear by Light
/people/h/hqn.gif                 5       Harlequin / Success
/programs/editors/apaint01.arj   20       AnimPaint animation editor by Sphair
/programs/editors/bsdemo1a.zip   75       Blob Sculptor for 3ds by Steve Anger


==[Articles]===================================================================

=---------------------------------------------------(Introduction)--(Snowman)-=

Hello all, and welcome to DemoNews issue 123.

Much has happened in the past three weeks.  Diablo and I set down some
concrete specifications on the new archive system.  The Hornet Underground CD
went off to the happy mass-producers.  The beta version of the Music Contest
4 rules were released to the public.  A baby web interface was constructed on
our archive.  A week was spent in contract negotiations with the NAID
organizers (concerning Walnut Creek's sponsorship and the NAID CD).  At the
company, I got "promoted" to webmaster (maybe I should call it a lateral
move).

Trixter works on our demo for NAID while GD tries to coordinate efforts on
the MC4 intro.  I try to review demos while brushing up on HTML 3.2
documentation.  The RealAudio people keep calling me and asking if I like
their FreeBSD .ra server.  Yes folks, it is that time of the year, the season
for excess stress and super-human productivity... Whew!

This world is a funny place sometimes.  Every time I think my role is set in
the scene, it changes.  Every time I think I've established permanence in
something I soon find flaws or ways to enhance it.  Every time I think about
thinking, I get caught in this endless while(1) loop until someone breaks me.

Stress is an incredible catalyst in creative expression.  It can make you
have wild, colorful, random, and in rare circumstances, logical thoughts.
Lately, I've caught myself thinking about (plotting?  :)) the future of the
scene.  It seemed a worthy subject and all, given that I've got to come up
with something interesting for this intro.

Now suspend for a moment (if you will) concrete and linear thinking.  Take
off those shoes and go smoke if need be.  Get relaxed and fresh... this is
gonna be deep.

Think of the demo scene as this big crystalline gem, floating in space.
Everyone's a light source, floating around weightless.  Some of us find other
colors complementary to ourselves.  We stick together and fly in ordered
patterns.  For one reason or another, certain faces of this gem get more
light than others.  Some colors apparently prefer to master a darker side of
the crystal rather than compete in a fray of luminescence.

Over time, new lights trickle in from afar.  The gem gets brighter.
Eventually so many lights cluster around the gem that you can't see it
anymore... it's too bright to look at.  But the old lights keep circling,
having memorized where they need to be.  In the surrounding space, foreign
colors start to be drawn toward the inferno... not even able to see the gem
inside but driven by curiosity.  'Why is that thing so bright?'

It's time for an eclipse.

Snowman / Hornet - [email protected]


=---------------------------------------------(Announcing NAID 1996)--(Struk)-=

_____Introduction

Big happy hello to everyone in the demo scene!  This year, me (Struk), Mr.
Khan and MEd are putting together the second edition of the North American
International Demofest.

NAiD '96 will be 3 days long, starting on 31 May 1996 at College
Edouard-Montpetit in Longeuil (Quebec) Canada.  Doors open at 20h00 on
Friday, 31 May 1996.  With the help of our sponsors, especially Walnut Creek
CDROM (You might know them thru their mega ftp site ftp.cdrom.com) we will be
able to give away over $8000 CAN in prizes for all the compos. There will be
a Demo, Intro, Music, Gfx, 4.2 kb Intro, 3Channel chiptune, The Lim-o-naid
and a couple of other very kewl competitions on site.

For the past 8 months we have been working very hard to get this party
together.  A lot of activities and features are in the works that will make
NAiD 1996 a much bigger and much better demoparty than its previous
incarnation.  To give you a few examples, we are planning to rent LASERS for
extremely impressive mind-bogling-baba-cool music and light shows.  We're
planning to get a big Molson beer tent accompanied by a good sound-system and
a BBQ outside (A great way to get your vitamin E :).  We'll be renting 35mm
movies (like Pulp Fiction) to watch them in our school movie theater with
surround sound.  We'll be getting an ISDN data line for Internet access.
We'll have cool prizes to all the small compos, some cool bands playing, and
a lot, lot more.  Of course, all of this kinda costs money.

At last year's party, as you might know, we ended up with a small deficit
(which was to be expected considering we almost gave tickets away).  The
situation this year is quite different since we are now aiming for 0 deficit,
maximum fun.

Now, on a seemingly unrelated issue, we also are planning to get our college
diplomas in the not too distant future.  Now, having said this, we'd like to
ask people to mail in (or fax) their ticket orders for NAiD 1996 as soon as
possible.  This gives us a bit more room to maneuver than we had last year.
It's not that the NAiD party is at risk, but the health and grades (I mean
it) of everybody involved in the organization will suffer if we have to go
through the same amount of red tape we had to last time.  And that can't be
good for the party either.

Thus, help us and make our jobs easier.  Send us thru mail or fax your ticket
orders for NAiD as soon as possible.  That way we'll have the breathing space
we need to make NAiD 1996 the biggest and the best it can be.  Don't forget,
NAiD is a non-profit demo party!  All the money that comes in goes directly
back into da party!  So don't be shy and order now! We wanna know how many
people will be having fun on earth this year! :)

NAiD - Be there and die or be elsewhere and cry.

Struk / NAID-Apraxia - [email protected], http://www.autoroute.net/~naid


=------------------------------(A Graphician's Tip Book - Part 1)--(Shaithis)-=

_____Introduction

For those of you who don't know me (which should be just about everyone on
the PC demo scene), my name's Chris Buecheler (Beekler)... or Shaithis...
whatever.  I'm an artist and a tracker, although my skills at the former are
much more, shall we say, refined than the latter.

Anyway, I contacted Snowman recently, and questioned him on whether he liked
the idea of a graphics column.  His response was very positive. Go for it.
Write the column. Okay, So here I am...

I'm here to give you guys, the slavering demosceners, some information on
graphics, both for demos and for still viewing.  I know nothing about code,
so don't ask.  I can probably tell you a bit about tracking, but you'd be
better off asking Necros or somebody.  I'm going to start this column with
the true basics, so anyone who has been doing graphics for awhile, disregard.

_____Graphics

Graphics are the pretty pictures that you see on your screen when you use
your computer for anything.  These graphics are made up of pixels, dots of
various colors lined up in any certain order.  When you create a work of art
with these pixels, you have made the exact thing that this column is
dedicated to.

_____Resolution

Resolution is how many pixels your monitor is displaying or can display on
the screen at any one time.  Anyone with a monitor can display some amount of
pixels.  (If you don't have a monitor, you can't read this, and you got
suckered at your local computer shop).  Anyway, most monitors can handle at
least VGA (displaying up to a maximum resolution of 640x480 pixels at a time,
horizontal by vertical).  Color depth is also a part of monitors, but we'll
mention that in the color section.

NOTE:  Your resolution and colors also depend on your graphics card, but
that's more technical than I feel like going into. ;)

_____Color

Color is (as I learned in Light Color and Design class), determined by three
factors: Hue, Saturation, and Intensity.  Hue is more or less what people are
asking about when they say "What color is this?"  Saturation is how true the
color is, or more specifically, how far away from grey the color is.
Intensity is how "bright" the color is.  For example, fire-engine red is high
in both intensity in saturation.  Blood red is high in saturation, but not as
high in intensity.  Pale pink is not terribly high in either, and so on...

Color depth is simply what and how many colors your monitor can display at
any one time.  At first monitors were monochrome, or single color. Then came
CGA, or 320x200 resolution with 4 colors.  EGA, 320x200x16 colors.  VGA,
640x480x16.  MCGA (which people usually call VGA) 640x480x256.  SVGA,
1024x768x256, and EVGA (Which people usually call SVGA) 1024+x768+x256+, up
to a possible 16.7 million colors.

_____Art

Ah.  Here we have the MAJOR debate in the graphics scene.  What is art?  Must
every pixel be hand drawn, or do rendering techniques qualify?  If you
believe the former, you probably won't agree with me on everything I have to
say. That's cool.  Email me.  I believe that an artist should be allowed to
use ANY tools available to him.  What one creates with an airbrush is no less
art than what one creates with a paintbrush, so why is Deluxepaint an art
program, but Photoshop not?

Sure, if all you're doing is creating a boring texture, and then putting a
plain white font over it that says "Demos Rock, Baby!", then you have a
problem.  I think it is the artist, however, more than the tools, that
defines "art".

This pretty much brings my first installment to an end.  I'm not going to go
into any tips and tricks this time around, or the column will be far too
long.  However, let me give you a brief synopsis of the next few articles:

  Articles Topic
  -------- -----------------------------------------
  2 - 4    Deluxepaint II Enhanced (an introduction)
  5 - 7    Adobe Photoshop (an introduction)
  8 - ?    Tips & Trix (will cover lots of software)

I'm certain there will be more.  After all, I discover new tricks on an
everyday basis.  Therefore I'll stop writing now and leave you anticipating
my next column (I hope).  If you have any tips/tricks/etc. for any art
programs, don't hold back sending them to me.  I can assure you that all tips
WILL be credited to their rightful discoverers.  Until next time, I remain:

Shaithis / WiCKED, Immortal Coil - [email protected]


=-------------------------------(Intro to 3D Graphics - Volume 05)--(Kiwidog)-=

_____Introduction

Many happy returns! :-)

I know I said I wasn't going to write any more of the 3D series until after
NAID, but I found that I had some time today to write this article before
then, so today we'll be discussing

The Joy of BSP Trees! :-D

Oh, and before I begin, for those of you who've been looking for the article
3&4 source code and haven't found it, you're not alone... I haven't had the
time to write up the source for all 3 compilers (WC, BC, and TP) and don't
think I'll have that much time until NAID.  The articles are quicker to write
than the source, and when I write the source, my primary language/compiler is
Watcom C.  I generally write the Turbo Pascal version last, and since I know
many of you are Pascal coders, the C version wouldn't do you much good.  So
unless somebody for some reason wants to offer to help convert the 32-bit
C/Asm into 16-bit TP/Asm, I'm gonna be a little slow on that source.  Sorry
about that; so much work these days...

But don't worry, just be patient, the stuff will be there eventually. :-)

Anyway, a couple quick notes from back in article 4...

_____Typos Etc. (Article 4)

In article 4, at one point in explaining a way to do the left-right scanline
filling, there was the following code block...

  mov edi, leftoffset
  mov ecx, rightoffset
  sub ecx, edi
  mov ebx, ecx
  shr ecx, 2
  mov eax, color  ; assuming color is already prepared to be in all 4 bytes.
  cld
  rep stosd
  mov ecx, ebx
  and ecx, 3
  rep stosd

The last line (the second "rep stosd") should be "rep stosb" instead. Sorry
about that; I meant to say stosb, but for some reason looking 3 lines above
that just influenced my typing.  All apologies, although I'm sure many of you
figured it out (and many thanks to the 3 or 4 of you who emailed me notifying
me of this error; I really appreciate it.  Please make me aware of any future
bugs like this; I know I won't catch many of them :)

Also, a couple of you have mailed me about the lack of efficiency in the edge
tracing algo I mentioned, mostly regarding the "check against the left and
right edges each line to see if they're new extremes" part.  Please remember
that in these articles, I'm covering very very general explanations of
routines; this is _intro_ to 3D here. :)  There are many faster of ways of
doing just about everything I put in here, so don't take the contents as the
final word, they're just methods.  And for you beginners, remember that
too... I'm not giving you the fastest routines around... you can always
optimize! :-)

(Hint - for the edge tracer, if you order your points in a certain way,
either clockwise or counterclockwise, and then check the locations of each
point before a trace, you can automatically determine which edge it will
trace over, and can quickly overwrite the values along that edge without any
comparisons...)

Oh BTW, for those interested in the fixed point square root routine I
mentioned last time, the article explaining that will be in the Coding Corner
of Imphobia 12, coming out sometime in the next month.  So keep an eye out
for that if you're interested.

Okay, enough preface junk, time for the meat of the article! :-D

_____What's a BSP Tree Anyway?

Okay, if you've played Doom extensively or even just read random articles on
3D, you probably have heard BSP trees mentioned off and on.  But what are
they, and how can you use them?  That's what we're gonna find out today.

BSP tree is short for "Binary Space Partitioning" tree.  What it is, is a
tree of line or polygon "nodes" (for 2D or 3D, respectively) that's
pregenerated before run-time for a given static object or set of objects.
Once you calculate this tree once for the object(s), you can use it in your
program each frame to draw the polygons in correct order _regardless_ of your
view position, just by "walking" the tree in a certain way.

I'll be covering both how to build a tree, and how to walk it during your
program.  The walking part is very easy to code, and is quite a fast way of
drawing surfaces in the right order.  The tree generation part is not so
easy, though, for several reasons which I'll get to shortly.

Nonetheless, BSP trees are well worth the trouble if your scenes are pretty
static... they are quite quick and very effective. :)

_____What do you mean by "static" anyway?

By "static" object I mean an object (or set of objects) that doesn't move
with respect to itself.  Like, take a standard cube.  The cube is a static
object... you can move the whole cube around the environment, translate it,
rotate it, etc.  But regardless of where it is, it's still a cube.  But if
you take a few of the vertices of the cube and move them around, the parts of
the cube (i.e. the 6 faces) are no longer the same... hence, if you have an
object and the object is always that object, it's static.  But if you morph
the object or explode it or something, it's not.  Scaling is okay, as long as
all the vertices are scaled the same (it's still a cube, only a different
size).  It's when the _shape_ changes that causes problems.  You'll see why.

(Note: There are some cases where you can change face positions in an object
and still have the tree be valid, you just have to be very careful how your
tree is constructed if you wish to try something like this).

Well, now that we know our limitations, let's build a tree! :-)

_____So How Do We Build These Trees?

The term "Binary Space Partitioning" is exactly what it seems to be.  BSP
trees, in essence, "cut" space into two equal halves, over and over again,
until effectively nothing is left to work with.  The space is cut along the
polygons of your object (although some prefer to cut with axis-aligned planes
instead, which is a bit faster but has flaws of its own).  The best way to
demonstrate this is to walk through a sample tree building of a small scene.

We'll work in 2D for this little sample, but the principle carries over into
3D the same way.  Let's say we have a static scene (when I say scene I mean
one big object, effectively... or in Doom's case, the level map) that we want
to build a tree for.  Our scene is composed of 5 lines, arranged in a
somewhat random order...

     /
    /          ------
   /

           |
   -----   |     \
           |      \
                   \

(Note: I hope that formatting errors don't happen this time, because if those
lines aren't in the right places, this will make _no_ sense. :-)

Anyway, let's label each of these lines (which we'll pretend are top views of
3D polygons, like walls)...

     /
    /A         ------
   /              B

     E���  |
   -----  D|     \
           |      \C
                   \

We also need to give each line a "positive" side, and a "negative" side. For
this, pretend that the positive side of each line is the side where the
letter is on.

Now, like the name suggests, we need to cut space in half along some line (or
axis aligned plane, but I'm not going to get into that method). In essence we
can just pick a line at random, but as you'll see soon, that's not a good
idea completely...

Say we pick line C.  It's facing diagonally, with the upper right on its
positive side and the lower left on its negative side.  Now what we do is, we
extend this line segment to its full line length, cutting space in half.

     /      \
    /A       \ ------
   /          \   B
               \
     E���  |    \
   -----  D|     \
           |      \C
                   \
                    \
                     \
                      \

Looking at the result, we've got A, E, and D on the negative side, and B on
the positive side.  This was the first step in our tree generation. Let's
start our tree with the "home" node (the first one we picked)...

         -     +

            C
           / \

A BSP tree itself is set up with nodes that have one parent (node above it)
and between 0 and 2 children (up to one positive and one negative).  We chose
line C as our first "node" to split with, so we put it at the top. The - and
+ symbols above are to let you know which side is negative and which is
positive.

Now, let's continue with the tree.  On the positive side, we only have B, so
let's just slap that into the tree (since it's our only pick)...

         -     +

            C
           / \
              B
             / \
             x x

The "x"s mean that there are no more nodes left in that "space", and the tree
stops.  You don't use lines that were already used or lines on the opposite
side of space... remember, we're splitting space, so when looking at the
positive side of C, it's as if the negative side doesn't even exist. All that
we have is B.  And then when B splits space again (only splitting the
positive side of C, no lines are on either side, so it's done.

So now we just have to contend with the negative side of C, where A,E, and D
are hanging out.  We have three possible choices, so let's just pick A for
the heck of it. :)

      /      \
     /A       \-------------
    /          \   B
   /������      \
  /   E���  |    \
    -----  D|     \
            |      \C
                    \
                     \

Well A has nothing on its negative side, and E and D on its positive side. So
let's update the tree...

         -     +

            C
           / \
          A   B
         / \ / \
         x | x x
           |
           |

(Note: The long line at the bottom is just to make room, but it's from the
positive side of A).

Now we have D and E left.  We can pick either of them.  But let's see what
happens when we pick E....

      /      \
     /A       \-------------
    /          \   B
   /������      \
  /   E��� D|    \
  ----------X     \
            |      \C
                    \
                     \

We've just cut D in half!  That's not good.  In a BSP tree, there's only
positive and negative, not both.  When splits are encountered, there are two
options.  One is to calculate the split point, and split D into two lines, D+
and D-.  In which case, our final tree would look like this...

         -     +

            C
           / \
          A   B
         / \ / \
         x | x x
           |
           |
           E
          / \
         D-  D+

That works, but the problem there is that 1) we have to calculate the split,
and 2) we've just added another line (or wall) to render.  The calculation
part is not that big a deal.  The bad thing is, when you think about a large
scene, splits can add tons upon tons of polys to the drawing pipeline. That's
a devastating thing that we must try to avoid.

Generally it's impossible to avoid splits completely; they are going to
happen, so you better make code to handle it when it does.  But the fewer the
better.  And because of this, we have a second option to avoid splits...

Pick a different node.

Even by just choosing D instead of E in our last step,

      /     |\
     /A     | \-------------
    /       |  \   B
   /������  |   \
  /   E���  |    \
    -----  D|     \
            |      \C
            |       \
            |�����   \

         -     +

            C
           / \
          A   B
         / \ / \
         x | x x
           |
           |
           D
          / \
          x E

... we've just eliminated the split.  This is the kind of thing you want to
do when building your trees.  Unfortunately, when the scenes are large, you
don't have the time to build your trees manually, and a program to do it for
you won't have the luxury of knowing the best way to avoid splits without
trying every single possible tree combination (called the "brute force"
method), and that takes an eternity.  As if to add another problem to the
mix, Split Avoidance is not the only goal of a good BSP tree... we also want
a tree that's as balanced as possible.  Take a look at the above tree; it's
got no splits, but it's pretty unbalanced.  But take a look at another
possible tree of the same scene...

         -     +

            D
           / \
          C   A
         / \ / \
         x B x E
          / \ / \
          x x x x

It's got no splits either, and look how much more balanced it is... we only
go down three levels deep instead of four.  Why is being balanced also
important?  Because when we walk the tree, A) the fewer chain links to
process the faster it is, and B) on occasion we can eliminate whole branches
from the pipeline, and the more nodes on the branch being eliminated, the
better.

So which is more important, Split Avoidance or Balancing?  It turns out the
two are generally mutually exclusive goals; the quest for the perfect tree is
always continuing.  For most objects/scenes, the splitless trees aren't as
balanced as possible, and the most balanced trees have splits.  Which is
better?  In truth it depends on the application.

We're using the trees for realtime 3D hidden surface elimination, in which
case both are important, but splitlessness is a slightly higher priority. Not
that you'll always have a splitless tree though; there are some scenes that
cannot possibly be done without at least one split.  But the lower the
better.  So you want trees that have as few splits as possible, and are as
balanced as possible, if possible.

And you have to make a program that knows this. Sound like fun?

I didn't think so. :-)

Generally, the common method is what I've heard called the "sample outlook"
method.  What you do is, at each step in the tree generation you pick a
sample of your nodes (say 10-20%), and pick the one which results in either
A) the best possible next layer (quick version), or B) the best possible tree
altogether (long version).  When I say quick and long, I don't mean so much
about how long they take to code, but how long the program runs. The less
analysis involved, the quicker the generation is (but the less likely that
the tree will be as good as you can get it).  It's a tradeoff, and in my
opinion, a really good tree is worth the time it takes to go get more coffee,
so make your program very critical.

Also, in case you hadn't already guessed, the tree generation is a recursive
function, yes.  You generate your node and pick two children, then for each
child, the function calls itself on the child, and the process continues
until the tree is over (no children to process).

The problem is here that picking 10-20% of your possible nodes makes the
results rather random, and doesn't guarantee a thing.  But, for the most part
it's one of the only ways out there to build a tree...

For the most part. ;)

_____There Is An Alternative

For those interested, I have made an alternative algorithm for tree
generation.  You should be quite familiar with standard methods of building
first though, in order to understand the algo.

The cons are:
  A) Rather complicated to understand
  B) Harder to code
  C) VERY long building time (not nearly as long as brute force though)
  D) Sucks up memory (or disk space) like a hog.

The pros though are:
  A) If there is a splitless tree it will most likely find it,
     even with thousands of nodes
  B) If there are multiple splitless trees, it will go for the
     more balanced ones.

It can also be modified to prefer balancing, for example, depending on what
you're looking for.  As I said, this is a pretty complex (and weird)
algorithm, and I can't explain it in here.  But if you're familiar with
standard recursive sampling methods, you might find it interesting.

(Incentive to go to NAID) I will most likely be holding a couple coding
seminars up at NAID, one for beginners, and one more open forum for
experienced guys.  In the open forum I'll be explaining this alternative BSP
tree method to anyone who asks.  And no, it's not BS; it's been verified by
multiple people already as being quite effective.  So if you want to know
how, and you can make it to NAID, here's another reason to. :-)

Okay, enough stupid plugging of my stuff...  Time to actually put these trees
to use! :-)

_____Alright, I've Got A Tree.  What Do I Do With It?

If we've got our tree, using it for polygon displaying is a pretty simple
matter.  Basically, if we think about it, this tree holds a system of what
polygons are on what sides of each other.  So by traversing the tree during
display, we can get the polygons to show up in correct back-to-front order
(you can also walk the tree front-to-back if you like, if you have a system
that would use it).

So how do we traverse the tree?  Like this...

Take our tree (the balanced one, the one we liked more)...

         -     +

            D
           / \
          C   A
         / \ / \
         x B x E
          / \ / \
          x x x x

Now lets say, in the Doom analogy, that we have a player at the X in the
scene...

     /
    /A         ------
   /              B

     E���  |
   -----  D|     \
           |      \C
    X              \

By checking which side of the polygon our viewer is on at each node, we
determine which branch of the tree to take first, and as we return to the
node before taking the second branch, we draw the polygon.  Let's start at
the top, at node D.  Looking at X, it's on the positive side of D. We don't
walk the positive side of the tree though, we walk the OPPOSITE side, the
negative one (since it's in the opposite space, generally meaning further
away).  Now we're at node C.  We're on the negative side of C, so we walk the
positive side, to B.

But looking at B, it's go no nodes below it.  So as if we followed one of
them, we come right back to it, and draw it...

  B

And we return back up to C.  We've just come back to it from the first
branch, so we draw it next.

  B C

And then we would follow the negative side of C, but there's nothing there,
so we return back up to D.

Now that we're back to D, after walking the first branch, we draw it as well

  B C D

And drop down to A.  We're on the positive side of A, so we walk the negative
branch.  And since nothing is there, we return back to A, and draw it.

  B C D A

And follow the same-side branch, down to E.  E has no child nodes, so we draw
it, and notice that we're done, since all five nodes (walls) have been drawn
(or queued to draw, depending on how you do your system; it's the same
principle)...

  B C D A E

Now look at that order from X's viewpoint.  If you draw the walls in that
order, they'll be in the correct order from that viewpoint! :-)  By doing
this "which side am I on" checking, you will get a drawing order that works
perfectly from any position, all the time.

The same thing holds over to 3D, by checking your position against the plane
of each polygon.  If you're on the positive side of the plane, go one way, if
you're on the negative side, go the other.  Same thing, but with lines
instead of planes, and it works every time.

Now earlier I mentioned that a balanced tree was not only important for speed
of recursion, but also because it could eliminate unwanted branches. To
demonstrate this, pretend that the X character was facing to the upper left
corner, where it could see part of E and part of A, but none of D or any of
the others.  Well if we think about it, if we're on the positive side of D,
and none of D's negative space is visible (and I mean that, none of D's
negative space... D could be invisible while same of its space is, so it's
the entire space)... then all the nodes in its negative space (in this case,
C and B) can be discarded right off the bat.  No need to process them or
anything, since there's no way you could see them.  This is very very handy,
and the more balanced the tree, the more you can discard when this kind of
situation occurs.

One final section before I go... throughout this doc you can see how
everything is based on what side one thing is on from another.  But how do
you find this out?

_____Line and Plane Equations Via Normals

In order to find out what side a point is on from a line or plane, all you
have to do is pump the coordinates of the point into the line or plane
equation, respectively (and checking a line or plane against another line or
plane is done just by checking both points of the line, or all the vertices
of the plane, so in the end it comes down to points).

But how do we know the equation of the line or plane to test against? Here's
where our wonderful normals and dot products come in again. :-)

If you're pre-storing your normals, then by just pre-storing one more value
you can have the entire equation of a line or plane right at your fingertips.
For any line with the equation

Ax + By + C = 0

it turns out that A and B are the components of the normal of the line, and
-C is a constant, equal to (Normal.P1), where . is the dot product function,
and P1 is the first point of your line segment, the one where the normal was
determined from.  Once you have this equation (which is pre-stored as just
the normal and that constant, -C), you plug in the coordinates of the point
to check against into x and y.  The result will give you 0 if the point is on
the line, but it will also be positive if the point is on the positive side,
and negative if the point is on the negative side.  The value itself doesn't
matter, it's just the sign that counts.  Let's do an example.  Say we have a
line from (0,0) to (1,1). If our positive side is to the lower right, then
our normal from P1 goes from (0,0) to (1,-1).  And

  Normal.P1 = (Nx*P1x + Ny*P1y) = 1*0 + (-1*0) = 0.

Sure enough, the equation for the line is

  Ax + By + C = 0  ->  1x + (-1)y + -(0) = 0   ->   x - y = 0

Take any point on that line, and the result is 0, like in the equation.
But take a point on the positive side, like (4,2) and you get

  x - y = 0   ->   4 - 2 = 2

... and the result is positive.  Similarly, a negative-side point will give a
negative side result.  So just plug in the numbers of the point to check,
look at the sign of the result, and boom, off ya go. :-)

The same thing holds for plane equations in 3D, where

  Ax + By + Cz + D = 0

Sure enough, A, B, and C are Nx, Ny, and Nz, the components of the normal to
the plane.  And -D is (N.V1) where N is the normal and V1 is vertex 1, i.e.
the vertex where your normal was based from (the center point of the two
vectors in the cross product... remember the cross product? :-)  By plugging
in numbers, you check what side the point is on during BSP tree walking with
just three multiplies for a 3D plane...

  (Nx*x) + (Ny*y) + (Nz*z) - (N.V1) = Result

where N.V1 is precalculated and Result holds the sign value giving the side
that (x,y,z) is on.  Sound simple?  That's all there is to it. :)  You use
the same thing in tree generation to determine sidedness, by checking each
point.  If all the points are on one side or the other, you know the side of
the whole line or plane.  If not, then a split has occurred. Be warned
though, if you use floating point, that you'll want to make room for a bit of
rounding error.  A result of 0.00002 doesn't necessarily mean that the point
is on the positive side; it could be rounding error, and sometimes you can
use this as an excuse to fudge (especially if all but one of the points is on
one side, and the one that isn't is only off by a tiny margin).

(PS: Nifty trivia... take a look at the BSP tree of any sphere (including
cubes, which are six sided spheres)... you'll notice the tree is not exactly
balanced, is it? :-)

_____That's About It!

If you have any questions, feel free to email me.  Although I might be a
little delayed in replying, I respond to pretty much everyone. :)  Also, look
for the supplement source to this volume and volumes 3 and 4 sometime shortly
after NAID (May 31-June 2).  And speaking of NAID, if you can make it, make
it!  It's gonna be a great time, I guarantee it. :-D

Until next time (or NAID),

Kiwidog / Hornet , Terraformer - [email protected]


=----------------------------------(NAID: As if You Were Here)--(White Noise)-=

Never done before.  New.  Kewl.  See it.  Hear it.

Be there, even if you can't attend.  "NAID 96: as if you were here", the NAID
live web site.

http://naid.conceptech.qc.ca is the URL to remember.  Until the 31st, stop by
the ad page, at http://flash.intersignal.net/naid.

Can _you_ afford to miss it?

See you there.

White Noise / Dusk Till Dawn - [email protected]


=--------------------------------------------(Imphobia 12 Voting)--(Darkness)-=

Hi there Demonews readers.

Here is just a little note to tell you all that the deadline for the Imphobia
charts voting is near.  So, if you haven't done it yet, you should all
consider filling out an Imphobia voting form and send it to me to my email
address.  If you haven't got a form yet, you can leech it from Hornet
/incoming/news directory under the name imp12vot.zip.

You got the right to vote, use it!

Darkness / Imphobia - [email protected]


=-----------------------------------(FunktrackerGOLD for Linux)--(Jason Nunn)-=

FunktrackerGOLD Beta version 0.0 for Linux/Unix now available!  Experience
the power and beauty of tracking and unix combined.

ftp://ftp.cdrom.com/pub/demos/incoming/music/programs/fnkgld00.tgz
ftp://sunsite.unc.edu/pub/Linux/Incoming

For more information, email me or check out:
  http://darwin.topend.com.au/~jsno/projects.html

Jason Nunn - [email protected]


==[Subscribing]================================================================

_____How to subscribe to DemoNews

Mail to : [email protected]
Body    : subscribe demuan-list [first_name] [last_name]

The listserver will send DemoNews to your e-mail's return address.

_____How to subscribe to Music Contest 4 Updates

Mail to : [email protected]
Body    : subscribe mc4-updates [first_name] [last_name]

_____Back Issues

Older issues of DemoNews can be located under /demos/hornet/demonews
Newly released issues of DemoNews are posted to /demos/incoming/news


==[Closing]====================================================================

For questions and comments, you can contact us at [email protected]
Your mail will be forwarded to the appropriate individual.


..........................................................End.of.DemoNews.123.