💾 Archived View for gemini.spam.works › mirrors › textfiles › magazines › DEMONEWS › demonews.116 captured on 2022-06-12 at 11:28:23.

View Raw

More Information

-=-=-=-=-=-=-

.Start.of.DemoNews.116..............................................Size:55,139

 ______/\___________________________       __  ________________ ___  /\_______
 \____   \  ________ _   _ ______   \     /  \|  \  ________   |   \/  ______/
 /   |    \  _)   \   \_/   \   |    \   /    \   \  _)   \    |    \______  \
/    |     \       \   |     \  |     \ /          \       \  /~\    \    /   \
\_____     /_______/___|     /________/ \____\_____/_______/_________/________/
    \_____/            |____/
                                                      | Subscribers  :  1935
       DemoNews Issue #116 - February 20, 1996        |   Last Week  :  1903
                    -------------                     |   Change     :   +32
     DemoNews is a newsletter for the demo scene.     | Archive Size : 2097M
 It is produced by Hornet at the site ftp.cdrom.com.  |   Last Week  : 2064M
    Our demo archive is located under /pub/demos.     |   Remaining  :  836M
                                                      |
=-[Contents]=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

   Line    Section
 ------    -------------------------------------------------------------------
     31    Calendar
     49    Top Downloads
     72    Uploads
    388    Articles
    390      Introduction................................Snowman
    444      Intro to 3D Graphics - Volume 02............Kiwidog
    803      VGA Hardware Tricks, Part 4/6...............Trixter
   1006    Subscribing
   1021    Closing


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

 Date      Event               Location  Concact Points
 --------- ------------------- --------- -------------------------------------
 23 Feb 96 Pre-Awakening       U.S.A.    cramerc@elwha.evergreen.edu
 29 Mar 96 Mekka               Germany   PV80090@PH80090.HH.eunet.de
                                         www.xs4all.nl/~blahh/RAW/Parties
                                           /Invitations/Mekka.html
 02 Apr 96 The Gathering       Norway    mikaels@powertech.no
                                         www.ifi.uio.no/~uwek/Crusaders/TG
 06 Apr 96 X                   Netherlnd cba@xs4all.nl
                                         www.xs4all.nl/~herkel
 31 May 96 Naid                Canada    naid@autoroute.net
                                         www.autoroute.net/~naid

 More information is at http://hagar.arts.kuleuven.ac.be/~sdog/party.html


=-[Top Downloads]-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

 NOTE: Statistics are sometimes slightly off due to symbolic links, mirrors,
 renamed files, and other things which affect the log files.

 Pc Times FileName.Ext      Pc Times FileName.Ext       Pc Times FileName.Ext
 -- ----- --------.---      -- ----- --------.---       -- ----- --------.---
 <COMBINED LIST>            <DEMOS LIST>                <GRAPHICS LIST>
  1 00452    ft205.zip       1 00179  animate.zip        1 00031   airwar.zip
  2 00217 ice9601a.zip       2 00174 nooon_st.zip        2 00030  scarlet.zip
  3 00193     cp16.zip       3 00163 ftj_ymca.zip        3 00028 veced300.zip
  4 00182    ft204.zip       4 00135  cmapaim.zip        4 00028 dst_frac.zip
  5 00179 ice9601b.zip       5 00129 cmapaifx.zip        5 00025  bedtime.zip
  6 00179  animate.zip      <MUSIC LIST>                <CODE LIST>
  7 00174 nooon_st.zip       1 00452    ft205.zip        1 00088 dn114_3d.zip
  8 00163 ftj_ymca.zip       2 00192     cp16.zip        2 00073   kmagv2.zip
  9 00149 scrmt321.zip       3 00182    ft204.zip        3 00068  alabv12.zip
 10 00144 acdu0196.zip       4 00149 scrmt321.zip        4 00058    water.zip
                                                         5 00053 dos32v33.zip

 <Files downloaded total : 051933>


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

=----------------------------------------------------------[File Information]-=

 All files listed below are on ftp.cdrom.com under /pub/demos.
 Please keep in mind that all ratings are subjective.

 If your file transfers are too slow, there are several alternatives:

   Our code mirror is ftp.co.iup.edu/code.  ftpadmin@ftp.co.iup.edu for help.
   Try getting files from the web at http://www.cdrom.com/pub/demos
   See /hornet/demonews/demonews.102 for details about ftpmail.

 You may also wish to check out a couple of other good demo sites:

   ftp://ftp.arosnet.se/e:\demo maintained by Zodiak / Cascada
   ftp://hagar.arts.kuleuven.ac.be/demos maintained by Sleeping Dog / Natives

 Here are also a few good WWW links to try out (under construction):

   http://www.th-zwickau.de/~maz/sound.html for music and sound utils

=-------------------------------------------------------------[Demos:General]-=
Location /demos/alpha             Size Rated Description
=-------------------------------- ---- ----- ---------------------------------=
/1994/t/thefirst.zip               283 ***   The First by Strontium 90
/1995/f/fdg_ind.zip                352 ***   Indaba by Fudge
/1996/0-9/1frame.zip                 7 ****  1 Frame by Dlux
/1996/f/frosty.arj                  20 **    Frosty by Sir Hes
/1996/n/nn.arj                     243 *+    NoNameIntro by Sir Hes

General Probe 1996 4k Intros (GP96:in4k:)
/1996/a/ame_pain.zip                 5 ****  01: Pain by Amnesty

Juhla 1996 Demos (JUH96A:demo:)
/1996/o/onenight.zip               261 **    EE: One-Night Stand by QP

Juhla 1996 64k Intros (JUH96A:in64:)
/1996/e/emf_porn.zip                61 ***+  15: Porno by EMF

