* * ÓTROIDS * * ÓTEP 1: CREATE AN ASTEROID FIELD * * ÓÌÊ 4/99 *  ÏÒÇ $1000 ÏBJÃØ = 0 ÏBJÃÙ = 2 ÏBJÃÚ = 4 ÏBJÄATA = 6 ÏBJÉÄ = 8 ÏBJÕSER = 9 ÏBÃENÐOS = 10 ÏBJÃØÒEM = 11 ÏBJÃÙÒEM = 12 ÏBJÃÚÒEM = 13 ÏBJÍAT = 14 ÏBJÓIZE = 32à;32 BYTES TOTAL à;ÊUMP TABLE ÉNIT3Ä = $5000à;ÉNITIALIZE LIB3D ÁDDÏBJ = ÉNIT3Ä+3à;ÁDD OBJECT TO OBJECT LIST ÄELÏBJ = ÁDDÏBJ+3à;ÄELETE OBJECT FROM LIST ÓETÃURÏB = ÄELÏBJ+3à;ÓET CURRENT OBJECT ÇETÃURÏB = ÓETÃURÏB+3à;ÇET CURRENT OBJECT ÇETÎEXTÏB = ÇETÃURÏB+3à;ÇET NEXT OBJECT IN LIST ÇETÏBJ = ÇETÎEXTÏB+3à;ÇET POINTER TO OBJECT ÓETÍAT = ÇETÏBJ+3à;ÃALCULATE AND SET OBJECT MATRIX ÐITCH = ÓETÍAT+3à;ÐITCH - ROTATE OBJECT AROUND X-AXIS ÙAW = ÐITCH+3à;ÙAW - ROTATE AROUND Y-AXIS ÒOLL = ÙAW+3à;ÒOLL - ROTATE AROUND Z-AXIS ÍOVEÓIDE = ÒOLL+3à;ÍOVE OBJECT ÍOVEÕP = ÍOVEÓIDE+3 ÍOVEÆORWARDS = ÍOVEÕP+3 ÇETÓIDEÖEC = ÍOVEÆORWARDS+3à;ÏRIENTATION VECTORS ÇETÕPÖEC = ÇETÓIDEÖEC+3à;(LENGTH=64) ÇETÆRONTÖEC = ÇETÕPÖEC+3 ÓETÐARMS = ÇETÆRONTÖEC+3à;ÓET RENDERING PARAMETERS ÓETÖISÐARMS = ÓETÐARMS+3à;ÓET VISIBILITY PARAMETERS ÃALCÖIEW = ÓETÖISÐARMS+3à;ÓET VIEWPOINT = OBJECT ÓORTÖIS = ÃALCÖIEW+3à;ÃOMPUTE AND SORT VISIBLE OBJECTS ÄRAWÁLLÖIS = ÓORTÖIS+3à;ÄRAW ALL VISIBLE OBJECTS ÄRAWÎEXTÖIS = ÄRAWÁLLÖIS+3à;ÄRAW NEXT OBJESIBLE OBJECT LIST ÒOTÄRAW = ÄRAWÎEXTÖIS+3à;ÒOTATE AND DRAW OBJECT ÄRAWÆACE = ÒOTÄRAW+3;ÄRAW SINGLE FACE (POLYGON) * OBJ3D TABLES ÏÂÃÅΠ= $5781à;ÃENTER OBJECT # à;ÎOTE: WILL BUG IF 128 VIS OBJS cx = $5800à;rOTATED/RELATIVECENTERS hcx = $5880 cy = $5900 hcy = $5980 cz = $5Á00 hcz = $5Á80 plistx equ $5Â00à;pOINT LISTS (PROJECTED) plisty equ $5Ã00 ÐÌÉÓÔÚ ÅÑÕ $5Ä00 * LIB3D STUFF ÃÁÌÃÍÁÔ equ $8800 ÁÃÃÒÏÔØ equ $8803 ÁÃÃÒÏÔÙ equ $8806 ÁÃÃÒÏÔÚ equ $8809 ÇÌÏÂÒÏÔ equ $880c ÒÏÔÐÒÏÊ equ $880f ÐÏÌÙÆÉÌÌ equ $8812 ÐÌÏÔ ÅÑÕ $8815 ÄÒÁ×ÌÉÎÅ ÅÑÕ $8818 ÖÅÒÓÉÏΠÅÑÕ $881 ÐÑ equ $0200à;pOINT QUEUE ÆÉÌÌÐÁÔ = $ÂÂà;ÐATTERN TABLE POINTER ÖÉÅ×ÍÁÔ = $4Á ØÏÆÆÓÅÔ = $53à;ÃENTER OF SCREEN ÙÏÆÆÓÅÔ = $54 * ÔABLES ÍÕÌÔÌÏ ÅÑÕ $Ã100à;TABLE OF X^2 ÍÕÌÔÈÉ ÅÑÕ $Ã400 *=============================== ÂÌÁÈ = $02 TEMP = $58 POINT = $5Aà;TWO BYTES Ø1 = $60à;ÌINE X-COORD Ù1 = $62 Ø2 = $64 Ù2 = $66 * * ÈANDLE THE ASTEROID FIELD. * * ÔHE FIELD IS CHARACTERIZED BY A "DENSITY", WHICH DETERMINES THE TOTAL MASS * OF THIS PART OF THE FIELD. ÔHE ENTIRE FIELD IS NOT KEPT TRACK OF; RATHER, * THE FIELD ONLY EXISTS IN A SMALL AREA SURROUNDING THE PLAYER. * * ÁLGORITHM HAS THREE PARTS: * 1) ÉF BELOW DENSITY THEN CREATE NEW ASTEROIDS. * 2) ÄRIFT ASTEROIDS * 3) ÃHECK FOR COLLISIONS * * ÏÂÓ = $0800à;ÏBJECT RECORDS ÔÁÂ1 = $0700à;TEMPORARY TABLE ÇÅÔÉΠ= $ÆÆÅ4 ÓTROIDS  ÊÓÒ ÉNIT  ÌÄÁ #00  ÓÔÁ ÃÕÒÄ :LOOP  ÊÓÒ ÃHECKÄENSITY  ÊÓÒ ÄRIFTÓTROIDS  ÊÓÒ ÓETÒADAR  ÌÄØ ÖÏÂà;ÃALCULATE VIEW  ÊÓÒ ÃALCÖIEW  ÊÓÒ ÓORTÖISà;ÓORT OBJECTS  ÊÓÒ ÄRAWÁLLÖISà;ÄRAW OBJECTS  ÊÓÒ ÄRAWÒADAR  ÊÓÒ ÃHECKÆIRE  ÊÓÒ ÓWAPÂUF  ÌÄØ ÒÏÂà;ÓET ROTATION OBJECT  ÊÓÒ ÓETÃURÏB  ÌÄÁ ÖÅÌÏÃÉÔÙ  ÊÓÒ ÍOVEÆORWARDS :WAIT ÌÄÁ ÉÒÑÆÌÁÇ  ÂÅÑ :WAIT  ÌÄÁ #00  ÓÔÁ ÉÒÑÆÌÁÇ  ÊÓÒ ÇÅÔÉÎ  ÃÍР#'A'  ÂÅÑ :PITCHDN  ÃÍР#'Z'  ÂÅÑ :PITCHUP  ÃÍР#'Q'  ÂÅÑ :ROLLL  ÃÍР#'W'  ÂÅÑ :ROLLR  ÃÍР#'S'  ÂÅÑ :YAWL  ÃÍР#'D'  ÂÅÑ :YAWR  ÃÍР#'@'  ÂÅÑ :INCVEL  ÃÍР#'/'  ÂÅÑ :DECVEL  ÃÍР#'+'  ÂÅÑ :INCDENS  ÃÍР#'-'  ÂÅÑ :DECDENS  ÃÍР#'='  ÂÅÑ :WIRE  ÃÍР#' '  ÂÅÑ :SWAP  ÃÍР#'R'  ÂÅÑ :RAD  ÌÄØ ÊÏÙ  ÂÎÅ :JOYSTICK  ÂÅÑ :LOOP :SWAP ÌÄØ ÖÏÂà;ÓWAP VIEWPOINT  ÊÓÒ ÓETÃURÏB  ÊÓÒ ÇETÎEXTÏB  ÓÔØ ÖÏ  ÊÍР:LOOP :WIRE ÌÄÁ ÓÏÌÉÄÐÏÌ  ÅÏÒ #$80  ÓÔÁ ÓÏÌÉÄÐÏÌ  ÊÍР:LOOP :YAWR ÃÌà  ÄÆÂ $24 :YAWL ÓÅà  ÊÓÒ ÙAW  ÊÍР:LOOP :PITCHUP ÃÌà  ÄÆÂ $24 :PITCHDN ÓÅà  ÊÓÒ ÐITCH  ÊÍР:LOOP :ROLLL ÃÌà  ÄÆÂ $24 :ROLLR ÓÅà  ÊÓÒ ÒOLL  ÊÍР:LOOP :INCDENS ÉÎàÄÅÎÓÉÔÙ  ÊÍР:LOOP :DECDENS ÄÅàÄÅÎÓÉÔÙ  ÊÍР:LOOP :INCVEL ÉÎàÖÅÌÏÃÉÔÙ  ÊÍР:LOOP :DECVEL ÄÅàÖÅÌÏÃÉÔÙ  ÊÍР:LOOP :RAD ÌÄÁ ÒÁÄÆÌÁÇ  ÅÏÒ #$80  ÓÔÁ ÒÁÄÆÌÁÇ  ÊÍР:LOOP :JOYSTICK  ÔØÁ  ÁÎÄ #$01  ÂÎÅ :PITCHDN  ÔØÁ  ÁÎÄ #$02  ÂÎÅ :PITCHUP  ÔØÁ  ÁÎÄ #$04  ÂÎÅ :YAWL  ÔØÁ  ÁÎÄ #$08  ÂÎÅ :YAWR  ÊÍР:LOOP ÖÅÌÏÃÉÔÙ ÄÆÂ 00 * * ÄRAWÒADAR -- ÃOMPUTE AND DRAW RADAR * DISPLAY, BY CREATING A NEW OBJECT WHOSE POINTS ARE SIMPLY THE * (SCALED) OBJECT CENTERS. * ÒÁÄÏÆÆ = 24à;ÓIZE OF RADAR ÒÁÄÆÌÁÇ ÄÆÂ #$00à;ÒADAR TOGGLE ÉÄÅÎÔÉÔÙ ÄÆÂ 64,0,0à;ÉDENTITY MATRIX  ÄÆÂ 0,64,0  ÄÆÂ 0,0,64 * ÓET RADAR CENTER TO VIEW CENTER ÓETÒADAR  ÌÄØ ÖÏ  ÊÓÒ ÓETÃURÏB  ÓÔÁ ÔÅÍÐ  ÓÔÙ ÔÅÍÐ+1  ÌÄØ #00  ÊÓÒ ÓETÃURÏB  ÓÔÁ ÐÏÉÎÔ  ÓÔÙ ÐÏÉÎÔ+1  ÌÄÙ #5 :L ÌÄÁ (ÔÅÍÐ),Ù  ÓÔÁ (ÐÏÉÎÔ),Ù  ÄÅÙ  ÂÐÌ :L RTS2 ÒÔÓ ÄRAWÒADAR  ÌÄÁ ÒÁÄÆÌÁÇ  ÂÍÉ RTS2  ÌÄØ #00  ÊÓÒ ÇETÏBJ  ÓÔÁ ÐÏÉÎÔ  ÓÔÙ ÐÏÉÎÔ+1  ÌÄÙ #ÏBÃENÐOS  ÌÄÁ (ÐÏÉÎÔ),Ù  ÔÁØ  ÌÄÁ #200à;ÆIRST, CHEAT THE CENTER  ÓÔÁ ÃÚ,Øà;BY PUTTING IT AT (0,0,200); NOTE RADAR IS OBJECT 0  ÌÄÁ #03à;(SO PROJECTION WILL WORK OUT CORRECTLY -- DON'T WANT  ÓÔÁ ÈÃÚ,Øà;NEGATIVE POINTS!)  ÌÄØ #8 :L1 ÌÄÁ ÉÄÅÎÔÉÔÙ,Ø  ÓÔÁ ÖÉÅ×ÍÁÔ,Øà;ÄON'T ADD ANY EXTRA VIEWPOINT ROTATION  ÄÅØ  ÂÐÌ :L1  ÌÄØ ÎÕÍÏÂÊÓ  ÄÅØ  ÓÔØ ÒÁÄÏÂÊ+1à;ÎUMBER OF POINTS  ÔØÁ  ÃÌà  ÁÄà#<ÒÁÄÄÁÔ  ÓÔÁ ÔÅÍÐà;Y-COORDS  ÌÄÁ #>ÒÁÄÄÁÔ  ÁÄà#00  ÓÔÁ ÔÅÍÐ+1  ÔØÁ  ÁÄàÔÅÍÐ  ÓÔÁ ÐÏÉÎÔà;Z-COORDS  ÌÄÁ ÔÅÍÐ+1  ÁÄà#00  ÓÔÁ ÐÏÉÎÔ+1  ÌÄÙ #00à;ÏRDER DOESN'T MATTER :LOOP  ÌÄÁ ÃØ,Ø  ÓÔÁ Ø1  ÌÄÁ ÈÃØ,Ø  ÊÓÒ ÄÉÖ8Ø1  ÓÔÁ ÒÁÄÄÁÔ,Ù  ÌÄÁ ÃÙ,Ø  ÓÔÁ Ø1  ÌÄÁ ÈÃÙ,Ø  ÊÓÒ ÄÉÖ8Ø1  ÓÔÁ (ÔÅÍÐ),Ù  ÌÄÁ ÃÚ,Ø  ÓÔÁ Ø1  ÌÄÁ ÈÃÚ,Ø  ÓÔÁ ÔÁÂ1,Ùà;ÒEMEMBER SIGN  ÊÓÒ ÄÉÖ8Ø1  ÓÔÁ (ÐÏÉÎÔ),Ù  ÉÎÙ :SKIP ÄÅØ  ÂÎÅ :LOOPà;0 IS RADAR OBJECT  ÓÔÙ ÒÁÄÏÂÊ+1à;ÎUMBER OF POINTS  ÌÄÁ ØÏÆÆÓÅÔà;ÃHANGE COORDINATE OFFSETS  ÐÈÁ  ÌÄÁ ÙÏÆÆÓÅÔ  ÐÈÁ  ÌÄÁ #ÒÁÄÏÆÆ  ÓÔÁ ØÏÆÆÓÅÔà;ÕPPER-LEFT CORNEROF SCREEN  ÓÔÁ ÙÏÆÆÓÅÔ  ÌÄØ #00  ÊÓÒ ÒOTÄRAW  ÐÌÁ  ÓÔÁ ÙÏÆÆÓÅÔ  ÐÌÁ  ÓÔÁ ØÏÆÆÓÅÔ :LOOP2 ÌÄÙ ÒÁÄÏÂÊ+1à;ÎOW PLOT EACH POINT  ÄÅÙ  ÌÄÁ ÐÌÉÓÔØ,Ù  ÓÔÁ Ø1  ÌÄÁ ÐÌÉÓÔØ+$80,Ù  ÓÔÁ Ø1+1  ÌÄÁ ÐÌÉÓÔÙ,Ù  ÓÔÁ Ù1  ÌÄÁ ÐÌÉÓÔÙ+$80,Ù  ÓÔÁ Ù1+1  ÌÄÁ #ÒÁÄÏÆÆà;ÌINE FROM CENTER TO POINT  ÓÔÁ Ø2  ÓÔÁ Ù2  ÌÄÁ #00  ÓÔÁ Ø2+1  ÓÔÁ Ù2+1  ÌÄÁ #<ÃÏÌÏÒ2à;ÓET FILL PATTERN  ÓÔÁ ÆÉÌÌÐÁÔ  ÌÄÁ #>ÃÏÌÏÒ2  ÓÔÁ ÆÉÌÌÐÁÔ+1  ÌÄÁ ÔÁÂ1,Ùà;ÕSE DIFFERENT COLORS  ÂÍÉ :DRAWà;FOR FRONT/BACK  ÌÄÁ #<ÃÏÌÏÒ1  ÓÔÁ ÆÉÌÌÐÁÔ  ÌÄÁ #>ÃÏÌÏÒ1  ÓÔÁ ÆÉÌÌÐÁÔ+1 :DRAW ÊÓÒ ÄRAWÌINE * ÊÓÒ ÐÌÏÔ ;ÁND PLOT!  ÄÅàÒÁÄÏÂÊ+1  ÂÎÅ :LOOP2 :RTS ÒÔÓà;×HEW! * * ÄIVIDE Ø1,.Á BY 8 AND NORMALIZE * ÄÉÖ8Ø1  ÃÍР#$80  ÒÏÒ  ÒÏÒ Ø1  ÃÍР#$80  ÒÏÒ  ÒÏÒ Ø1  ÃÍР#$80  ÒÏÒ  ÒÏÒ Ø1  ÁÎÄ #$ÆÆà;ÂÍÉ, ÂÅÑ ON EXIT  ÂÐÌ :POSà;ÃHECK BETWEEN -95..94  ÃÍР#$ÆÆ  ÂÎÅ :NEG95  ÌÄÁ Ø1  ÃÍР#0-96  ÂÃÓ :RTS :NEG95 ÌÄÁ #0-96à;FUDGE A BIT :RTS ÒÔÓ :POS ÂÎÅ :POS95  ÌÄÁ Ø1  ÃÍР#96  ÂÃà:RTS :POS95 ÌÄÁ #95  ÒÔÓ * * ÈANDLE FIRE SPECIAL * ÃHECKÆIRE  ÌÄÁ ÊÏÙ  ÁÎÄ #$10  ÂÎÅ ÌASE  ÓÔÁ ÌÃÏÕÎÔ RTS1 ÒÔÓ ÌÃÏÕÎÔ ÄÆÂ 00 ÌASE  ÉÎàÌÃÏÕÎÔ  ÌÄÁ ÌÃÏÕÎÔ  ÁÎÄ #$03  ÂÅÑ RTS1  ÌÄÁ #00  ÓÔÁ Ù1+1  ÓÔÁ Ù2+1  ÓÔÁ Ø2+1  ÓÔÁ Ø1+1à;ÁSSUME LINE FROM LEFT  ÓÔÁ Ø1  ÌÄÁ #199  ÓÔÁ Ù1  ÌÄÁ #99  ÓÔÁ Ù2  ÌÄÁ ÓÃÒÃÅÎ  ÓÔÁ Ø2  ÌÄÁ #<ÐÁÔÓà;ÕSE SOLID PATTERN  ÓÔÁ ÆÉÌÌÐÁÔ  ÌÄÁ #>ÐÁÔÓ  ÓÔÁ ÆÉÌÌÐÁÔ+1  ÌÄÁ ÌÃÏÕÎÔ  ÁÎÄ #$04  ÂÅÑ :DRAW  ÌÄÁ Ø2à;ÄRAW FROM RIGHT  ÁÓÌà;CENTER*2  ÓÔÁ Ø1  ÒÏÌ Ø1+1 :DRAW ÊÍРÄRAWÌINE * * ÔHE ÍY ROUTINES -- BASICALLY * JUST KEEP TRACK OF NUMBER OF * OBJECTS (YEP, SHOULD HAVE INCLUDED AN * OBJ3D FUNCTION TO DO THIS. * ÎÕÍÏÂÊÓ ÄÆÂ 00 ÍYÁDDÏBJ  ÉÎàÎÕÍÏÂÊÓ  ÊÍРÁDDÏBJ ÍYÄELÏBJ  ÄÅàÎÕÍÏÂÊÓ  ÊÍРÄELÏBJ * * ÄENSITY -- ÃHECK IF WE ARE AT THE RIGHT DENSITY. * ÉF NOT, THEN CREATE NEW ASTEROIDS. * ÄÅÎÓÉÔÙ ÄÆÂ 15 ÃÕÒÄ ÄÆÂ 00à;ÃURRENT DENSITY ÃHECKÄENSITY  ÌÄÁ $ÄÃ04à;ÓEMI-RANDOM  ÁÎÄ #$07  ÂÅÑ RTS1  ÔÁØà;×IEGHT  ÃÌà  ÁÄàÃÕÒÄ  ÃÍРÄÅÎÓÉÔÙ  ÂÃÓ RTS1à;ÄON'T ALWAYS CREATE ONE  ÓÔÁ ÃÕÒÄ  ÌÄÁ #<ÓÍÁÌÌÏÂÊ  ÌÄÙ #>ÓÍÁÌÌÏÂÊ  ÃÐØ #1  ÂÅÑ :CREATE  ÌÄÁ #<ÍÅÄÏÂÊ  ÌÄÙ #>ÍÅÄÏÂÊ  ÃÐØ #4  ÂÃà:CREATE  ÌÄÁ #<ÂÉÇÁÓÓ  ÌÄÙ #>ÂÉÇÁÓÓ :CREATE ÊÓÒ ÍYÁDDÏBJà;×EIGHT IS ÉÄ  ÓÔÁ ÐÏÉÎÔ  ÓÔÙ ÐÏÉÎÔ+1  ÊÓÒ ÎEWÃOORD  ÌÄÙ #00  ÓÔÁ (ÐÏÉÎÔ),Ù  ÉÎÙ  ÔØÁ  ÓÔÁ (ÐÏÉÎÔ),Ù  ÊÓÒ ÎEWÃOORD  ÉÎÙ  ÓÔÁ (ÐÏÉÎÔ),Ù  ÉÎÙ  ÔØÁ  ÓÔÁ (ÐÏÉÎÔ),Ù  ÊÓÒ ÎEWÃOORD  ÉÎÙ  ÓÔÁ (ÐÏÉÎÔ),Ù  ÉÎÙ  ÔØÁ  ÓÔÁ (ÐÏÉÎÔ),Ù  ÌÄÁ $ÄÃ04  ÂÐÌ :AND  ÏÒÁ #$Æ8  ÄÆÂ $2à :AND ÁÎÄ #$07  ÏÒÁ #01  ÌÄÙ #ÏBJÕSERà;ÖELOCITY  ÓÔÁ (ÐÏÉÎÔ),Ù  ÊÓÒ ÒANDY  ÐÈÁ  ÊÓÒ ÒANDY  ÐÈÁ  ÊÓÒ ÒANDY  ÔÁØ  ÐÌÁ  ÔÁÙ  ÐÌÁ  ÊÓÒ ÓETÍATà;ÒANDOM ORIENTATION  ÊÍРÃHECKÄENSITY * * ÇENERATE A COORDINATE OFFSET IN .ÁØ * ÎEWÃOORD  ÊÓÒ ÒANDY  ÌÄØ #$01  ÌÓÒ  ÂÃà:ROL  ÌÄØ #$ÆÅ :ROL ÒÏÌ  ÒÔÓ * * ÒANDY -- ÇENERATE A RANDOM NUMBER USING MIDDLE-SQUARES * ÁÒÌÅÎ ÄÆÂ 00à;ÍAX SEQUENCE LENGTH ÒÁÎÄ ÄÆÂ 00 ÒANDY  ÓÔÙ ÔÅÍÐ+1  ÄÅàÁÒÌÅÎ  ÂÐÌ :GRAND  ÌÄÁ $ÄÃ04à;ÒE-SEED  ÏÒÁ #$10à;ÍAKE SURE NONZERO  ÓÔÁ ÒÁÎÄ  ÌÄÁ #30  ÓÔÁ ÁÒÌÅÎ :GRAND ÌÄÙ ÒÁÎÄ  ÌÄÁ ÍÕÌÔÈÉ,Ù  ÓÔÁ ÔÅÍÐ  ÌÄÁ ÍÕÌÔÌÏ,Ùà;.Á,ÔÅÍÐ = X^2/4  ÌÓÒ ÔÅÍÐ  ÒÏÒ  ÌÓÒ ÔÅÍÐ  ÒÏÒà;ÎOW = MIDDLE 8 BITS  ÃÍРÒÁÎÄ  ÂÎÅ :STA  ÅÏÒ #%10101010 :STA ÓÔÁ ÒÁÎÄ  ÌÄÙ ÔÅÍÐ+1  ÒÔÓ * * ÄRIFTÓTROIDS * * ÇOES THROUGH ALL ASTEROIDS, MOVING * EACH FORWARDS. ÁSTEROIDS WHICH DRIFT * OUT OF THE PLAY AREA ARE REMOVED. * ÄRIFTÓTROIDS  ÌÄØ #00à;ÁLWAYS PRESENT  ÊÓÒ ÓETÃURÏB :LOOP ÊÓÒ ÇETÎEXTÏB  ÓÔÁ ÐÏÉÎÔ  ÓÔÙ ÐÏÉÎÔ+1  ÔØÁ  ÂÅÑ :RTS  ÌÄÙ #ÏBJÉÄ  ÌÄÁ (ÐÏÉÎÔ),Ù  ÂÍÉ :LOOPà;ÆIND FIRST STROID  ÌÄÙ #ÏBJÕSER  ÌÄÁ (ÐÏÉÎÔ),Ùà;ÖELOCITY  ÊÓÒ ÍOVEÆORWARDS  ÌÄÙ #01à;ÃHECK IF LEFT PLAY AREA  ÌÄÁ (ÐÏÉÎÔ),Ù  ÂÐÌ :C1  ÅÏÒ #$ÆÆ  ÃÌà  ÁÄà#01 :C1 ÃÍР#06à;ÁROUND 3000 UNITS WIDE TOTAL  ÂÃÓ :DEL  ÌÄÙ #03  ÌÄÁ (ÐÏÉÎÔ),Ù  ÂÐÌ :C2  ÅÏÒ #$ÆÆ  ÃÌà  ÁÄà#01 :C2 ÃÍР#06  ÂÃÓ :DEL  ÌÄÙ #05  ÌÄÁ (ÐÏÉÎÔ),Ù  ÂÐÌ :C3  ÅÏÒ #$ÆÆ  ÃÌà  ÁÄà#01 :C3 ÃÍР#06  ÂÃà:LOOP :DEL  ÌÄÙ #ÏBJÉÄà;ÒETURN MASS  ÌÄÁ ÃÕÒÄ  ÓÂà(ÐÏÉÎÔ),Ù  ÓÔÁ ÃÕÒÄ  ÊÓÒ ÇETÃURÏBà;ÓET .Ø  ÊÓÒ ÍYÄELÏBJ  ÊÍР:LOOP :RTS ÒÔÓ * * ÉÒÑ ROUTINE * ÉÒÑÆÌÁÇ ÄÆÂ 00 ÊÏÙ ÄÆÂ 00 ÆÉÒÅ ÄÆÂ 00 ÈÉÔ ÄÆÂ 00 ÅØÐÌÏÄÅ ÄÆÂ 00 ÔÈÒÕÓÔ ÄÆÂ 00 ÉÒÑ  ÉÎàÉÒÑÆÌÁÇ  ÌÄÁ $ÄÃ00  ÅÏÒ #$ÆÆ  ÁÎÄ #$1Æ  ÓÔÁ ÊÏÙ  ÌÄÁ ÆÉÒÅ  ÂÅÑ :C1  ÊÓÒ ÓOUNDÆIRE :C1 ÌÄÁ ÈÉÔ  ÂÅÑ :C2  ÊÓÒ ÓOUNDÈIT :C2 ÌÄÁ ÅØÐÌÏÄÅ  ÂÅÑ :C3  ÊÓÒ ÓOUNDÅXPLODE :C3 ÌÄÁ ÔÈÒÕÓÔ  ÂÅÑ :BYE  ÊÓÒ ÓOUNDÔHRUST :BYE ÊÍР$ÅÁ7 ÓOUNDÆIRE ÓOUNDÈIT ÓOUNDÅXPLODE ÓOUNDÔHRUST  ÒÔÓ * * ÉNIT CODE * ÓÃÒÃÅÎ ÄÆÂ 00 ÓÏÌÉÄÐÏÌ ÄÆÂ $80 ÉNIT  ÓÅÉ  ÌÄÁ #<ÉÒÑ  ÓÔÁ $0314  ÌÄÁ #>ÉÒÑ  ÓÔÁ $0315  ÃÌÉ  ÌÄÁ #$76  ÓÔÁ $01  ÌÄÁ $Ä011  ÏÒÁ #$20à;ÂITMAP MODE  ÓÔÁ $Ä011  ÌÄÁ #$08à;ÂITMAP -> $6000  ÓÔÁ $Ä018  ÌÄÁ $ÄÄ00  ÁÎÄ #$Æ8  ÏÒÁ #$02à;ÂANK 1  ÓÔÁ $ÄÄ00  ÌÄÁ #$80  ÓÔÁ $028Áà;ÁLL KEYS REPEAT  ÌÄÁ #00  ÓÔÁ ÎÕÍÏÂÊÓ  ÓÔÁ ÖÅÌÏÃÉÔÙ  ÊÓÒ ÖÅÒÓÉÏÎà;ÉF MULTICOLOR...  ÂÐÌ :HIRES  ÌÄÁ $Ä016  ÏÒÁ #$10  ÓÔÁ $Ä016  ÌÄÁ #79  ÄÆÂ $2à :HIRES ÌÄÁ #159  ÓÔÁ ÓÃÒÃÅÎ  ÊÓÒ ÃLRÃOLÍAP  ÌÄÁ #<ÏÂÓà;ÏBJECT RECORDS  ÌÄÙ #>ÏÂÓ  ÊÓÒ ÉNIT3Ä  ÌÄÁ #<ÒÁÄÏÂÊ  ÌÄÙ #>ÒÁÄÏÂÊ  ÌÄØ #$ÆÆ  ÊÓÒ ÍYÁDDÏBJà;ÒADAR OBJECT = OBJECT 0  ÌÄÁ #<ÔÅÔÄÁÔà;ÏBJECT DATA  ÌÄÙ #>ÔÅÔÄÁÔ  ÌÄØ #$80à;ÉÄ  ÊÓÒ ÍYÁDDÏBJ  ÓÔØ ÖÏÂà;ÖIEW OBJECT  ÌÄÁ #<ÓÔÁÒÄÁÔ  ÌÄÙ #>ÓÔÁÒÄÁÔ  ÌÄØ #$81  ÊÓÒ ÍYÁDDÏBJ  ÓÔØ ÒÏÂà;ÒOTATE OBJECT  ÓÔÁ ÐÏÉÎÔà;ÏBJECT POINTER  ÓÔÙ ÐÏÉÎÔ+1  ÌÄÙ #5à;ÓET CENTER :L1 ÌÄÁ ÏÃÅÎ,Ù  ÓÔÁ (ÐÏÉÎÔ),Ù  ÄÅÙ  ÂÐÌ :L1 * ÓET UP BITMAP, POINTERS ETC. ÓWAPÂUFà;ÓWAP BUFFERS AND CLEAR  ÌÄÁ $ÄÄ00  ÅÏÒ #$03  ÓÔÁ $ÄÄ00  ÌÄØ #$60à;ÂITMAP AT $6000 OR $Á000  ÌÓÒ  ÂÃÓ :SETP  ÌÄØ #$Á0 :SETP ÌÄÁ ÓÏÌÉÄÐÏÌà;ÓOLID POLYGONS  ÃÍР#$80  ÌÄÁ #<ÐÁÔÓà;ÐATTERN TABLE  ÌÄÙ #>ÐÁÔÓ  ÊÓÒ ÓETÐARMS ÃLRÂITMAP  ÃÐØ #$Á0  ÂÅÑ :CLEARA  ÌÄÙ #00  ÔÙÁ :LOOP ÓÔÁ $6000,Ù  ÓÔÁ $6100,Ù  ÓÔÁ $6200,Ù  ÓÔÁ $6300,Ù  ÓÔÁ $6400,Ù  ÓÔÁ $6500,Ù  ÓÔÁ $6600,Ù  ÓÔÁ $6700,Ù  ÓÔÁ $6800,Ù  ÓÔÁ $6900,Ù  ÓÔÁ $6Á00,Ù  ÓÔÁ $6Â00,Ù  ÓÔÁ $6Ã00,Ù  ÓÔÁ $6Ä00,Ù  ÓÔÁ $6Å00,Ù  ÓÔÁ $6Æ00,Ù  ÓÔÁ $7000,Ù  ÓÔÁ $7100,Ù  ÓÔÁ $7200,Ù  ÓÔÁ $7300,Ù  ÓÔÁ $7400,Ù  ÓÔÁ $7500,Ù  ÓÔÁ $7600,Ù  ÓÔÁ $7700,Ù  ÓÔÁ $7800,Ù  ÓÔÁ $7900,Ù  ÓÔÁ $7Á00,Ù  ÓÔÁ $7Â00,Ù  ÓÔÁ $7Ã00,Ù  ÓÔÁ $7Ä00,Ù  ÓÔÁ $7Å00,Ù  ÓÔÁ $7Æ00,Ù  ÉÎÙ  ÂÎÅ :LOOP  ÒÔÓ :CLEARA  ÌÄÙ #00  ÔÙÁ :LOOP2 ÓÔÁ $Á000,Ù  ÓÔÁ $Á100,Ù  ÓÔÁ $Á200,Ù  ÓÔÁ $Á300,Ù  ÓÔÁ $Á400,Ù  ÓÔÁ $Á500,Ù  ÓÔÁ $Á600,Ù  ÓÔÁ $Á700,Ù  ÓÔÁ $Á800,Ù  ÓÔÁ $Á900,Ù  ÓÔÁ $ÁÁ00,Ù  ÓÔÁ $ÁÂ00,Ù  ÓÔÁ $ÁÃ00,Ù  ÓÔÁ $ÁÄ00,Ù  ÓÔÁ $ÁÅ00,Ù  ÓÔÁ $ÁÆ00,Ù  ÓÔÁ $Â000,Ù  ÓÔÁ $Â100,Ù  ÓÔÁ $Â200,Ù  ÓÔÁ $Â300,Ù  ÓÔÁ $Â400,Ù  ÓÔÁ $Â500,Ù  ÓÔÁ $Â600,Ù  ÓÔÁ $Â700,Ù  ÓÔÁ $Â800,Ù  ÓÔÁ $Â900,Ù  ÓÔÁ $ÂÁ00,Ù  ÓÔÁ $ÂÂ00,Ù  ÓÔÁ $ÂÃ00,Ù  ÓÔÁ $ÂÄ00,Ù  ÓÔÁ $ÂÅ00,Ù  ÓÔÁ $ÂÆ00,Ù  ÉÎÙ  ÂÎÅ :LOOP2  ÒÔÓ ÃLRÃOLÍAPà;ÏNLY NEED TO CALL ONCE  ÌÄØ #00  ÌÄÁ #$12 :LOOP ÓÔÁ $4000,Ø  ÓÔÁ $4100,Ø  ÓÔÁ $4200,Ø  ÓÔÁ $4300,Ø  ÓÔÁ $8000,Ø  ÓÔÁ $8100,Ø  ÓÔÁ $8200,Ø  ÓÔÁ $8300,Ø  ÉÎØ  ÂÎÅ :LOOP  ÊÓÒ ÖÅÒÓÉÏÎ  ÂÐÌ :RTS  ÌÄÁ #00à;ÍULTICOLOR MODE  ÓÔÁ $Ä020  ÓÔÁ $Ä021  ÌÄÁ #14 :L2 ÓÔÁ $Ä800,Ø  ÓÔÁ $Ä900,Ø  ÓÔÁ $ÄÁ00,Ø  ÓÔÁ $ÄÂ00,Ø  ÉÎØ  ÂÎÅ :L2 :RTS ÒÔÓ ÖÏÂ ÄÆÂ 00à;ÖIEW OBJECT ÒÏÂ ÄÆÂ 00à;2ND OBJECT ÏÃÅΠÄÁ 00à;Ø-COORD  ÄÁ 00à;Ù-COORD  ÄÁ $0100à;Ú-COORD ÐÁÔÓà;ÐATTERN TABLE ÓÏÌÉÄ = 0  ÈÅØ ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆ ÄÉÔÈÅÒ1 = 1  ÈÅØ 55ÁÁ55ÁÁ55ÁÁ55ÁÁ ÄÉÔÈÅÒ2 = 2  ÈÅØ ÁÁ55ÁÁ55ÁÁ55ÁÁ55 ÚÉÇÓ = 3  ÈÅØ ÅÅÄÄÂÂ77ÅÅÄÄÂÂ77 ÚÁÇÓ = 4  ÈÅØ 77ÂÂÄÄÅÅ77ÂÂÄÄÅÅ ÚÉÇÚÁÇ = 5  hex ÂÂ55ÅÅÆÆÂÂ55ÅÅÆÆ ÃÒÏÓÓÓÍ = 6  ÈÅØ 55ÅÅ55ÂÂ55ÅÅ55 ÂÒÉÃË = 7  ÈÅØ 00ÅÅÅÅÅÅ00 ÓÑÕÁÒÅÓ = 8  ÈÅØ ÆÆÁÁÆÆÁÁÆÆÁÁÆÆÁÁ ÉÎÖÓÑ = 9  ÈÅØ 0055005500550055 ÈÏÌÅÓ = 10  ÈÅØ ÂÄ7ÅÅ7ÄÂÄÂÅ77ÅÂÄ ÈÓÔÒÉÐÅÓ = 11  ÈÅØ ÆÆ00ÆÆ00ÆÆ00ÆÆ00 ÖÓÔÒÉÐÅÓ = 12  ÈÅØ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ ÃÏÌÏÒ1 ÈÅØ 5555555555555555 ÃÏÌÏÒ2 ÈÅØ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ * * tEST OBJECT 1: SIMPLE TETRAHEDRON * ÂÉÇÁÓÓ ÔÅÔÄÁÔ  ÄÆÂ 0à;ÎORMAL OBJECT  ÄÆÂ 4à;ÎUMBER OF POINTS  ÄÆÂ 4à;ÎUMBER OF FACES * ÐOINT LIST ÔÅÔØ ÄÆÂ 52,52,0-52,0-52 tety ÄÆÂ 52,0-52,52,0-52 tetz ÄÆÂ 52,0-52,0-52,52 * ÆACE LIST ÆÁÃÅ1 ÄÆÂ 3à;ÎUMBER OF VERTICES  ÄÆÂ ÓÏÌÉÄà;ÆILL PATTERN  ÄÆÂ 0,1,2,0à;ÖERTICES ÆÁÃÅ2 ÄÆÂ 3  ÄÆÂ ÚÉÇÓ  ÄÆÂ 3,2,1,3 ÆÁÃÅ3 ÄÆÂ 3  ÄÆÂ ÃÒÏÓÓÓÍ  ÄÆÂ 3,0,2,3 ÆÁÃÅ4 ÄÆÂ 3  ÄÆÂ ÈÏÌÅÓ  ÄÆÂ 3,1,0,3 * * tEST OBJECT 2: MEDIUM OBJECT * ÍÅÄÏÂÊ  ÄÆÂ 0à;ÎORMAL OBJECT  ÄÆÂ 4à;ÎUMBER OF POINTS  ÄÆÂ 4à;ÎUMBER OF FACES * ÐOINT LIST  ÄÆÂ 30,30,0-30,0-30  ÄÆÂ 30,0-30,30,0-30  ÄÆÂ 30,0-30,0-30,30 * ÆACE LIST  ÄÆÂ 3à;ÎUMBER OF VERTICES  ÄÆÂ ÄÉÔÈÅÒ1à;ÆILL PATTERN  ÄÆÂ 0,1,2,0à;ÖERTICES  ÄÆÂ 3  ÄÆÂ ÄÉÔÈÅÒ2  ÄÆÂ 3,2,1,3  ÄÆÂ 3  ÄÆÂ ÂÒÉÃË  ÄÆÂ 3,0,2,3  ÄÆÂ 3  ÄÆÂ ÓÏÌÉÄ  ÄÆÂ 3,1,0,3 * * ÏBJECT 3: SMALL OBJECT * ÓÍÁÌÌÏÂÊ  ÄÆÂ 0à;ÎORMAL OBJECT  ÄÆÂ 4à;ÎUMBER OF POINTS  ÄÆÂ 4à;ÎUMBER OF FACES * ÐOINT LIST  ÄÆÂ 10,10,0-10,0-10  ÄÆÂ 10,0-10,10,0-10  ÄÆÂ 10,0-10,0-10,10 * ÆACE LIST  ÄÆÂ 3à;ÎUMBER OF VERTICES  ÄÆÂ ÚÉÇÓà;ÆILL PATTERN  ÄÆÂ 0,1,2,0à;ÖERTICES  ÄÆÂ 3  ÄÆÂ ÚÁÇÓ  ÄÆÂ 3,2,1,3  ÄÆÂ 3  ÄÆÂ ÈÓÔÒÉÐÅÓ  ÄÆÂ 3,0,2,3  ÄÆÂ 3  ÄÆÂ ÖÓÔÒÉÐÅÓ  ÄÆÂ 3,1,0,3 * * ÔEST OBJECT 2: A COMPOUND OBJECT, * SPACESHIP-KIND OF THING (ESSENTIALLY * COOL WORLD STARS) * ÓÔÁÒÄÁÔ  ÄÆÂ $80à;ÃOMPOUND OBJECT  ÄÆÂ 14à;ÎUMBER OF POINTS  ÄÆÂ 6à;ÎUMBER OF OBLETS * ÐOINT LIST  ÄÆÂ 50,0-50,0,0,0,0,15,15,15,15,0-15,0-15,0-15,0-15  ÄÆÂ 0,0,16,0-26,0,0,10,10,0-10,0-10,10,10,0-10,0-10  ÄÆÂ 0,0,0,0,94,0-22,15,0-15,0-15,15,15,0-15,0-15,15 * ÏBLET LIST: REFERENCE POINTS  ÄÆÂ 0à;ÆIRST 6 POINTS  ÄÆÂ 1  ÄÆÂ 2  ÄÆÂ 3  ÄÆÂ 4  ÄÆÂ 5 * ÏBLET 1  ÄÆÂ 26à;26 BYTES  ÄÆÂ 4à;4 FACES * FACES  ÄÆÂ 3à;4 POINTS  ÄÆÂ ÓÏÌÉÄà;PATTERN  dfb 0,8,7,0à;sTAR 2, tINE 0, FACE 1  ÄÆÂ 3  ÄÆÂ ÚÉÇÓ  ÄÆÂ 0,7,6,0  ÄÆÂ 3  ÄÆÂ ÚÁÇÓ  ÄÆÂ 0,6,9,0  ÄÆÂ 3  ÄÆÂ ÄÉÔÈÅÒ1  ÄÆÂ 0,9,8,0 * ÏBLET 2  ÄÆÂ 26à;26 BYTES  ÄÆÂ 4à;4 FACES  ÄÆÂ 3à;4 POINTS  ÄÆÂ ÚÉÇÓ  ÄÆÂ 1,11,12,1  ÄÆÂ 3  ÄÆÂ ÂÒÉÃË  ÄÆÂ 1,12,13,1  ÄÆÂ 3  ÄÆÂ ÄÉÔÈÅÒ2  ÄÆÂ 1,13,10,1  ÄÆÂ 3  ÄÆÂ ÚÁÇÓ  ÄÆÂ 1,10,11,1 * ÏBLET 3  ÄÆÂ 26à;26 BYTES  ÄÆÂ 4à;4 FACES  ÄÆÂ 3  ÄÆÂ ÓÑÕÁÒÅÓ  ÄÆÂ 2,7,11,2  ÄÆÂ 3  ÄÆÂ ÉÎÖÓÑ  ÄÆÂ 2,6,7,2  ÄÆÂ 3  ÄÆÂ ÄÉÔÈÅÒ1  ÄÆÂ 2,10,6,2  ÄÆÂ 3  ÄÆÂ ÄÉÔÈÅÒ2  ÄÆÂ 2,11,10,2 * ÏBLET 4  ÄÆÂ 26  ÄÆÂ 4  ÄÆÂ 3  ÄÆÂ ÃÒÏÓÓÓÍ  ÄÆÂ 3,12,8,3  ÄÆÂ 3  ÄÆÂ ÈÏÌÅÓ  ÄÆÂ 3,8,9,3  ÄÆÂ 3  ÄÆÂ ÖÓÔÒÉÐÅÓ  ÄÆÂ 3,9,13,3  ÄÆÂ 3  ÄÆÂ ÓÏÌÉÄ  ÄÆÂ 3,13,12,3 * ÏBLET 5  ÄÆÂ 26à;26 BYTES  ÄÆÂ 4à;4 FACES  ÄÆÂ 3  ÄÆÂ ÄÉÔÈÅÒ1  ÄÆÂ 4,9,6,4  ÄÆÂ 3  ÄÆÂ ÓÏÌÉÄ  ÄÆÂ 4,6,10,4  ÄÆÂ 3  ÄÆÂ ÄÉÔÈÅÒ2  ÄÆÂ 4,10,13,4  ÄÆÂ 3  ÄÆÂ ÈÓÔÒÉÐÅÓ  ÄÆÂ 4,13,9,4 * ÏBLET 6  ÄÆÂ 26à;26 BYTES  ÄÆÂ 4à;4 FACES  ÄÆÂ 3  ÄÆÂ ÚÉÇÚÁÇ  ÄÆÂ 5,8,12,5  ÄÆÂ 3  ÄÆÂ ÈÓÔÒÉÐÅÓ  ÄÆÂ 5,12,11,5  ÄÆÂ 3  ÄÆÂ ÖÓÔÒÉÐÅÓ  ÄÆÂ 5,11,7,5  ÄÆÂ 3  ÄÆÂ ÄÉÔÈÅÒ2  ÄÆÂ 5,7,8,5 * * ÒADAR OBJECT. ÔO DO THE RADAR, AN OBJECT IS USED WHOSE POINTS ARE SIMPLY * THE TRANSLATED AND ROTATED OBJECT CENTERS. ÔHIS OBJECT IS THEN PROJECTED * USING THE OBJ3D ROUTINES, AND THE POINTS PLOTTED. * ÒÁÄÏÂÊ  ÄÆÂ 0à;ÎORMAL OBJECT  ÄÆÂ 0à;ÎUMBER OF POINTS  ÄÆÂ 0à;ÎUMBER OF FACES * ÐOINT LIST ÒÁÄÄÁÔ