home *** CD-ROM | disk | FTP | other *** search
/ Fujiology Archive / fujiology_archive_v1_0.iso / !FALCON / LINEOUT / DELTA.ZIP / DELTASRC.ZIP / DELTA.SRC / RINGS.SO < prev    next >
Text File  |  2002-12-09  |  13KB  |  656 lines

  1. ; Concentric rings.. A screen for delta.
  2. ; Uses Ufly ofcourse.
  3.  
  4. ;======= OBJECT EQUATES ========
  5.  
  6. Rings.STEPS:        =    10
  7. Rings.RING_R:        =    100
  8. Rings.DELTA_ENV:    =    0
  9.  
  10. Rings.DIST:        =    500            ; distance between zooming rings
  11. Rings.Z_POS:        =    3500            ; z center of rings
  12. Rings.BUMPSIZE:        =    64
  13.  
  14.             RSRESET
  15. Rings.ring1:        RS.W    10000
  16. Rings.ring2:        RS.W    10000
  17. Rings.ring3:        RS.W    10000
  18. Rings.BLOCK_SIZE:    RS.B    0
  19.  
  20. ;======= OBJECT TABLE ========
  21.  
  22. ; Must be first in object!!
  23. Rings.table:
  24.     DC.L    Rings.mainLoop
  25.     DC.L    Rings.init
  26.     DC.L    Rings.setRes
  27.     DC.L    Rings.zoomIn
  28.     DC.L    Rings.triggerBump
  29.     DC.L    0
  30.  
  31.     IFND    DEMO_SYSTEM
  32.     INCLUDE    HFLY_DSP.S
  33.     TEXT
  34.     ENDC
  35.  
  36. ;======= RESOLUTION SETTING ROUTINE ========
  37.  
  38. Rings.setRes:
  39.     IFEQ    testmode
  40.     move.w    monitormode,d0
  41.     cmpi.w    #vga60,d0
  42.     beq.s    .vga60
  43.     cmpi.w    #vga100,d0
  44.     beq.s    .vga100
  45.     cmpi.w    #rgb50,d0
  46.     beq.s    .rgb50
  47. ; Unknown monitormode..
  48.     rts
  49. .vga60:    bra.l    vga60_16bit_320_200
  50. .vga100:bra.l    vga100_16bit_320_200
  51. .rgb50:    bra.l    rgb50_16bit_320_200
  52.     ENDC
  53.     rts
  54.  
  55. ;======= INIT SUBROUTINE ========
  56.  
  57. ; OUTPUT:
  58. ; d0.l: =0 all clear, <0 error
  59. Rings.init:
  60.     move.l    #Rings.BLOCK_SIZE,d0
  61.     bsr.l    Mem.register
  62.  
  63.     lea    sine_tbl,a1
  64.     bsr.l    Matrix.init
  65.  
  66. .success:
  67.     moveq    #0,d0
  68.     rts
  69. .error:    moveq    #-1,d0
  70.     rts
  71.  
  72. ;======= REALTIME INIT SUBROUTINE ========
  73.  
  74. Rings.realtimeInit:
  75.     move.l    #rts,vbl_gfx
  76.  
  77.     bsr.l    Mem.getBlock
  78.     move.l    d0,Rings.baseAdr
  79.  
  80.     bsr.l    HumanFly.init
  81.  
  82.     lea    Viewport.settingsTable,a0
  83.     move.w    #320,Viewport.XSCREEN(a0)
  84.     move.w    #200,Viewport.YSCREEN(a0)
  85.     move.w    #0,Viewport.XSTART(a0)
  86.     move.w    #0,Viewport.YSTART(a0)
  87.     move.w    #320,Viewport.XEND(a0)
  88.     move.w    #200,Viewport.YEND(a0)
  89.     move.w    #160,Viewport.XCENTER(a0)
  90.     move.w    #100,Viewport.YCENTER(a0)
  91.     move.w    #256+32,Viewport.ASPECT(a0)
  92.     move.w    #$100,Viewport.FOCAL(a0)
  93.     bsr.l    Viewport.update
  94.  
  95.     lea    Rings.textureTable,a0
  96.     bsr.l    Polygon.init
  97.  
  98.     bsr.l    ObjectRegistry.clear
  99.  
  100.     movea.l    Rings.baseAdr,a0
  101.     adda.l    #Rings.ring1,a0
  102.     move.w    #1400*2,d0
  103.     bsr.l    Rings.generate
  104. ; d0.l=size of ring
  105.  
  106.     movea.l    Rings.baseAdr,a0
  107.     adda.l    #Rings.ring1,a0
  108.     bsr.l    ObjectRegistry.set
  109.     tst.w    d0
  110.     bmi    .error
  111.  
  112.     movea.l    Rings.baseAdr,a0
  113.     adda.l    #Rings.ring2,a0
  114.     move.w    #1100*2,d0
  115.     bsr    Rings.generate
  116. ; d0.l=size of ring
  117.  
  118.     movea.l    Rings.baseAdr,a0
  119.     adda.l    #Rings.ring2,a0
  120.     bsr.l    ObjectRegistry.set
  121.     tst.w    d0
  122.     bmi.s    .error
  123.  
  124.     movea.l    Rings.baseAdr,a0
  125.     adda.l    #Rings.ring3,a0
  126.     move.w    #800*2,d0
  127.     bsr    Rings.generate
  128. ; d0.l=size of ring
  129.  
  130.     movea.l    Rings.baseAdr,a0
  131.     adda.l    #Rings.ring3,a0
  132.     bsr.l    ObjectRegistry.set
  133.     tst.w    d0
  134.     bmi.s    .error
  135.  
  136.     movea.l    Rings.baseAdr,a0
  137.     adda.l    #Rings.ring3,a0
  138.     move.w    #500*2,d0
  139.     bsr    Rings.generate
  140. ; d0.l=size of ring
  141.  
  142.     movea.l    Rings.baseAdr,a0
  143.     adda.l    #Rings.ring3,a0
  144.     bsr.l    ObjectRegistry.set
  145.     tst.w    d0
  146.     bmi.s    .error
  147.  
  148.     bsr    Rings.zoomIn
  149.  
  150. .success:
  151.     moveq    #0,d0
  152.     rts
  153. .error:    moveq    #-1,d0
  154.     rts
  155.  
  156. ;======= SCREENINIT SUBROUTINE ========
  157.  
  158. Rings.initScreen:
  159.     moveq    #0,d0
  160.     moveq    #56,d6
  161.     moveq    #0,d1
  162.     move.l    #200,d7
  163.     move.l    #$00000000,d4
  164.     bsr.l    Viewport.paintRectangle
  165.  
  166.     move.l    #320-56,d0
  167.     move.l    #320,d6
  168.     moveq    #0,d1
  169.     move.l    #200,d7
  170.     move.l    #$00000000,d4
  171.     bsr.l    Viewport.paintRectangle
  172.     rts
  173.  
  174. ;======= MAINLOOP SUBROUTINE ========
  175.  
  176. Rings.mainLoop:
  177.     move.w    $0468.w,.old468
  178.  
  179.     movea.l    scr,a0
  180.     bsr.l    Primitive.setScreenbuffer
  181.  
  182.     move.l    frmcnt,d0
  183.     sub.l    lastframecount,d0
  184.     bne.s    .end_realtime_init
  185.     move.l    d0,-(sp)
  186.     bsr.l    Rings.realtimeInit
  187.     tst.l    d0
  188.     bmi    .end
  189.     move.l    (sp)+,d0
  190. .end_realtime_init:
  191.     cmpi.l    #3,d0
  192.     bhs.s    .end_screeninit
  193.     bsr    Rings.initScreen
  194. .end_screeninit:
  195.  
  196. ; zoom shit..
  197.     tst.w    Rings.zoomOn
  198.     beq    .end_zoom
  199.     bsr    Rings.zoom
  200. .end_zoom:
  201.  
  202. ; bump shit..
  203.     tst.w    Rings.bumpOn
  204.     beq.s    .end_bump
  205.     bsr    Rings.bump
  206. .end_bump:
  207.  
  208.     tst.w    Rings.zoomOn
  209.     beq.s    .normal_speed
  210.     pea    Rings.nullSpeedTable        ; Push speedtable on stack.
  211.     bra.s    .paint
  212. .normal_speed:
  213.     pea    Rings.speedTable        ; Push speedtable on stack.
  214. .paint    bsr    Rings.paint
  215.     addq    #4,sp                ; Pop speedtable off stack.
  216.     
  217.     IFEQ    testmode
  218.     lea    scr,a0
  219.     move.l    (a0)+,d0
  220.     move.l    (a0)+,d1
  221.     move.l    (a0),-4(a0)
  222.     move.l    d0,(a0)
  223.     move.l    d1,-8(a0)
  224.     move.l    d0,d1
  225.     lsr.w    #8,d0
  226.     move.l    d0,$ffff8200.w
  227.     move.b    d1,$ffff820d.w
  228.     ENDC
  229.  
  230.     move.w    .old468(pc),d0
  231. .wait:    cmp.w    $0468.w,d0
  232.     beq.s    .wait
  233.  
  234.     move.l    frmcnt,d0
  235.     sub.l    lastframecount,d0
  236.     bne.s    .res_done
  237.     bsr    Rings.setRes
  238. .res_done:
  239.  
  240.     tst.w    Rings.zoomOn
  241.     bne.s    .end_cleartime
  242.     tst.w    Rings.clearTime
  243.     beq.s    .end_cleartime
  244.     subq.w    #1,Rings.clearTime
  245. .end_cleartime
  246.  
  247. .end:    rts
  248.  
  249. .old468:DC.W    0
  250.  
  251. ;======= OBJECT SUBROUTINES ========
  252.  
  253. Rings.zoomIn:
  254.     move.l    $04BA.w,Rings.zoomStart
  255.     move.w    #1,Rings.zoomOn
  256.     move.w    #1,Rings.clearTime
  257.     rts
  258.  
  259. Rings.triggerBump:
  260.     move.w    #1,Rings.bumpOn
  261.     move.l    $04BA.w,Rings.bumpStart
  262.     rts
  263.  
  264. ; INPUT:
  265. ; d0.w=r
  266. ; a0: objectbuffer
  267. ; OUTPUT:
  268. ; d0.l=size
  269. Rings.generate:
  270.     movea.l    a0,a6
  271.  
  272. ; Output vertices..
  273.     lea    sine_tbl,a1
  274.     movea.w    d0,a3
  275.  
  276.     move.w    #2*Rings.STEPS*4,(a0)+            ; #vertices+#normals
  277.     move.w    #Rings.STEPS*4,(a0)+            ; #normals
  278.  
  279.     lea    Rings.STEPS*4*Vertex.SIZE(a0),a2
  280.  
  281.     moveq    #4-1,d7
  282.  
  283. .ring_loop:
  284.     moveq    #Rings.STEPS-1,d6
  285.     move.w    #Rings.RING_R,d4
  286.     move.w    #90,d5
  287.     move.w    #90*2,d3
  288.  
  289.     cmpi.w    #3,d7
  290.     bne.s    .shit1
  291.     move.w    a3,d2
  292.     bra.s    .point_loop
  293. .shit1:    cmpi.w    #2,d7
  294.     bne.s    .shit2
  295.     neg.w    d4
  296.     neg.w    d5
  297.     move.w    a3,d2
  298.     bra.s    .point_loop
  299. .shit2:    cmpi.w    #1,d7
  300.     bne.s    .shit3
  301.     neg.w    d4
  302.     neg.w    d5
  303.     move.w    a3,d2
  304.     subi.w    #Rings.RING_R*4,d2
  305.     neg.w    d3
  306.     bra.s    .point_loop
  307. .shit3:    move.w    a3,d2
  308.     subi.w    #Rings.RING_R*4,d2
  309.     neg.w    d3
  310.  
  311. .point_loop:
  312.     move.w    d6,d0
  313.     mulu.w    #sintbllen/Rings.STEPS,d0
  314.     Get_SinCos    a1,d0,d0,d1
  315.     muls.w    d2,d0
  316.     muls.w    d2,d1
  317.     swap    d0
  318.     swap    d1
  319.     move.w    d0,(a0)+
  320.     move.w    d1,(a0)+
  321.     move.w    d4,(a0)+
  322.     move.w    d6,d0
  323.     mulu.w    #sintbllen/Rings.STEPS,d0
  324.     Get_SinCos    a1,d0,d0,d1
  325.     muls.w    d3,d0
  326.     muls.w    d3,d1
  327.     swap    d0
  328.     swap    d1
  329.     move.w    d0,(a2)+
  330.     move.w    d1,(a2)+
  331.     move.w    d5,(a2)+
  332.     dbra    d6,.point_loop
  333.  
  334.     dbra    d7,.ring_loop
  335.  
  336.     movea.l    a2,a0
  337.  
  338.     clr.w    (a0)+                ; #texels
  339.  
  340.     move.w    #Rings.STEPS*4,(a0)+        ; #primitives
  341.     moveq    #4-1,d7
  342.  
  343. .prim_ring_loop:
  344.     move.w    d7,d2
  345.     mulu.w    #Rings.STEPS,d2
  346.     move.w    d7,d3
  347.     addq.w    #1,d3
  348.     andi.w    #%11,d3
  349.     mulu.w    #Rings.STEPS,d3
  350.     moveq    #Rings.STEPS-1,d6
  351.     
  352. .primloop:
  353. ;    move.w    d6,d0
  354. ;    eor.w    d7,d0
  355. ;    andi.w    #1,d0
  356. ;    ori.w    #Polygon.QUAD|Polygon.ENVMAPPED|0,d0
  357.     move.w    #Polygon.QUAD|Polygon.ENVMAPPED|0,d0
  358.  
  359.     move.w    d0,(a0)+
  360.  
  361.     move.w    d6,d0
  362.     add.w    d3,d0
  363.     move.w    d0,(a0)+
  364.  
  365.     clr.l    d0
  366.     move.w    d6,d0
  367.     addq.w    #1,d0
  368.     divu.w    #Rings.STEPS,d0
  369.     swap    d0
  370.     move.w    d0,d1
  371.     add.w    d3,d0
  372.     move.w    d0,(a0)+
  373.  
  374.     add.w    d2,d1
  375.     move.w    d1,(a0)+
  376.  
  377.     move.w    d6,d0
  378.     add.w    d2,d0
  379.     move.w    d0,(a0)+
  380.  
  381.     REPT    4
  382.     move.w    -8(a0),d0
  383.     addi.w    #Rings.STEPS*4,d0
  384.     move.w    d0,(a0)+
  385.     ENDR
  386.  
  387.     dbra    d6,.primloop
  388.  
  389.     dbra    d7,.prim_ring_loop
  390.  
  391. .end:    suba.l    a6,a0
  392.     move.l    a0,d0
  393.     rts
  394.  
  395. Rings.zoom:
  396.     move.w    #-1000,d0
  397.     move.l    $04BA.w,d1
  398.     sub.l    Rings.zoomStart,d1
  399.     lsl.l    #5,d1
  400.     add.l    d1,d0
  401.     move.l    d0,d1
  402.  
  403.     cmpi.w    #Rings.Z_POS,d0
  404.     blt.s    .clip_done1
  405.     move.w    #Rings.Z_POS,d0
  406.     clr.w    Rings.zoomOn
  407.     move.w    #3,Rings.clearTime
  408.     move.l    $04BA.w,Rings.rotStart
  409. .clip_done1:
  410.     move.w    d0,Rings.z
  411.  
  412.     addi.l    #Rings.DIST,d1
  413.     move.l    d1,d0
  414.     cmpi.w    #Rings.Z_POS,d0
  415.     blt.s    .clip_done2
  416.     move.w    #Rings.Z_POS,d0
  417. .clip_done2:
  418.     move.w    d0,Rings.z1
  419.  
  420.     addi.l    #Rings.DIST,d1
  421.     move.l    d1,d0
  422.     cmpi.w    #Rings.Z_POS,d0
  423.     blt.s    .clip_done3
  424.     move.w    #Rings.Z_POS,d0
  425. .clip_done3:
  426.     move.w    d0,Rings.z2
  427.  
  428.     addi.l    #Rings.DIST,d1
  429.     move.l    d1,d0
  430.     cmpi.w    #Rings.Z_POS,d0
  431.     blt.s    .clip_done4
  432.     move.w    #Rings.Z_POS,d0
  433. .clip_done4:
  434.     move.w    d0,Rings.z3
  435.     rts
  436.  
  437. Rings.bump:
  438.     move.l    $04BA.w,d0
  439.     sub.l    Rings.bumpStart,d0
  440.     cmpi.w    #Rings.BUMPSIZE,d0
  441.     blt.s    .ok
  442.     clr.w    Rings.bumpOn
  443.     move.w    #Rings.Z_POS,d0
  444.     move.w    d0,Rings.z
  445.     move.w    d0,Rings.z1
  446.     move.w    d0,Rings.z2
  447.     move.w    d0,Rings.z3
  448.     rts
  449. .ok:    subi.w    #Rings.BUMPSIZE/2,d0
  450.     muls.w    d0,d0
  451.     neg.l    d0
  452.     addi.l    #(Rings.BUMPSIZE/2)*(Rings.BUMPSIZE/2),d0
  453.     addi.w    #Rings.Z_POS,d0
  454.     move.w    d0,Rings.z
  455.     move.w    d0,Rings.z1
  456.     move.w    d0,Rings.z2
  457.     move.w    d0,Rings.z3
  458.     rts
  459.  
  460. ; INPUT:
  461. ; 4(sp).l: speedtable
  462. Rings.paint:
  463.     move.l    $04BA.w,d0
  464.     sub.l    Rings.rotStart,d0
  465.     move.l    d0,.time
  466.     bsr.l    PrimitiveMesh.new
  467.     move.w    #4-1,.count
  468.  
  469. .loop:    movea.l    4(sp),a0
  470.     move.l    .time(pc),d0
  471.     move.w    d0,d1
  472.     move.w    d0,d2
  473.     mulu.w    (a0)+,d0
  474.     mulu.w    (a0)+,d1
  475.     mulu.w    (a0)+,d2
  476.     lsr.l    #8,d0
  477.     lsr.l    #8,d1
  478.     lsr.l    #8,d2
  479.     move.l    a0,4(sp)
  480.     bsr.l    Matrix.generate
  481.     clr.w    d0
  482.     clr.w    d1
  483.     move.w    .count(pc),d2
  484.     move.w    (Rings.z,d2.w*2),d2
  485.     bsr.l    Matrix.translate
  486.     bsr.l    Matrix.push
  487.  
  488.     moveq    #TransformObject.BACKFACE_CULLING|TransformObject.PERSPECTIVATE,d0
  489.     move.w    .count(pc),d1
  490.     bsr.l    TransformObject.transform
  491.  
  492.     bsr.l    Matrix.pop
  493.  
  494.     subq.w    #1,.count
  495.     bpl.s    .loop
  496.  
  497.     bsr.l    PrimitiveMesh.sortZ
  498.     bsr.l    PrimitiveMesh.complete
  499.  
  500.     lea    Viewport.settingsTable,a0
  501.     movem.w    Viewport.XSTART(a0),d0/d6
  502.     movem.w    Viewport.YSTART(a0),d1/d7
  503.     tst.w    Rings.clearTime
  504.     bne.s    .size_calced
  505.     addi.w    #56,d0
  506.     subi.w    #56,d6
  507. .size_calced:
  508.     moveq    #$00000000,d4
  509.     bsr.l    Viewport.paintRectangle
  510.  
  511.     movea.l    Rings.rectAddressTable,a0
  512.     bsr.l    PrimitiveMesh.paint
  513.  
  514.     moveq    #0,d0
  515.     rts
  516.  
  517. .error:    moveq    #-1,d0
  518.     rts
  519.  
  520. .count:    DC.W    0
  521. .time:    DC.L    0
  522.  
  523. ;======= OBJECT DATA ========
  524.  
  525.     DATA
  526.  
  527. Rings.textureTable:
  528.     DC.L    FlareGen.goldBuffer
  529.     DC.L    0
  530.  
  531. Rings.rectAddressTable:
  532.     DC.L    Rings.rectTable
  533.     DC.L    Rings.rectTable2
  534.     DC.L    Rings.rectTable3
  535.  
  536. Rings.speedTable:
  537.     DC.W    $0350,$03D0,$0210
  538.     DC.W    $01E0,$01E0,$02F0
  539.     DC.W    $0430,$0390,$01D0
  540.     DC.W    $0240,$0270,$03A0
  541.  
  542.     IFNE    0
  543.  
  544. Rings.delta:
  545.     DC.W    (.end-.start)/Vertex.SIZE    * amount of vertices
  546.     DC.W    (.end-.normstart)/Vertex.SIZE    * amount of normals
  547. .start:    DC.W    +000,-800,+100
  548.     DC.W    -600,+500,+100
  549.     DC.W    +600,+500,+100
  550.     DC.W    +000,-400,+000
  551.     DC.W    -300,+300,+000
  552.     DC.W    +300,+300,+000
  553.     DC.W    +000,-800,-100
  554.     DC.W    -600,+500,-100
  555.     DC.W    +600,+500,-100
  556. .normstart:
  557.     IFNE    Rings.DELTA_ENV
  558.     DC.W    +000,-030,+050    ;9
  559.     DC.W    -030,+030,+050    ;11
  560.     DC.W    +030,+030,+050    ;12
  561.     DC.W    +000,+127,+000    ;13
  562.     DC.W    -089,+089,+000    ;14
  563.     DC.W    +089,-089,+000    ;15
  564.     DC.W    +000,-030,-050    ;16
  565.     DC.W    -030,+030,-050    ;17
  566.     DC.W    +030,+030,-050    ;18
  567.     ENDC
  568. .end:
  569.  
  570.     DC.W    (.end2d-.start2d)/Vertex2d.SIZE    * amount of 2d vertices
  571. .start2d:
  572.     DC.W    000,000
  573.     DC.W    000,255
  574.     DC.W    063,255
  575.     DC.W    063,000
  576. .end2d:
  577.  
  578.     DC.W    15                ; amount of primitives
  579.  
  580.     IFEQ    Rings.DELTA_ENV
  581.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+03,04,01,+0,1,2
  582.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+03,01,00,+0,2,3
  583.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+04,05,02,+0,1,2
  584.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+04,02,01,+0,2,3
  585.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+05,03,00,+0,1,2
  586.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+05,00,02,+0,2,3
  587.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+06,07,04,+0,1,2
  588.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+06,04,03,+0,2,3
  589.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+07,08,05,+0,1,2
  590.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+07,05,04,+0,2,3
  591.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+08,06,03,+0,1,2
  592.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+08,03,05,+0,2,3
  593.     DC.W    Polygon.QUAD|Polygon.TEXTUREMAPPED|1,+01,07,06,00,+1,2,3,0
  594.     DC.W    Polygon.QUAD|Polygon.TEXTUREMAPPED|1,+02,08,07,01,+1,2,3,0
  595.     DC.W    Polygon.QUAD|Polygon.TEXTUREMAPPED|1,+00,06,08,02,+1,2,3,0
  596.     ELSE
  597.     DC.W    Polygon.TRI|Polygon.ENVMAPPED|1,+03,04,01,+12,13,10
  598.     DC.W    Polygon.TRI|Polygon.ENVMAPPED|1,+03,01,00,+12,10,09
  599.     DC.W    Polygon.TRI|Polygon.ENVMAPPED|1,+04,05,02,+13,14,11
  600.     DC.W    Polygon.TRI|Polygon.ENVMAPPED|1,+04,02,01,+13,11,10
  601.     DC.W    Polygon.TRI|Polygon.ENVMAPPED|1,+05,03,00,+14,12,09
  602.     DC.W    Polygon.TRI|Polygon.ENVMAPPED|1,+05,00,02,+14,09,11
  603.     DC.W    Polygon.TRI|Polygon.ENVMAPPED|1,+06,07,04,+15,16,13
  604.     DC.W    Polygon.TRI|Polygon.ENVMAPPED|1,+06,04,03,+15,13,12
  605.     DC.W    Polygon.TRI|Polygon.ENVMAPPED|1,+07,08,05,+16,17,14
  606.     DC.W    Polygon.TRI|Polygon.ENVMAPPED|1,+07,05,04,+16,14,13
  607.     DC.W    Polygon.TRI|Polygon.ENVMAPPED|1,+08,06,03,+17,15,12
  608.     DC.W    Polygon.TRI|Polygon.ENVMAPPED|1,+08,03,05,+17,12,14
  609.     DC.W    Polygon.QUAD|Polygon.ENVMAPPED|1,+01,07,06,00,+10,16,15,09
  610.     DC.W    Polygon.QUAD|Polygon.ENVMAPPED|1,+02,08,07,01,+11,17,16,10
  611.     DC.W    Polygon.QUAD|Polygon.ENVMAPPED|1,+00,06,08,02,+09,15,17,11
  612.     ENDC
  613. Rings.deltaEnd:
  614.  
  615.     ENDC
  616.  
  617. Rings.z:
  618.     DC.W    3500
  619. Rings.z1:
  620.     DC.W    3500
  621. Rings.z2:
  622.     DC.W    3500
  623. Rings.z3:
  624.     DC.W    3500
  625.  
  626. Rings.clearTime:
  627.     DC.W    1
  628.  
  629. ;======= OBJECT RESERVES ========
  630.  
  631.     BSS
  632.  
  633. Rings.rectTable:
  634.     DS.W    1+4*32
  635. Rings.rectTable2:
  636.     DS.W    1+4*32
  637. Rings.rectTable3:
  638.     DS.W    1+4*32
  639.  
  640. Rings.zoomStart:
  641.     DS.L    1
  642. Rings.zoomOn:
  643.     DS.W    1
  644. Rings.nullSpeedTable:
  645.     DS.W    4*3
  646. Rings.rotStart:
  647.     DS.L    1
  648. Rings.bumpOn:
  649.     DS.W    1
  650. Rings.bumpStart:
  651.     DS.L    1
  652.  
  653. Rings.baseAdr:
  654.     DS.L    1
  655.  
  656. ;======= END OF DEMO-EFFECT OBJECT ========