=-------------------------------------------------------------[Music:General]-=
Location /demos/music             Size Rated Description
=-------------------------------- ---- ----- ---------------------------------=
/disks/1995/x/xmas95.zip          1793 **+   Xmas 95 by Epinicion
/songs/1994/mod/f/fantasy.zip      199 **+   Fantasy World by ??
/songs/1994/mod/m/minion.zip       137 **    Minions of Power by ?
/songs/1995/s3m/2/2t2-sadw.zip     289 ***+  A Sad World We Live In by B00mer
/songs/1995/s3m/a/arn_bara.zip      92 *+    Maior Abandonado by nS
/songs/1995/s3m/a/arn_fine.zip     114 **+   I Feel Fine by nS and Minesota
/songs/1995/s3m/a/arn_free.zip     254 ***   Free as a Bird cover by Minesota
/songs/1995/s3m/a/arn_iron.zip     182 *+    Iron Man cover by Minesota
/songs/1995/s3m/a/arn_mk2t.zip     340 *     MK 2 Techno by CJ Cyberjobe
/songs/1995/s3m/a/arn_sdm.zip      214 *+    Short Dick Man by HBM
/songs/1995/s3m/a/arn_strt.zip     245 *+    Funky Street Walk by CJ Cyberjobe
/songs/1995/s3m/a/arn_tnk.zip      108 **    Thinking About You by HBM
/songs/1995/s3m/a/ascen.zip        264 ***   Ascension by Master of Darkness
/songs/1995/s3m/e/ele-plan.zip     237 ***   Planet on Acid by Elemental
/songs/1995/s3m/f/flp-bd.zip       206 **    Bioptic Dichotomy by Asken
/songs/1995/s3m/f/flp-wnds.zip     174 ***   Windstorm by Mondo
/songs/1995/s3m/h/highden2.zip      72 *+    High Density by Warp
/songs/1995/s3m/j/js-cattl.zip     153 *     Wonder Cattle by Speig
/songs/1995/s3m/k/kon-no.zip       111 **+   Accept no Subs. by Flacco + Waarp
/songs/1995/s3m/v/v8r-ap.zip       210 ***   Acid Phreak by viol8r
/songs/1995/s3m/w/wait4u.zip         3 ***   Waiting for You by falcon
/songs/1995/s3m/w/wings.zip         64 **    Wings by Warp
/songs/1995/s3m/w/wings3.zip       101 **    Wings 3 by Warp
/songs/1995/s3m/x/xmass.zip        329 +     X-mass jam by BigpiE
/songs/1995/s3m/y/ybbanjo.zip      156 ***+  Banjo jammin by Yannis
/songs/1995/s3m/y/ybblub.zip        50 **+   Blubbiest Places by Yannis
/songs/1995/s3m/y/ybecho.zip       176 ***+  Echomation by Yannis
/songs/1995/s3m/y/ybmirac.zip       47 **+   Little Miracle by Yannis
/songs/1995/s3m/y/ybtones.zip       67 ***+  Harmonic Tones by Yannis
/songs/1995/s3m/z/znc-80kh.zip      72 **    Around the World in 80 by zinc
/songs/1995/xm/f/faraway.zip        54 **    Faraway Trek by Joshua Szmajda
/songs/1995/xm/f/flp-glid.zip      135 **+   Sunset Glider by Wolfgang Krauser
/songs/1995/xm/f/flp-jour.zip      160 ***   Journey to Sky Tower by Archon
/songs/1995/xm/f/flp-slow.zip      274 ***   Slow Love by Gillespie
/songs/1995/xm/g/grv_jour.zip      181 ***   N R Livet Leker by Zalt
/songs/1995/xm/x/xmlookup.zip     4636 **    Lookup by Omega
/songs/1995/xm/x/xtd_040.zip       311 ***+  Guiding Light by Virtual Rhythm
/songs/1995/xm/x/xtd_045.zip       879 *+    Fallin Apart by Assex
/songs/1995/xm/x/xtd_046.zip       400 ****  Allegorie by Virtual Rhythm
/songs/1995/xm/x/xtune.zip         111 *+    Xtunes by Darius
/songs/1995/xm/z/zan-extr.zip      111 **    Extreme Overload by zanti
/songs/1996/mod/g/grv_fun.zip      194 **+   Funkadelic's Jam by Omen
/songs/1996/mod/h/hnz-bear.zip     140 ***   Bear by Hunz
/songs/1996/mod/h/hnz-evnt.zip      76 **+   Events by Hunz
/songs/1996/mod/h/hnz-fary.zip      56 **    FairyFloss by Hunz
/songs/1996/mod/h/hnz-free.zip      75 ***+  Freestyle by Hunz
/songs/1996/mod/h/hnz-grow.zip     112 ***+  Growing to fast? by Hunz
/songs/1996/mod/h/hnz-mile.zip      82 ***   24,000 miles by Hunz & Hollywood
/songs/1996/mod/h/hnz-sfrn.zip     138 **    Sufferings by Hunz
/songs/1996/mod/h/hnz-tech.zip      96 **+   Techno Horses by Hunz
/songs/1996/mod/h/hnz-time.zip     123 ***   Time Has Gone by Hunz
/songs/1996/mod/h/hnz-tran.zip     117 ***+  Transfer by Hunz
/songs/1996/mod/i/inspired.zip      83 ***   Inspired by Strix
/songs/1996/mod/k/k_sting.zip      255 ***+  Stingray by Hollywood
/songs/1996/mod/l/luminous.zip     167 **    Luminous Future by Smash
/songs/1996/mod/l/lw_venus.zip      97 **+   Venus Power by Michiru
/songs/1996/mod/t/t_krdogg.zip     133 **    Kraq Dogg by David Weekly
/songs/1996/mod/y/ybstrsrf.zip     174 ****  Street surfin by Yannis
/songs/1996/mtm/k/k_lodge.zip      391 ***+  Lodge of 3 Globes by Maelcum
/songs/1996/mtm/k/k_opp.zip         87 ***   Opposition by TheHacker
/songs/1996/other/k/kx-synd.zip    435 *+    Syndicate of Death by Kxmode
/songs/1996/other/m/mt-ww0.zip     217 **+   Wantonly Waiting by Mindtrip
/songs/1996/other/n/no-secon.zip   107 ***   Second Sight by Delta X
/songs/1996/s3m/a/a_ap.zip         145 ***+  Atomic Plague by Matt Friedly
/songs/1996/s3m/a/am_tpe.zip       129 **    Psychedelic Experience by Amorphis
/songs/1996/s3m/a/arn_geek.zip      95 **+   Geek Stink Breath by Minesota
/songs/1996/s3m/a/athought.zip     167 ****  Another Night of Thought by ZaStaR
/songs/1996/s3m/b/brokenw.zip       84 ****  Broken Wings by Warp
/songs/1996/s3m/f/foo.zip          915 **    I'll Stick Around by Stein
/songs/1996/s3m/g/g_abort.zip       82 *     Abortions Suck by Huggy Bear
/songs/1996/s3m/h/hd-chnce.zip      88 ***   No More Chances by Crus
/songs/1996/s3m/i/iha-acid.zip      79 **+   Acidic Perspiration by Iha
/songs/1996/s3m/j/jbmutate.zip     311 **+   Mutational Pathogen. by Schizoid
/songs/1996/s3m/j/jezebel.zip      978 +     Juke Joint Jezebel by Stein
/songs/1996/s3m/j/judgmnt.zip      271 **+   Judgement by mJan
/songs/1996/s3m/k/k_ballad.zip     380 ****  The Last Ballad by Siren
/songs/1996/s3m/k/k_lproof.zip     194 *+    Living Proof by GooRoo
/songs/1996/s3m/k/k_softy.zip      204 +     Softy by Karl
/songs/1996/s3m/l/life.zip          46 **    Life is Life by ReCoder
/songs/1996/s3m/n/nin_ruin.zip     727 ***+  Ruiner (remix) by Bedlamite
/songs/1996/s3m/p/plasma.arj       202 **+   Plasma by Petador
/songs/1996/s3m/p/pr-calln.zip     186 ***   The Calling by Darkwolf
/songs/1996/s3m/p/pr-stand.zip     281 ***+  Standing Close by Darkwolf
/songs/1996/s3m/v/v-inner.zip      145 ***+  Inner Turmoil by Vegas
/songs/1996/s3m/w/wr-ccity.zip      59 ***   Century City by wraith
/songs/1996/s3m/w/wr-utopi.zip     186 ***   Utopia by wraith
/songs/1996/s3m/y/ybfurble.zip       9 ****  Invasion of Furbles by Yannis
/songs/1996/s3m/y/ybtiny.zip         6 ***   Tinypino by Yannis
/songs/1996/s3m/y/yee-had.zip      139 **+   Yeeeeeeeehawwwwwwww! by Hadji
/songs/1996/s3m/y/yyz.zip          391 ***   Yyz by Ler
/songs/1996/s3m/z/zn-happy.zip     195 ***+  Happy Daze by zinc
/songs/1996/s3m/z/zn-jazzt.zip      90 **+   Jazzting by zinc
/songs/1996/xm/e/el-defin.zip      100 ***   Defining by Electric Lucidity
/songs/1996/xm/e/eternity.zip      573 ***+  Eternity by Khyron
/songs/1996/xm/f/fh-fperf.zip      114 **    Fake Perfection by FH
/songs/1996/xm/f/fh-sf96.zip       117 **    Strange Feelings 96 by FH
/songs/1996/xm/f/flp-gl01.zip      144 **+   Fallen from Grace by Gillespie
/songs/1996/xm/f/fm-snoop.zip      292 ***+  Raping the Dog by Mellow-D
/songs/1996/xm/f/fr-loye.zip       256 ***+  Love Opens Your Eyes by Nabo & Teo
/songs/1996/xm/g/gl-dist.lzh       385 ***+  Distance by Glitch
/songs/1996/xm/g/gl-lapse.lzh      226 **    Lapse by Glitch
/songs/1996/xm/g/grv_wate.zip      110 ***+  Waterfall by Balrog
/songs/1996/xm/h/hyperion.zip      515 **+   Hyperion by Outrage & Orc
/songs/1996/xm/j/j-kgdsky.zip      282 ****+ Kingdom Skies by Jase
/songs/1996/xm/k/k_mhouse.zip      581 ***   My House by Vivid
/songs/1996/xm/l/lok_deep.zip      241 *+    Deep Inside by Ganja Man
/songs/1996/xm/l/lok_spkl.zip      155 *+    Speed Kills by Ganja Man
/songs/1996/xm/m/maz-last.zip      284 ****  Fifteen by Dynamic Harmony
/songs/1996/xm/m/moonscpe.arj      613 ***   Moonscape by Petador
/songs/1996/xm/m/mr_clytn.zip      309 ****+ Claytons by Mick Rippon
/songs/1996/xm/o/ophelia2.zip      350 ***+  Ophelia 2 by Xerxes
/songs/1996/xm/p/ploff-01.zip      374 ***   It Makes me Happy by Ploffer
/songs/1996/xm/z/zan-reli.zip      185 ***   Relieved by zanti

