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    naid@autoroute.net
                                      www.autoroute.net/~naid
                                      naid.conceptech.qc.ca
 02 Jun 96 The Scene        Singapore ckiang@singnet.com.sg
                                      www.singnet.com.sg/~ckiang/tsc96.html
 07 Jun 96 Abduction        Finland   maurala@cc.hut.fi
                                      www.hut.fi/~maurala/abduction.html
 19 Jul 96 Flag             Hungary   tomcat2@ursus.bke.hu
 28 Jul 96 Summer Encounter Denmark   rvc@vision.auc.dk
                                      www.vision.auc.dk/diffusion/SE96
 04 Aug 96 Summit           Israel    high.dive@kinneret.com


==[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 - r3cgm@cdrom.com


=---------------------------------------------(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 - naid@autoroute.net, 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 - shaithis@dreamscape.com


=-------------------------------(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 - kd@ftp.cdrom.com


=----------------------------------(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 - jeff@ego.psych.mcgill.ca


=--------------------------------------------(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 - jeff.van.audenhove@infoboard.be


=-----------------------------------(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 - jsno@darwin.topend.com.au


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

 _____How to subscribe to DemoNews

 Mail to : listserver@unseen.aztec.co.za
 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 : listserver@unseen.aztec.co.za
 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 r3cgm@cdrom.com
 Your mail will be forwarded to the appropriate individual.


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

