 ** Ó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ÒÁÄÄÁÔ