The Party 1995 4-Channel Music (TP95:m4ch:)
/songs/1995/mod/f/fountain.zip     454 ****+ 01: Fountain of Sighs by Unreal
/songs/1995/mod/c/compact.zip      142 ****  03: Compact Caviar by Mystical
/songs/1995/mod/k/kissmyas.zip     244 ****  05: Kissmyass by Jazz,Haujobb
/songs/1995/mod/j/jazzin.zip       297 ****  09: Jazzin by FBY
/songs/1995/mod/c/chico_d.zip      318 ***+  11: Chico de Loros by Gandbox
/songs/1995/mod/w/what_gui.zip     557 ***+  13: What Guitar by Mindfuck
/songs/1995/mod/t/trancepl.zip     579 ***   14: Trans Playground by Prophet
/songs/1995/mod/p/post_ouv.zip     275 ***+  15: Post Ouverture by Trip
/songs/1995/mod/p/play_kid.zip     482 ****  16: Play Kid by Unison
/songs/1995/mod/d/december.zip     164 ***+  17: December by Pinocchio,Contraz
/songs/1995/mod/s/sleeping.zip     119 ****  19: Energy by Laz
/songs/1995/mod/p/party_su.zip     147 ****  20: Party Sux by Dreamer
/songs/1995/mod/s/separate.zip     133 ***+  21: Seperate Ways by Clawz
/songs/1995/mod/m/magic_jo.zip     243 ***+  22: Magic Journey by Fash
/songs/1995/mod/s/spritzst.zip     215 ***   23: Spritzstunden by Slide G.
/songs/1995/mod/w/world_of.zip     278 ***+  26: World Insanity by Lizardking
/songs/1995/mod/b/blacksil.zip     116 *+    XX: Black Silver by ???
/songs/1995/mod/b/bnmainia.zip     100 **    XX: Bn Mainia by Maf + Eagle
/songs/1995/mod/b/bornin57.zip     108 ***   XX: Born in 1957 by Dave
/songs/1995/mod/c/campaign.zip     218 **+   XX: Virulent Campaign by Sonic
/songs/1995/mod/c/can_pas.zip      162 ***   XX: Canned Passion by Dep
/songs/1995/mod/c/caphlame.zip     211 *+    XX: Caph and Lamed by Prick
/songs/1995/mod/c/cascade.zip      240 **    XX: Cascade Fsol by The Fox II
/songs/1995/mod/c/chaseit.zip      162 ***   XX: Chaseit by Vincent
/songs/1995/mod/c/china.zip        229 **    XX: China by Al Bundy
/songs/1995/mod/c/chr_monk.zip     390 ***   XX: Trance Monks by Chronic
/songs/1995/mod/c/classic.zip      255 **    XX: Classical Interrupt by CDK
/songs/1995/mod/c/cloudz.zip       361 **+   XX: Behind the Cloudz by Bier
/songs/1995/mod/c/co-coco.zip      171 ***   XX: Co-Cocorico by Shad + Live
/songs/1995/mod/c/collecti.zip     364 **+   XX: Collective H. Compo by Wax
/songs/1995/mod/c/complete.zip     153 ***+  XX: Complete Disaster by Psycho
/songs/1995/mod/c/control.zip      224 ***   XX: Control by Hilander
/songs/1995/mod/c/cracklin.zip     230 *     XX: Crackling Turd by Taste
/songs/1995/mod/c/crazy_s.zip      266 ***+  XX: Crazy, Sexy, Cool by Virgill
/songs/1995/mod/c/creature.zip     289 ***   XX: Creature by Odie
/songs/1995/mod/d/do_you_l.zip     209 *+    XX: Do You Love by VVV,MJK
/songs/1995/mod/d/dragonbr.zip     406 **    XX: Dragon Breath by Black Dragon
/songs/1995/mod/d/dreamvoy.zip     147 ***+  XX: Dream Voyage by Gizmo
/songs/1995/mod/e/easy_lis.zip     144 **+   XX: Easy Listening by Bohdi
/songs/1995/other/ecnofunx.zip     369 [n/a] XX: Ecno Funx by Gigantbox
/songs/1995/mod/e/en_el_ca.zip     167 ****  XX: En el Cafe by Tiny
/songs/1995/mod/e/especial.zip     100 ****  XX: Espcial Special by Knaekpolsen
/songs/1995/mod/e/exrcompt.zip     220 ***+  XX: Exrcomptun by Elixir
/songs/1995/mod/f/field-da.zip     507 ****  XX: Field-Day by Scorpik
/songs/1995/mod/f/forever_.zip     362 *+    XX: Forever Love by Trance
/songs/1995/mod/f/ft_magic.zip     233 **    XX: FT Magic Sound by Thiesen
/songs/1995/mod/g/gettings.zip     193 **    XX: Getting Started by Knox
/songs/1995/mod/g/gluppobe.zip     373 ***+  XX: Gluppobert by Quazar
/songs/1995/mod/g/gnaule.zip       240 **+   XX: Gnaule by Doh
/songs/1995/mod/g/god_of_.zip      254 **    XX: God of Errors 2 by Raze
/songs/1995/mod/g/goingtot.zip     204 **+   XX: Going to the Top by Mot,Istari
/songs/1995/mod/g/greenday.zip     275 **    XX: Greenday Thing by Futuremind
/songs/1995/mod/h/hei-bang.zip      55 +     XX: Bim Bom Bam by HeiZahn
/songs/1995/mod/h/hey_skat.zip     251 **    XX: Hey Skat by Splif
/songs/1995/mod/h/higher_a.zip     193 **+   XX: Higher by Randall,Eracore
/songs/1995/mod/h/hooyowyc.zip     170 ***+  XX: Hoyowy Chrzaszcz by Spiryt,Ils
/songs/1995/mod/i/iconbast.zip     197 *+    XX: Iconbastic by Maytz
/songs/1995/mod/i/illusion.zip     172 ***+  XX: Illusion by Trance
/songs/1995/mod/i/in_addic.zip     225 **+   XX: In Addiction by TNT
/songs/1995/mod/i/in_my_ba.zip     286 ***   XX: In My Backyard by Fender
/songs/1995/mod/i/innertra.zip     130 **+   XX: Innertrance by KTN
/songs/1995/mod/j/jazztime.zip      69 **    XX: It's Jazztime by Sector
/songs/1995/mod/j/jerry-sh.zip     444 ****  XX: Jerry-Shop by Dan,Norby
/songs/1995/mod/k/kickin_i.zip     182 **+   XX: Kickin It Playback by Mortimer
/songs/1995/mod/k/kresten_.zip     161 ***   XX: Buddha Medly by DTS
/songs/1995/mod/l/live_for.zip     115 **    XX: Live Forever by Trapdoor
/songs/1995/mod/m/m-caviar.zip     141 ***+  XX: Compact Caviar by Mystical
/songs/1995/mod/m/manic_fi.zip     217 *+    XX: Manic Filters by Decybel
/songs/1995/mod/m/marching.zip     102 *+    XX: Marching Elefants by X-Cess
/songs/1995/mod/m/media-te.zip     231 **+   XX: Media Techno Popicus by Speedy
/songs/1995/mod/m/mellow_t.zip     225 **    XX: Mellow Technology by Klorathy
/songs/1995/mod/m/morning-.zip     126 ***+  XX: Morning by Dan Dryer
/songs/1995/mod/m/mountain.zip     404 ***   XX: Mountain High by Tricktrax
/songs/1995/mod/m/mystics.zip      205 **    XX: Mystic by Speck
/songs/1995/mod/n/neat_com.zip     373 **    XX: Neat by Trickster
/songs/1995/mod/n/nowasyn.zip      220 *+    XX: Nowasyn by Nowawes
/songs/1995/mod/o/obsessio.zip     156 ***   XX: Obsession by Zoomorph
/songs/1995/mod/o/omega.zip        196 **    XX: Omega by Smooth
/songs/1995/mod/o/out_of_g.zip     155 **+   XX: Out of Goa by Yogi
/songs/1995/mod/p/plutoniu.zip     146 *+    XX: Plutonium 239 by Tls
/songs/1995/mod/r/r0undab0.zip      87 ***+  XX: Roundabout by Boon
/songs/1995/mod/r/rave_tri.zip     196 *     XX: Rave Trip by X-et
/songs/1995/mod/r/rocks.zip        226 ***   XX: On the Rocks by Necros
/songs/1995/mod/s/saa_smuk.zip     227 *+    XX: Saa Smukt er Havet by Kim
/songs/1995/mod/s/sassy_as.zip     210 *+    XX: Sassy Assline by Muttley
/songs/1995/mod/s/screwdri.zip     148 *+    XX: Screwdriver Disaster by Coma
/songs/1995/mod/s/shake_yo.zip     108 ***   XX: Shake Body by C.Cool,Avocado
/songs/1995/mod/s/should_t.zip     172 *     XX: Should Turn to B by Tarmslyng
/songs/1995/mod/s/smooth_a.zip     247 **+   XX: Smooth Attack by Pman
/songs/1995/mod/s/sorry.zip         82 **    XX: Sorry to Party by Dixan
/songs/1995/mod/s/space_fi.zip     115 **+   XX: Space Fish in Sig T3 by Pixie
/songs/1995/mod/s/spacelab.zip     259 **    XX: Spacelab 9 by Shane
/songs/1995/mod/s/spiral_m.zip     333 **+   XX: Spiral Mechanism by Shout
/songs/1995/mod/s/suddenin.zip     334 **    XX: Sudden Inspiration by Hille
/songs/1995/mod/s/sw-wart.zip      211 ***+  XX: Wart by Damac,Swallow
/songs/1995/mod/s/syndrome.zip     226 ***   XX: Syndrome by POW
/songs/1995/mod/s/syntacti.zip     149 ***   XX: Syntactic Sugar by Mittlag
/songs/1995/mod/t/the_fire.zip     115 **    XX: The Fire Bird by Notman
/songs/1995/other/the_madd.zip      65 [n/a] XX: MADDog in Acid World by Lasse
/songs/1995/mod/t/the_milk.zip     205 **    XX: The Milkman by Weezer
/songs/1995/mod/t/the_over.zip     268 ***+  XX: The Overture 2 by Front 6
/songs/1995/mod/t/theatric.zip     170 **    XX: Theatrical by Deck
/songs/1995/other/theparty.zip     478 [n/a] XX: The Party by Gunni
/songs/1995/mod/t/too_much.zip     275 ***   XX: Too Much by Marc
/songs/1995/mod/t/totalecl.zip     531 ***   XX: Total-Eclipse by Zany (check)
/songs/1995/mod/t/trans-s.zip      111 **+   XX: Trance-Sax-Ual by Ktn
/songs/1995/mod/f/tvnet.zip        593 ***+  XX: TV Network by Cash
/songs/1995/mod/t/tzjim-sc.zip      64 **    XX: Tzjim Schack by Swaxi
/songs/1995/mod/v/vandpibe.zip     154 *     XX: Vandpibe by Jeronimus
/songs/1995/mod/v/vatican.zip       12 *+    XX: Vatican Rag by Hubert
/songs/1995/mod/v/vermins-.zip      76 **    XX: Vermins Eat Dust by Dr.Strange
/songs/1995/mod/v/visionai.zip     395 ***   XX: Visionaire by Bethoven
/songs/1995/mod/x/xact_ple.zip     207 ***   XX: Xact Pleasure by NFC
/songs/1995/mod/z/zyr.zip          124 **+   XX: Zyrian by S. Koponen

