1029 lines
54 KiB
Plaintext
1029 lines
54 KiB
Plaintext
.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 <20> (called Phi). Then label the
|
||
angle between the lower R and the higher R (the one at 70 degrees) as <20>
|
||
(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(<28>) Sin(<28>) Sin(<28>)
|
||
------ = ------ = ------
|
||
A B C
|
||
|
||
Where A, B, and C are the lengths of the sides of a triangle, and <20>, <20>, and
|
||
<20> are the angles _directly opposite_ those sides...
|
||
|
||
/|
|
||
/<2F>|
|
||
C / |
|
||
/ |A
|
||
/ |
|
||
/ |
|
||
/<2F> <20>|
|
||
--------
|
||
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 <20> 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-<2D> side. In our case, "A" is the same as Y,
|
||
and <20> is the same as <20>. So we have a little mini-formula,
|
||
|
||
Sin(90) Sin(<28>) 1 Sin(<28>)
|
||
------- = ------ 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(<28>)
|
||
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 <20>, and the sides Y and
|
||
R. Well since <20> 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 <20> and <20> added together, so shouldn't that work?
|
||
|
||
Sure does. :-)
|
||
|
||
V
|
||
--- = Sin(<28>+<2B>)
|
||
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 <20> and <20>,
|
||
|
||
Sin(<28>+<2B>) = Sin(<28>)*Cos(<28>) + Cos(<28>)*Sin(<28>)
|
||
|
||
So we sub that into our previous thing, and we have
|
||
|
||
V
|
||
--- = Sin(<28>)*Cos(<28>) + Cos(<28>)*Sin(<28>)
|
||
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(<28>)*Cos(<28>) + R*Cos(<28>)*Sin(<28>)
|
||
|
||
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(<28>) and
|
||
R*Cos(<28>) parts and just sub in X and Y like you would do with Polar? You
|
||
betcha.....
|
||
|
||
V = Y*Cos(<28>) + X*Sin(<28>) *** FINAL V EQUATION!!! :) ***
|
||
|
||
That's all we need! Hooray! :) We know X and Y, since we started with
|
||
those. And we know <20>, 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(<28>+<2B>)
|
||
R
|
||
|
||
Now's Cosine's Sum of Angles formula is a little bit different than Sine's,
|
||
|
||
Cos(<28>+<2B>) = Cos(<28>)*Cos(<28>) - Sin(<28>)*Sin(<28>)
|
||
|
||
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(<28>) - Y*Sin(<28>) *** 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.
|
||
|