=----------------------------------------------------------[Graphics:General]-=
Location /demos/graphics          Size Rated Description
=-------------------------------- ---- ----- ---------------------------------=
/disks/1996/fredpack.zip           257 ***+  VGA Pack by Fred Beltran
/images/1996/b/b2p3_1.zip           16 *+    Billy Baygle by E.Megas

EXE 95 Graphics (EXE95:grfx:)
/images/1995/w/wrd_alie.zip         22 ***   03: Alie by Ward
/images/1995/e/eye_drkf.zip         29 **+   ??: Eye by ???
/images/1995/f/farao.zip            90 ***+  ??: Farao by ???
/images/1995/l/lany.zip             56 **+   ??: Lany by ???
/images/1995/m/magic.zip            48 **    ??: Magic by ???
/images/1995/s/sarkany.zip         101 [n/a] ??: Sarkany by ???

The Party 95 Graphics (TP95:grfx:)
/images/1995/s/spacetit.zip        170 ****+ 01: Space Tits by Danny
/images/1995/0-9/8climber.zip      132 ****  02: Climber by Rodney
/images/1995/a/animalre.zip         51 ***   06: Animal Reign by Made
/images/1995/s/silicon.zip         153 **+   09: Silicon by Louie
/images/1995/s/smorrebr.zip        169 **    13: Smorrebr by Facet
/images/1995/c/cutechri.zip         84 ***+  14: Cute Christina by Dice
/images/1995/t/theevils.zip        120 **+   18: The Evils by Spawn
/images/1995/e/eldar.zip            67 **    21: Eldar by Hook
/images/1995/r/ratman.zip           76 ***+  39: Ratman by Darkman
/images/1995/j/jansson.zip          17 **    43: Gamla by Saffron
/images/1995/p/picturet.zip         79 **+   46: Picture T by Bifrost
/images/1995/b/beyond_n.zip        138 ***   47: Beyond N by JCS
/images/1995/s/sn-nuke.zip          15 **+   52: Nuclear Waste by Moebius
/images/1995/s/splitter.arj         64 **    53: Splitter by Rad Ad
/images/1995/c/champagn.zip         63 **    55: Champagne by Fiver
/images/1995/t/theraid.zip          41 **+   74: The Raid by Damac
/images/1995/o/osiris.zip           68 +     89: Osiris by Balkis
/images/1995/a/assassin.zip         65 *+    ??: ??? by ???
/images/1995/o/ofdeath.zip          40 **+   ??: ??? by ???
/images/1995/s/spacefis.zip         40 **+   ??: Space Fist by Pixie
/images/1995/w/wildbgan.zip        202 ***   ??: ??? by ???

=----------------------------------------------------[Miscellaneous:Reviewed]-=
Location /demos                   Size Rated Description
=-------------------------------- ---- ----- ---------------------------------=
/mags/1996/cheese1.zip             217 **+   Cheese #1 by TKB


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

=---------------------------------------------------[Introduction]--[Snowman]-=

 Hello all, and welcome to DemoNews issue 116.

 Our little ftp.cdrom.com server is feeling better after a bout with a bad
 mount.  The /.11 drive (the Ada archive) went bad.  Around the same time,
 some sort of file integrity error was detected on the mount that housed
 everyone's home directories.  Many of us were without an outside world
 mail-feed for about four days.  Upon restart, the clock on the server was
 set ahead about 2.5 years.  This seemed to cause problems with the
 listserver but everything appears to be working correctly now.

 On an unrelated note, I am now the /pub/perl archive maintainer.  My
 responsibilities exist solely of checking up on a crontab mirroring job.
 If only /pub/demos were that easy.  :)

 E. Megas wrote me and said that we should have some more "demo news" (i.e.
 more news about the scene).  I agree.  Please send me some to print.

 Our /pub/demos/code mirror opened up this week.  See "File Information"
 above for more details.

 There will be some very big changes coming up in the way we catalog files.
 We are totally redesigning from the ground up the way we handle file
 descriptions and other attributes.  For those of you who are old enough to
 remember, we used to have an external .txt file for each .zip on the site
 (kind of like a file_id.diz).  This made things easy to move around (didn't
 have to update 00index.txt files) but wasn't very friendly.

 We then moved on to 00index.txt files, which made for somewhat easy
 recursive subdirectory traversal in generating an ALLFILES.TXT. This was
 fine for a while but for several reasons we have decided to go to a
 MASTER.LST format, propagating all descriptions down through the directory
 tree (rather than the other way around).  If this doesn't make sense or
 sounds boring, that's ok.  You'll see benefits soon enough.  :)

 I have recently started playing a new game.  It's called "Make a Demo CD".
 The goals are to make the scene happy and earn money for your company. The
 penalties are getting sued for copyright violations and loosing respect
 with the scene.  I'm just a newbie at this so I haven't progressed very
 far. I will either have beaten this game or been disqualified by May 14th,
 1996. If any of you know some cheat codes, I'd love to hear them.  In about
 three weeks I'll talk about the multi-player edition.

 On a final note, we are a bit behind on getting DemoNews out.  The "Top
 Downloads" needs to be done weekly to provide any sort of stable statistics.
 As a result, expect to see two more issues of this newsletter before next
 monday.

 Take care.

 Snowman / Hornet - r3cgm@cdrom.com


=-------------------------------[Intro to 3D Graphics - Volume 02]--[Kiwidog]-=

 _____Greetings

 Welcome back everyone.

 It's time for the second article in the 3D series, in which we cover
 another basic element of a 3D system... something seen in nearly ever demo
 for the past few years that involves vectors at all.  Rotation.  Whether it
 be that nice texture-mapped stone from Valhalla's "Solstice", or just a
 flat-shaded cube from a 4k intro, things rotate almost constantly.  So it's
 time to start performing some rotations on our own. :-)

 Once again, there will be a supplement to this article, but this time there
 will be no extra article text; everything should be in here.  But the
 supplement will have sample code, so you still should get it.
 DN115_3D.ZIP. Just check in the same place on ftp.cdrom.com as the last
 supplement...

 I'm going to keep this article relatively short (along with the subsequent
 ones)... after all, Snowman has more to put in DemoNews than my constant
 rambling, and I can't keep sucking up all the space like this. ;)
 Nonetheless, I hope you find this article useful, as we continue our drive
 toward learning 3D graphics.

 Ready?  Well like it or not, here we go! :)

 _____Section One - 2D Rotation

 Before we can get more sophisticated 3D rotations going, we need to try it
 in two dimensions first... because 3D rotations are just based on three 2D
 rotations, but combined.

 So how do we rotate something in 2D?  How do we take any 2D point, give it
 an angle to rotate by about the origin, and get it correctly to its new
 position?  Well this is where that Trig knowledge from the first article
 comes into play.

 Everything about rotation involves Trig.  Sine and Cosine are very much
 your friends here.  And it's not that complicated, really... you can rotate
 in one plane with only 4 multiplies (other optimizations come later as
 well).

 So how do we go about this?  Well, let's take it piece by piece.  First,
 I'll assume the XY plane (the real one, where Y goes up) for this, as we
 try to take a point and rotate it.

 A lot of docs, when trying to explain rotation, will give you the simple
 equations for it but give you no clue as to how those equations came about.
 Several people have asked me, "Hey, if and when you ever do a 3D tutorial,
 tell me how the heck you get those rotation equations, cuz I have no idea
 where those came from and why they work."

 Well, I can't quite tell you where they came from at first (like who
 thought of them), but I can replicate the ideas here and show you what
 makes sense to me.  If it makes sense to you to, then I guess it worked.
 :-)

 Here's the idea...

 Get out a piece of paper.  No, don't worry, this isn't a quiz. ;)

 On the paper, draw a pair of conventional XY coordinate axes, and then
 lightly sketch a large circle on it.  Make sure the circle is light; you
 don't really need it for much except placing a couple points.

 After you draw the circle, put a point at about, say, 30 degrees (assuming
 0 degrees is to the right and the angles go counterclockwise).  Then put
 another point at about 70 degrees, in the same fashion.  We're going to
 pretend that the first point is our original point, and that we're trying
 to rotate it to the second point, our destination... a rotation of 40
 degrees about the origin.  The actual accuracy of the points doesn't
 matter; if you're a bit off, it's fine.

 Now with each point, draw a triangle for that point.  Each triangle's three
 sides are the X axis, the the line from the origin to the point, and the
 line from the point straight down to the X axis.  What you should have now
 are two right triangles in the upper right quadrant of your XY plane, one
 being pretty upright (the destination point's), and the other a bit more
 wide than tall.

 Time for some labels...  okay, for each triangle, label the line going from
 the origin to the point as "R" (for radius).  Since it's the same length
 for both triangles, we use the same label.  Now, on the first triangle (the
 short, wide one), label the side along the X axis "X", for that length.
 Likewise, label the line from the X axis up to the point as "Y" for that
 height.

 For the second triangle (the tall one, for the 70 degree point), label the
 X length and Y height as "U" and "V", respectively, in a similar fashion.

 Finally, we need two angles.  In the angle between the X axis and the
 first, lower R side (30 degrees), label it ? (called Phi).  Then label the
 angle between the lower R and the higher R (the one at 70 degrees) as ?
 (called Theta).

 There we go... we've got our drawing. :-)  If my little walkthrough in
 drawing this has confused you to no end, either try it again from the
 beginning, or look in the supplement; I'll include a PCX in there of this
 same diagram I'm describing.

 Okay, so we have this drawing.  Basically, what we know in the beginning is
 that we have this initial point at an unknown angle (we know it's 30
 degrees in this example, but normally, you won't know that for arbitrary
 points), yet we know it has Cartesian coordinates (X,Y).  What we want to
 do is pump X and Y through an equation or two, along with the angle we want
 to rotate by (which we labeled as Theta, and in this example is 40
 degrees), and find out its new coordinates, called (U,V).  So what
 equations do we use? Let's find out...

 There are several convenient identities in Trigonometry that you can find
 in pretty much every math textbook with Trig in it.... one of those
 identities is called the "Law of Sines", which goes like this...

   Sin(?)   Sin(?)   Sin(?)
       ------ = ------ = ------
     A        B        C

 Where A, B, and C are the lengths of the sides of a triangle, and ?, ?, and
 ? are the angles _directly opposite_ those sides...

         /|
        /?|
     C /  |
      /   |A
     /    |
    /     |
   /?    ?|
   --------
   B

 It doesn't have to be a right triangle; it works for every triangle there
 is. Granted, for our purposes, we _will_ be using our right triangles, and
 this will help us out.

 Now if we use our first right triangle, the short one, and pretend that R
 is our "C" of the triangle, by the fact that this is a right triangle, we
 know that ? is 90 degrees.  And the Sine of 90 is 1, which gives us one
 very nice piece of math meat.

 We only need to use one other side of our Law of Sines formula in this
 example, in this case, the A-? side.  In our case, "A" is the same as Y,
 and ? is the same as ?.  So we have a little mini-formula,

   Sin(90)   Sin(?)                   1    Sin(?)
   ------- = ------    which means   --- = ------
      R        Y                      R      Y

 Then, if you multiply each side by Y, it moves the Y to the left side, so

    Y
   --- = Sin(?)
    R

 This should all make sense so far, I hope.  If you're looking at the
 diagram as you read this, it should clear things up a bit.

 Okay, so we can see the relation between the angle ?, and the sides Y and
 R. Well since ? is across from Y, shouldn't we be able to have the same
 kind of relation for the other triangle, with V and R?  The angle across
 from V is just ? and ? added together, so shouldn't that work?

 Sure does. :-)

    V
   --- = Sin(?+?)
    R

 Okay, time for another nifty Trig identity (BTW, if you don't have a math
 book with all these identities in it, let me know... if enough people ask
 for a listing, I'll type up a quick reference list with identity equations
 that you can use.  Just email to the address at the end, if you think you'd
 like that :)

 Anyway, another nice identity is that for any two angles ? and ?,

   Sin(?+?) = Sin(?)*Cos(?) + Cos(?)*Sin(?)

 So we sub that into our previous thing, and we have

    V
   --- = Sin(?)*Cos(?) + Cos(?)*Sin(?)
    R

 Multiply by R now, to get V (the destination point's X value that we've
 been trying to find), and it's

   V = R*Sin(?)*Cos(?) + R*Cos(?)*Sin(?)

 Welp, last identity.... this one, taken from Polar coordinates.  If you've
 had algebra, you've used Polar coordinates before.  Well if you remember
 the way to convert a polar point to Cartesian (I doubt you do, so I'll
 remind you... it's gonna take a while before you end up memorizing all
 these darn formulas, trust me :)  those conversions are

   X = R*Cos(Theta)     *** Don't confuse these with our R, X, or Y!
   Y = R*Sin(Theta)         They're just conversion equations ***

 Well look at our V equation above... notice anything?  We know Phi is an
 angle in the triangle that deals only with X and Y, which we know (since
 they're just your first point and all).  So can we drop those R*Sin(?) and
 R*Cos(?) parts and just sub in X and Y like you would do with Polar? You
 betcha.....

   V = Y*Cos(?) + X*Sin(?)       *** FINAL V EQUATION!!! :) ***

 That's all we need!  Hooray! :)  We know X and Y, since we started with
 those.  And we know ?, since it's the number of degrees we want to rotate
 by (in our example, 40 degrees).  So if we use this equation, we get the V
 value, which is the Y coordinate of the FINAL point. :)

 Now we still need to get U (the final point's X coordinate).  Luckily, the
 series of equations is the same almost, except one identity is different. I
 won't work out the whole thing again, you can do that if you want.  But
 here are the differences that you'll see.  One, since we're doing the
 horizontal element instead of vertical,

   U
  --- = Cos(?+?)
   R

 Now's Cosine's Sum of Angles formula is a little bit different than Sine's,

   Cos(?+?) = Cos(?)*Cos(?) - Sin(?)*Sin(?)

 which will end up giving us that subtraction instead of addition in the
 end. If you keep working the equations the same as we did before, but with
 this new identity, you get the U equation too! :)

   U = X*Cos(?) - Y*Sin(?)        *** FINAL U EQUATION!!! ***


 Summing up those equations into nice, happy, 2D rotation form.....


   NewX = (OldX*Cos(Theta)) - (OldY*Sin(Theta))
   NewY = (OldY*Cos(Theta)) + (OldX*Sin(Theta))

 And there we have it!  Note that I made it very clear as to the difference
 between the "Old" and "New" values.  It's important that you do this, too.
 You don't want to just use a value "X", for example.... because if you
 calculate the "new" X and end up using that instead of the "old" X in the
 second equation (for NewY), you don't get the right rotation.

 IN ROTATION, USE ONLY THE OLD VALUES UNTIL ALL THE NEW ONES ARE FOUND!

 Once you have the final new X and Y values, _THEN_ replace the old pair
 with the new pair, and go on your way.  Make sure to keep the values
 separate until that time.

 BTW... As you look back at how I derived these rotation formulas, don't
 feel bad if you feel like you couldn't have derived them yourself...
 especially if you're just beginning.  I know I ran on these formulas
 blindly for over a year before I ended up losing them and was forced to
 recreate them again in this fashion.  I couldn't have done it earlier.  It
 takes time, so if you feel like you're still in the dark... don't.
 Eventually you'll get the hang of it all. :-)

 Any more to 2D rotation?  Nope, that's the whole of it.  Before you try out
 3D rotation (explained in the next section), test out the above principles
 in some of your own code, by plotting a few pixels here and there and then
 rotating them about the origin.  It's not hard at all to turn the above
 formulas (formulae?) into code.  Also, if you need some help or are just
 plain curious, I've got some example source (in both Pascal and C, just
 like last time) in the supplement, demonstrating this stuff.  Feel free to
 check it out. :)

 Okay, well, enough of this planar stuff.... on to 3D rotations!  (And
 relax, there's not much more; you've done the bulk of the work already....)
 
 _____Section Two - 3D Rotation

 So what do we need to turn our rotations into 3D rotations?  Not much,
 actually.  There are many ways to do rotations in 3D, some simpler than
 others.  The simplest (and most common from what I've seen) way is to do it
 by using three 2D rotations, one for each axis.

 The 2D rotations we did in the last section are on the XY plane.  But as
 you think about the XY plane in terms of 3D, the rotation takes on another
 meaning... it was also a rotation ABOUT the Z axis.  Meaning that we have
 the Z axis, and whatever Z values the points may have, they stay the same,
 as we are rotating around that axis itself.  The only values that change in
 a rotation about any axis are the values of the two OTHER coordinates.

 So a rotation about Z will affect X and Y, a rotation about X will affect Y
 and Z, and a rotation about Y will affect Z and X.  It's just one big
 cycle...

 So if we want to do a full all-axis 3D rotation, we just arrange three
 back-to-back 2D rotations, one for each axis, like this...

   NewY = (OldY*Cos(ThetaX)) - (OldZ*Sin(ThetaX))  ** X axis rotation **
   NewZ = (OldZ*Cos(ThetaX)) + (OldY*Sin(ThetaX))

   (Copy NewY and NewZ into OldY and OldZ)

   NewZ = (OldZ*Cos(ThetaY)) - (OldX*Sin(ThetaY))  ** Y axis rotation **
   NewX = (OldX*Cos(ThetaY)) + (OldZ*Sin(ThetaY))

   (Copy NewZ and NewX into OldZ and OldX)

   NewX = (OldX*Cos(ThetaZ)) - (OldY*Sin(ThetaZ))  ** Z axis rotation **
   NewY = (OldY*Cos(ThetaZ)) + (OldX*Sin(ThetaZ))

   (No copies needed, since we're done)

 The reasons for mid-copies are like I said; for each axis rotation you need
 to keep using the old values until both the new ones are done.  But each
 axis' rotation is independent of the other two... so after each pair, you
 need to update all the values before going on to the next axis.  You don't
 want to use one axis' old values when going into rotating about another
 axis; that would be bad.

 Once you've done all three axes, you should have your new point, completely
 rotated about each angle as you wish (ThetaX, ThetaY, and ThetaZ).

 One important point... the order in which you do these axes DOES make a
 difference.  Rotating in an X-Y-Z sequence will not give you the same
 results as rotating in a Z-X-Y sequence, etc.  Now, for your engine at this
 point, all you're probably concerned about is looks, i.e. that your object
 is rotating and you can see it rotating.  Since that's the case, it really
 doesn't matter for the moment which order you do things in.  It's the
 appearance that counts.  But later on, when you get into more complex
 issues that involve more things than just a set of points, you'll want to
 keep your rotation order consistent.  I just use X-Y-Z because it's pretty
 natural. :-)

 I'm not going to get into optimizations of this rotation material until
 another time, but I can give you a hint or two now... first, you'll notice
 that right now it's at 12 multiplies for a full rotation (4 for each axis).
 But it turns out you can reduce it to at least 9 multiplies, by
 precalculating a few values at the beginning of each frame and getting a
 final 3x3 matrix for the actual point rotations themselves (if you don't
 know what I mean by matrix, don't worry about it at the moment; we'll get
 into matrices later on).  It's something to look into, if you're curious
 and feel like tinkering with the math a bit.

 Also, once again, this method of rotation is only one way to rotate.  There
 are other ways, sometimes involving other coordinate systems, that can be
 more efficient on occasion as well.  You'll discover those in time (and
 probably in some of the later articles :)  But for now, this I think is the
 simplest way to begin... get these concepts down first, and drill them into
 your brain.  You'll know when to switch gears when the time comes.

 Well, looks like the end of another article!  I've got some sample source
 in the supplement, as well as a PCX of that 2D rotation diagram, if you got
 lost in all of this mess. :-)  Take the time to look at the code, see how
 it relates to the math used in here, and most importantly, DO SOME
 EXPERIMENTATION ON YOUR OWN.  This kinda stuff isn't learned by reading,
 it's learned by doing.

 Now go forth, plot some dots, get them spinning, and have fun!  Keep
 watching, though... 'cause it's only gonna get better. :-)

 See you next time...
 
 Kiwidog / Hornet , Terraformer - kiwidog@vt.edu


=----------------------------------[VGA Hardware Tricks, Part 4/6]--[Trixter]-=

 _____Preface

 Welcome to VGA Hardware Tricks, a six-part series written by
 Trixter/Hornet.  In this series, I'll be exploring ways you can push VGA
 harder to achieve new effects.  The emphasis of this series is twofold:

 The techniques discussed will work on any *standard* VGA card. (No SVGA or
 VESA video cards are necessary, but these techniques will work on those
 cards as well.)

 The techniques discussed require very little calculation, so they will work
 on slower computers.  (Some techniques, however, requires a lot of CPU
 *attention*, which means that while the effects are happening, they can't
 be disturbed by other calculations, etc.  Good Assembler programmers might
 be able to get around this, however.)

 This series is for intermediate to advanced coders, so there are a couple
 of prerequisites you should meet:  Example code will be given in assembler
 and Pascal, so familiarity with those languages will be helpful when
 looking at the example code; also, a familiarity with Mode X (unchained
 VGA) is required, as procedures like changing video resolutions will be
 discussed.

 This series covers six topics:

 - Crossfading 16-color pictures
 - Crossfading 256-color pictures
 - More than 256 colors: 12-bit color
 - More than 256 colors: 18-bit color    (this article)
 - Copper effects in text mode
 - Displaying graphics in text mode

 _____Introduction

 Yes, you read that title right--we're going to display 18-bit color on a
 piece of hardware only built for 8-bit color.  Seem impossible?
 Technically, it is.  But using our old friend, persistence of vision, we
 can fake it convincingly--and the best part is, it's not CPU intensive at
 all, just a clever arrangement of pixels.

 (Note:  This technique has been so overused in 1995 that, initially, I
 thought it would need no explanation; just some example code and that would
 be it.  However, there is inevitably someone, somewhere, that doesn't
 really grasp how this works.  So, I feel a full explanation is necessary.)

 As I've written about many times before, our brain is a very lazy thing. So
 lazy, in fact, that it tends to fill in information that our eyes don't
 provide.  This is called Persistence Of Vision.  (If you need a more
 detailed explanation of what that is, look at previous VGA Hardware Tricks
 articles or visit your local library.)  Persistence Of Vision has been used
 in many places before computers even existed, like the concept of film and
 television.  It's television, in fact, that provides us with the example
 we'll use to coax 18-bit (262,144) color out of out 8-bit (256) color video
 card.

 If you've ever gotten curious as to how your television or computer monitor
 works, you might have gone right up to the screen and looked at it closely,
 possibly with a magnifying glass.  If you'd had, you'd see a small hexagonal
 grid of red, green, and blue dots.  They're arranged in groups of three,
 like this:

   X

 X   X

 This arrangement is called a "triad".  Each red, green, and blue dot in a
 triad glow with a different intensity, producing one solid color. (Well,
 it's not exactly a *solid* color, but the dots are so small and close
 together that POV blends them into one color for us.)  The entire screen is
 made up of triads.

 To produce 18-bit color, all we have to do is emulate a series of
 triads--that is, put a red, green, and blue pixel next to each other and
 alter the intensity of all three to blend into a single color.  This
 technique produces 18-bit color because the VGA hardware is capable of
 producing 6-bit (64) intensities of red, green, and blue for any given
 pixel.  So, 6+6+6 = 18-bit color, or to look at it another way, 64 red
 values * 64 blue values * 64 green values = 262,144 possible colors.

 _____Implementing Triads

 To emulate a triad, we're going to need to set up the palette first. VGA is
 capable of 64 different intensities of red, green, and blue, so the palette
 needs to have 64 reds, 64 greens, and 64 blues.  Pseudocode for doing that
 would probably look like this:

 for loop:=0 to 63 do begin
   set palette index "loop"     to r=loop,g=0,b=0  <-- red entries
   set palette index "loop+64"  to r=0,g=loop,b=0  <-- green entries
   set palette index "loop+128" to r=0,g=0,b=loop  <-- blue entries
 end;

 This leaves 64 colors left over at the end of our palette (from 192 to
 255), for anything we feel like doing.

 Now we get to plot the three pixels of a triad.  Since VGA lays out pixels
 in a grid (as opposed to a "honeycomb" like an actual television screen),
 we have to lay them out on a grid as well.  The best way is in a line, like
 this:

 Key:  R = red pixel, G = green pixel, B = blue pixel

    0 1 2 3 4 5 6 7 8 9

 0  R R R R R R R R R R
 1  G G G G G G G G G G
 2  B B B B B B B B B B

 3  R R R R R R R R R R
 4  G G G G G G G G G G
 5  B B B B B B B B B B

 etc.  So, 18-bit color pixel "(0,0)" is really "red at (0,0)", "green at
 (0,1)", and "blue at (0,2)".

 _____Potential problems

 It sounds easy, doesn't it?  Just put a red, green, and blue pixel next to
 each other and you've got one of those 262,144 colors.  If you were to stop
 reading this article right now and jump to the compiler, you'd probably run
 into a problem as soon as you entered mode 13h:  The pixels are big.  *Way*
 too big.  In fact, you'd have to sit about four feet away from the screen
 to ignore the fact that you're really looking at three pixels close
 together instead of a new color.  Not only that, but each "pixel" is made
 up of three pixels arranged vertically, which is a really weird aspect
 ratio (the effective resolution is 320x66).  In order to fix these
 problems, we've got to shrink the height of each pixel.  But how can we
 make the pixels smaller?

 One solution that's tempting is to use a 640x480x256 VESA mode, or
 something similar.  That defeats the whole purpose of this, because then a
 super-vga card would be required, and this series of articles is dedicated
 to achieving new effects on *standard* hardware.  (Yes, not *everyone* has
 a super-vga card and monitor.)  Besides, if you were going to limit your
 audience to a VESA mode, you might as well go all the way and use an actual
 24-bit color mode anyway.  Finally, 640x480x256 is 300K of video memory per
 page, which is too slow for animation (even on 486 machines).

 The solution, as it has been in the past, is to use Mode X.  Mode X, as you
 recall, is a video mode created by unchaining the video RAM, so that you
 can (amongst many other things) alter the display resolution.  It is easy
 to make a resolution of 320x400 (effectively 320x133) under Mode X, which
 helps a little, and actually gives us 2 video pages to work with. This is
 suitable for animation.  If you need more pixels and something a little
 more accurate, 320x480 (effectively 320x160) comes close to the standard
 320x200 1:1.3 aspect ratio that VGA users are used to.  Because it's 480
 lines, it will work with all monitors.

 Believe it or not, you can actually go higher than that, to 320x600
 (effectively 320x200)!  This mode was, to my knowledge, first used by Adam
 Bergstrom; in fact, his code is the code in the vgahard4.zip package
 described later in this article.  Of course, this resolution is only
 possible on monitors that can display 800x600, because it uses 600 screen
 lines.  It also uses 192k of the 256K of video ram we have access to, so
 that makes it even more unsuitable for animation.  However, it's best for
 displaying static pictures; I used it for Hornet's NAID Party report
 (hrn-nrpt.zip on ftp.cdrom.com) to display "320x200" 24-bit color pictures
 (I shifted left (SHL) each RGB component down two bits before plotting to
 the screen).

 _____Code

 Code that achieves this effect is available on ftp.cdrom.com in the
 directory /pub/demos/hornet/demonews/vgahard in the file vgahard4.zip. This
 article is stored there as well.  To compile the code directly, you'll need
 Turbo Pascal 7.0 or later.  (The code can be compiled on earlier compilers
 as well, but some slight modification might be necessary.)

 _____Notes

 This method is extremely useful for animation, since there's no palette
 switching or page flipping required, unlike some other methods.  It lends
 itself so well to this that it has become a "fad" effect for practically
 every demo after X14 / Orange first used it on the PC.  The 18-bit color
 effect is sometimes called "Orange's 262144 color mode" as a result.
 Another demo that uses this is Just / Legend Design.  (In fact, the entire
 demo is in that mode.)

 Ambience and Luminati by Tran claim 21-bit color; they achieve this by
 using two video pages and flipping between them rapidly, using two flipping
 pixels in one location to blend into a "third" pixel, similar to the 12-bit
 color technique covered in VGA Hardware Tricks #3.  Once again, POV at
 work.  ;)  In order to achieve this, however, Tran has to reprogram the VGA
 registers, increasing the refresh rate of the screen so that it flips pages
 at nearly double it's normal rate, at 100Hz (100 times a second), giving an
 effect screen refresh rate of 50Hz.  This mode is not completely compatible
 with all monitors, so I have not decided to cover it in this series.
 Captain Hook has written up a short article on it, however, so I expect
 you'll learn how to do it from him shortly.

 _____Next Time

 I'm not *quite* done with color, if you can believe that.  Next time, I'll
 show you how to display 400 different colors at the same time--in *text
 mode*.  :)  If you're familiar with the "copper" chip inside every Amiga
 computer, you'll know what I'm talking about.  Have fun experimenting until
 then!

 Trixter / Hornet - trixter@ftp.cdrom.com


=-[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.

 _____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.116.