home *** CD-ROM | disk | FTP | other *** search
/ Fujiology Archive / fujiology_archive_v1_0.iso / !FALCON / LINEOUT / DELTA.ZIP / DELTASRC.ZIP / DELTA.SRC / ENVLITE.SO < prev    next >
Text File  |  2003-01-04  |  13KB  |  667 lines

  1. ; Envmapped ball and portals screen. Version that incorporates lightning..
  2. ; Requires u-fly. Made for the delta demo.
  3.  
  4. ;======= OBJECT EQUATES ========
  5.  
  6. ;======= OBJECT TABLE ========
  7.  
  8. ; Must be first in object!!
  9. EnvBall.table:
  10.     DC.L    EnvBall.mainLoop
  11.     DC.L    EnvBall.init
  12.     DC.L    EnvBall.setRes
  13.     DC.L    EnvBall.incTime                ; 3
  14.     DC.L    EnvBall.decTime                ; 4
  15.     DC.L    EnvBall.SwitchBall            ; 5
  16.     DC.L    EnvBall.shock                ; 6
  17.     DC.L    EnvBall.switchworldrot            ; 7
  18.     DC.L    EnvBall.switchFastRot            ; 8
  19.     DC.L    EnvBall.setNormalSpeed            ; 9
  20.     DC.L    EnvBall.setFastSpeed            ; A
  21.     DC.L    EnvBall.setSuperSpeed            ; B
  22.     DC.L    EnvBall.switchLightning            ; C
  23.     DC.L    Lightning.toggleMode            ; D
  24.     DC.L    Lightning.pulseSlow            ; E
  25.     DC.L    Lightning.pulseNormal            ; F
  26.     DC.L    Lightning.pulseFast            ; 10
  27.     IFNE    0
  28.     DC.L    Lightning.incInRadius
  29.     DC.L    Lightning.decInRadius
  30.     DC.L    Lightning.incSegLength
  31.     DC.L    Lightning.decSegLength
  32.     DC.L    Lightning.incSegRandom
  33.     DC.L    Lightning.decSegRandom
  34.     ENDC
  35.     DC.L    EnvBall.switchMorph            ; 11
  36.     DC.L    0
  37.  
  38.     IFND    DEMO_SYSTEM
  39.     INCLUDE    SFLY_DSP.S                ; Include the CPU-DSP engine.
  40.     TEXT
  41.     INCLUDE    OBJECT3D.I
  42.     TEXT
  43.     ENDC
  44.  
  45.     INCLUDE    LIGHTNI3.S
  46.     TEXT
  47.  
  48. ;======= RESOLUTION SETTING ROUTINE ========
  49.  
  50. EnvBall.setRes:
  51.     IFEQ    testmode
  52.     move.l    frmcnt,d0
  53.     sub.l    lastframecount,d0
  54.     beq.s    .end
  55.  
  56.     move.l    #rts,vbl_gfx
  57.  
  58.     move.w    monitormode,d0
  59.     cmpi.w    #vga60,d0
  60.     beq.s    .vga60
  61.     cmpi.w    #vga100,d0
  62.     beq.s    .vga100
  63.     cmpi.w    #rgb50,d0
  64.     beq.s    .rgb50
  65. ; Unknown monitormode..
  66. .end:    rts
  67. .vga60:    bra.l    vga60_16bit_320_200
  68. .vga100:bra.l    vga100_16bit_320_200
  69. .rgb50:    bra.l    rgb50_16bit_320_200
  70.     ENDC
  71.  
  72. ;======= INIT SUBROUTINE ========
  73.  
  74. * OUTPUT: d0.l: 0   = All clear.
  75. *               neg = Error! Not initialized!
  76. EnvBall.init:
  77.     lea    sine_tbl,a1
  78.     bsr.l    Matrix.init
  79.  
  80. ; Generate nice turbulence chrome texture..
  81.     lea    EnvBall.texture2,a0
  82.     move.l    #"Word",(a0)+
  83.     move.l    #"PerP",(a0)+
  84.     move.l    #"ixel",(a0)+
  85.     move.l    #$00400040,(a0)+
  86.     lea    FlareGen.chromePal,a1
  87.     moveq    #6,d0
  88.     moveq    #3,d1
  89.     move.l    #$00001000,d2
  90.     bsr.l    Texture.createWords2
  91.  
  92.     bsr    Lightning.init
  93.  
  94. .success:
  95.     moveq    #0,d0
  96.     rts
  97. .error:    moveq    #-1,d0
  98.     rts
  99.  
  100. ;======= REALTIME INIT SUBROUTINE ========
  101.  
  102. EnvBall.realtimeInit:
  103.     move.l    #EnvBall.setRes,vbl_gfx
  104.  
  105.     move.w    $04BC.w,EnvBall.startTime
  106.     bsr    EnvBall.shock
  107.  
  108.     bsr.l    HumanFly.init
  109.  
  110.     lea    Viewport.settingsTable,a0
  111.     move.w    #320,Viewport.XSCREEN(a0)
  112.     move.w    #200,Viewport.YSCREEN(a0)
  113.     move.w    #0,Viewport.XSTART(a0)
  114.     move.w    #0,Viewport.YSTART(a0)
  115.     move.w    #320,Viewport.XEND(a0)
  116.     move.w    #200,Viewport.YEND(a0)
  117.     move.w    #160,Viewport.XCENTER(a0)
  118.     move.w    #100,Viewport.YCENTER(a0)
  119.     move.w    #256+32,Viewport.ASPECT(a0)
  120.     move.w    #$100,Viewport.FOCAL(a0)
  121.     bsr.l    Viewport.update
  122.  
  123.     lea    EnvBall.textureTable,a0
  124.     lea    Lightning.pal,a1
  125.     bsr.l    Polygon.init
  126.  
  127.     bsr.l    ObjectRegistry.clear
  128.  
  129.     lea    Object3d.spikey,a1
  130.     move.l    #Object3d.spikeyEnd-Object3d.spikey,d0
  131.     lea    EnvBall.spikey,a0
  132.     bsr.l    Object3d.copy
  133.  
  134.     lea    EnvBall.spikey,a0
  135.     moveq    #0,d0
  136.     moveq    #8,d1
  137.     move.w    #$200/5,d2
  138.     bsr.l    Object3d.scale
  139.     lea    EnvBall.spikey,a0
  140.     moveq    #8,d0
  141.     moveq    #6,d1
  142.     move.w    #$0040,d2
  143.     bsr.l    Object3d.scale
  144.  
  145.     lea    EnvBall.spikey,a0
  146.     move.l    #Object3d.spikeyEnd-Object3d.spikey,d0
  147.     bsr.l    ObjectRegistry.set
  148.  
  149.     lea    EnvBall.delta,a0
  150.     move.l    #EnvBall.deltaEnd-EnvBall.delta,d0
  151.     bsr.l    ObjectRegistry.set
  152.  
  153.     clr.w    EnvBall.morphOn
  154.     move.w    #$FFFF,EnvBall.portalsOn
  155.     move.w    #2,EnvBall.portalSpeed
  156.     clr.w    EnvBall.lightningMode
  157.     clr.w    EnvBall.worldRot
  158.     clr.w    EnvBall.fastRot
  159.     clr.w    EnvBall.ballActive
  160.  
  161.     bsr    Lightning.initRealtime
  162.     rts
  163.  
  164. ;======= MAINLOOP SUBROUTINE ========
  165.  
  166. EnvBall.mainLoop:
  167.     move.w    $0468.w,.old468
  168.  
  169.     move.l    frmcnt,d0
  170.     sub.l    lastframecount,d0
  171.     bne.s    .end_realtime_init
  172.     bsr    EnvBall.realtimeInit
  173. .end_realtime_init:
  174.  
  175.     move.w    $04BC.w,d0
  176.     sub.w    EnvBall.startTime,d0
  177.     move.w    d0,EnvBall.time
  178.  
  179.     movea.l    scr,a0
  180.     bsr.l    Primitive.setScreenbuffer
  181.  
  182.     bsr    EnvBall.morph
  183.  
  184. ; == background restore ==
  185.  
  186.     move.w    $04BC.w,d0
  187.     sub.w    EnvBall.shockTime,d0
  188.     lsr.w    #1,d0
  189.     cmpi.w    #31,d0
  190.     bls.s    .time_set
  191.     moveq    #31,d0
  192. .time_set:
  193.     neg.w    d0
  194.     addi.w    #31,d0
  195.     mulu.w    #%0000100001000001,d0
  196.     move.w    d0,d4
  197.     swap    d4
  198.     move.w    d0,d4
  199.     move.l    d4,EnvBall.backColor
  200.  
  201.     tst.w    EnvBall.lightningMode
  202.     beq.s    .end_light_restore
  203.  
  204. ; lightning active.. clear dirty screens..
  205.     move.w    EnvBall.newFrames,d0
  206.     beq.s    .end_light_restore
  207.     subq.w    #1,d0
  208.     move.w    d0,EnvBall.newFrames
  209.  
  210.     lea    Viewport.settingsTable,a0
  211.     movem.w    Viewport.XSTART(a0),d0/d6
  212.     movem.w    Viewport.YSTART(a0),d1/d7
  213.     move.l    EnvBall.backColor,d4
  214.     bsr.l    Viewport.paintRectangle
  215.     bra.s    .end_restore_ball
  216. .end_light_restore:
  217.  
  218. ; == end of background ==
  219.  
  220. ; == lightning ==
  221.  
  222.     tst.w    EnvBall.lightningMode
  223.     beq.s    .end_lightning
  224.  
  225. ; Clear ball background..
  226.     movea.l    EnvBall.rectAddressTable,a0
  227.     tst.w    (a0)+
  228.     beq.s    .end_restore_ball
  229.     movem.w    (a0)+,d1/d7
  230.     movem.w    (a0)+,d0/d6
  231.     move.l    EnvBall.backColor,d4
  232.     bsr.l    Viewport.paintRectangle
  233. .end_restore_ball:
  234.  
  235. ; Paint lightning..
  236.     tst.w    Lightning.pulseMode
  237.     beq.s    .normal
  238.     bsr    Lightning.paintPulsed
  239.     bra.s    .end_paint
  240. .normal:bsr    Lightning.paintNormal
  241. .end_paint:
  242.  
  243.     lea    Lightning.boltAddys,a0
  244.     move.l    (a0)+,d0
  245.     move.l    (a0)+,d1
  246.     move.l    (a0),-(a0)
  247.     move.l    d0,4(a0)
  248.     move.l    d1,-(a0)
  249. .end_lightning:
  250.  
  251. ; == end of lightning ==
  252.  
  253.     bsr.l    PrimitiveMesh.new
  254.  
  255.     bsr    EnvBall.addScene
  256.  
  257.     bsr.l    PrimitiveMesh.complete
  258.  
  259. ; == parallel shit ==
  260.  
  261.     tst.w    EnvBall.lightningMode
  262.     bne.s    .end_par_restore        ; lightning on?
  263.  
  264. .restore_all:
  265.     lea    Viewport.settingsTable,a0
  266.     movem.w    Viewport.XSTART(a0),d0/d6
  267.     movem.w    Viewport.YSTART(a0),d1/d7
  268.     move.l    EnvBall.backColor,d4
  269.     bsr.l    Viewport.paintRectangle
  270. .end_par_restore:
  271.  
  272. ; == end of parallel shit ==
  273.  
  274.     movea.l    EnvBall.rectAddressTable,a0
  275.     bsr.l    PrimitiveMesh.paint
  276.  
  277.     lea    EnvBall.rectAddressTable,a0
  278.      move.l    (a0)+,d0
  279.     move.l    (a0)+,d1
  280.     move.l    (a0),-(a0)
  281.     move.l    d0,4(a0)
  282.     move.l    d1,-(a0)
  283.  
  284.     IFEQ    testmode
  285.     lea    scr,a0
  286.     move.l    (a0)+,d0
  287.     move.l    (a0)+,d1
  288.     move.l    (a0),-(a0)
  289.     move.l    d0,4(a0)
  290.     move.l    d1,-(a0)
  291.     move.l    d0,d1
  292.     lsr.w    #8,d0
  293.     move.l    d0,$ffff8200.w
  294.     move.b    d1,$ffff820d.w
  295.     ENDC
  296.  
  297.     move.w    .old468(pc),d0
  298.     moveq    #1,d3
  299.     cmpi.w    #vga100,monitormode
  300.     bne.s    .wait
  301.     moveq    #2,d3
  302. .wait:    move.w    $0468.w,d2
  303.     sub.w    d0,d2
  304.     cmp.w    d3,d2
  305.     blt.s    .wait
  306.  
  307.     clr.l    EnvBall.backColor
  308.  
  309. .error:    rts
  310.  
  311. .old468:DC.W    0
  312.  
  313. ;======= OBJECT SUBROUTINES ========
  314.  
  315. EnvBall.incTime:
  316.     addq.w    #1,EnvBall.time
  317.     rts
  318.  
  319. EnvBall.decTime:
  320.     subq.w    #1,EnvBall.time
  321.     rts
  322.  
  323. EnvBall.SwitchBall:
  324.     move.w    $04BC.w,EnvBall.ballStartTime
  325.     tst.w    EnvBall.ballActive
  326.     beq.s    .go_on
  327.     clr.w    EnvBall.ballActive
  328.     rts
  329. .go_on:    move.w    #1,EnvBall.ballActive
  330.     rts
  331.  
  332. EnvBall.shock:
  333.     move.w    $04BC.w,EnvBall.shockTime
  334.     move.l    #$FFFFFFFF,EnvBall.backColor
  335.     rts
  336.  
  337. EnvBall.switchworldrot:
  338.     not.w    EnvBall.worldRot
  339.     move.l    $04BA.w,EnvBall.worldRotTime
  340.     rts
  341.  
  342. EnvBall.switchFastRot:
  343.     not.w    EnvBall.fastRot
  344.     move.l    $04BA.w,EnvBall.fastRotTime
  345.     move.w    EnvBall.time,d0
  346.     Do_SinModulo    d0
  347.     Get_Sin    sine_tbl,d0,d0
  348.     asr.w    #5,d0
  349.     addi.w    #2100,d0
  350.     move.w    d0,EnvBall.startDist
  351.     rts
  352.  
  353. EnvBall.switchPortals:
  354.     not.w    EnvBall.portalsOn
  355.     rts
  356.  
  357. EnvBall.setNormalSpeed:
  358.     move.w    #1,EnvBall.portalSpeed
  359.     rts
  360.  
  361. EnvBall.setFastSpeed:
  362.     move.w    #2,EnvBall.portalSpeed
  363.     rts
  364.  
  365. EnvBall.setSuperSpeed:
  366.     move.w    #4,EnvBall.portalSpeed
  367.     rts
  368.  
  369. EnvBall.switchLightning:
  370.     not.w    EnvBall.lightningMode
  371.     beq.s    EnvBall.switchPortals
  372.     move.w    #3,EnvBall.newFrames
  373.     bra.s    EnvBall.switchPortals
  374.  
  375. EnvBall.switchMorph:
  376.     move.l    $04BA.w,EnvBall.morphStartTime
  377.     not.w    EnvBall.morphOn
  378.     rts
  379.  
  380. EnvBall.morph:
  381.     tst.w    EnvBall.morphOn
  382.     beq.s    .end
  383.     
  384. ; Edit objectvertices (morph).
  385.     move.l    $04BA.w,d0
  386.     sub.l    EnvBall.morphStartTime,d0
  387.     mulu.w    #3,d0
  388.     lsr.l    #2,d0
  389.     subi.w    #sintbllen/4,d0
  390.     Do_SinModulo    d0
  391.     move.w    (sine_tbl,d0.w*4),d0
  392.     addi.w    #$8000,d0
  393.     lsr.w    #8,d0
  394.     neg.w    d0
  395.     addi.w    #$0200,d0
  396.     andi.l    #$0000FFFF,d0
  397.     divu.w    #5,d0
  398.     lea    Object3d.spikey+4,a1
  399.     lea    EnvBall.spikey+4,a0
  400.     moveq    #8*3-1,d7
  401. .loop:    move.w    (a1)+,d1
  402.     muls.w    d0,d1
  403.     asr.l    #8,d1
  404.     move.w    d1,(a0)+
  405.     dbf    d7,.loop
  406.  
  407. ; Replace object.
  408.     lea    EnvBall.spikey,a0
  409.     moveq    #0,d0
  410.     moveq    #%0001,d1
  411.     bsr.l    ObjectRegistry.replace
  412.  
  413. .end:    rts
  414.  
  415. EnvBall.addScene:
  416. ; Calc point of ball..
  417.     tst.w    EnvBall.ballActive
  418.     bne.s    .active
  419.     move.w    #2812,d0
  420.     bra.s    .store_ball_pos
  421. .active:
  422.     cmpi.w    #2,EnvBall.ballActive
  423.     beq.s    .ball_centered
  424.     move.w    $04BC.w,d0
  425.     sub.w    EnvBall.ballStartTime,d0
  426.     subi.w    #300,d0
  427.     bmi.s    .okay
  428.     move.w    #2,EnvBall.ballActive
  429. .ball_centered:
  430.     clr.l    d0
  431.     bra.s    .store_ball_pos
  432. .okay:    muls.w    d0,d0
  433.     lsr.l    #5,d0
  434.     neg.l    d0
  435. .store_ball_pos:
  436.     move.w    d0,EnvBall.ballDist
  437.  
  438. ; world rotation and translation..
  439.     tst.w    EnvBall.worldRot
  440.     clr.w    d1
  441.     tst.w    EnvBall.worldRot
  442.     beq.s    .no_rot
  443.  
  444. ; Calc some y axis shit. Needs to be continuous in 0th and 1st grade.
  445. ; (1) at^2=bt+c
  446. ; (2) (d/dt)at^2=(d/dt)(bt+c), 2at=b
  447. ;
  448. ; when t=$100, b=1/2
  449. ; =>
  450. ; (2) $200a=1/2, a=1/$400
  451. ; (1) $10000a=$80+c, $10000/$400=$80+c, c=-$40
  452. ;
  453.     move.l    $04BA.w,d1
  454.     sub.l    EnvBall.worldRotTime,d1
  455.     cmpi.l    #$100,d1
  456.     bhs.s    .linear_speed
  457.     mulu.w    d1,d1
  458.     lsr.l    #8,d1
  459.     lsr.l    #2,d1
  460.     bra.s    .end_speed
  461. .linear_speed:
  462.     lsr.l    #1,d1
  463.     subi.l    #$40,d1
  464. .end_speed:
  465.     
  466. .no_rot:
  467.  
  468. ; Do x axis rotation.
  469.     clr.w    d0
  470.     tst.w    EnvBall.fastRot
  471.     beq.s    .no_rot2
  472.     move.l    $04BA.w,d0
  473.     sub.l    EnvBall.fastRotTime,d0
  474.     add.l    d0,d0
  475. .no_rot2:
  476.  
  477.     clr.w    d2
  478.     bsr.l    Matrix.generate
  479.     clr.l    d0
  480.     clr.l    d1
  481.     move.w    EnvBall.time,d2
  482.     Do_SinModulo    d2
  483.     Get_Sin    sine_tbl,d2,d2
  484. ;    tst.w    EnvBall.fastRot
  485. ;    beq.s    .normal_distance
  486. ;    move.l    $04BA.w,d2
  487. ;    sub.l    EnvBall.fastRotTime,d2
  488. ;    add.w    d2,d2
  489. ;    add.w    EnvBall.startDist,d2
  490. ;    bra.s    .end_calc_distance
  491. .normal_distance:
  492.     asr.w    #5,d2
  493.     addi.w    #2100,d2
  494. .end_calc_distance:
  495.     bsr.l    Matrix.translate
  496.     bsr.l    Matrix.push
  497.  
  498. ; Kick in da ball.
  499.     move.w    EnvBall.time,d0
  500.     move.w    d0,d1
  501.     move.w    d0,d2
  502.     mulu.w    #5,d0
  503.     lsr.w    #2,d0
  504.     mulu.w    #3,d1
  505.     lsr.w    #1,d1
  506.     lsl.w    #2,d2
  507.     bsr.l    Matrix.generate
  508.     clr.w    d0
  509.     move.w    EnvBall.ballDist,d1
  510.     clr.w    d2
  511.     bsr.l    Matrix.translate
  512.     bsr.l    Matrix.push
  513.     moveq    #TransformObject.BACKFACE_CULLING|TransformObject.PERSPECTIVATE,d0
  514.     moveq    #0,d1
  515.     bsr.l    TransformObject.transform
  516.     bsr.l    Matrix.pop
  517.  
  518.     tst.w    EnvBall.portalsOn
  519.     beq.s    .end_portals
  520.  
  521. ; Kick in da delta portalz.
  522.     clr.w    -(sp)
  523.  
  524. .loop:    clr.w    d0
  525.     clr.w    d1
  526.     move.w    (sp),d2
  527.     lsr.w    #5,d2
  528.     neg.w    d2
  529.     add.w    EnvBall.time,d2
  530.     bsr.l    Matrix.generate
  531.     clr.w    d0
  532.     clr.w    d1
  533.     move.w    EnvBall.time,d2
  534.     mulu.w    EnvBall.portalSpeed,d2
  535.     neg.l    d2
  536.     lsl.l    #5,d2
  537.     add.w    (sp),d2
  538.     addi.w    #2000,d2
  539.     bsr.l    Matrix.translate
  540.     bsr.l    Matrix.push
  541.     moveq    #TransformObject.BACKFACE_CULLING|TransformObject.PERSPECTIVATE,d0
  542.     moveq    #1,d1
  543.     bsr.l    TransformObject.transform
  544.     bsr.l    Matrix.pop
  545.     addi.w    #$2000,(sp)
  546.     bne.s    .loop
  547.     addq    #2,sp
  548. .end_portals:
  549.  
  550.     bsr.l    Matrix.pop
  551.     bsr.l    PrimitiveMesh.sortZ
  552.     rts
  553.  
  554. ;======= OBJECT DATA ========
  555.  
  556.     DATA
  557.  
  558. EnvBall.textureTable:
  559.     DC.L    FlareGen.goldBuffer
  560.     DC.L    EnvBall.texture2
  561.     DC.L    0
  562.  
  563. EnvBall.delta:
  564.     DC.W    (.end-.start)/Vertex.SIZE    * amount of vertices
  565.     DC.W    (.end-.normstart)/Vertex.SIZE    * amount of normals
  566. .start:    DC.W    +000,-800,+100
  567.     DC.W    -600,+500,+100
  568.     DC.W    +600,+500,+100
  569.     DC.W    +000,-400,+000
  570.     DC.W    -300,+300,+000
  571.     DC.W    +300,+300,+000
  572.     DC.W    +000,-800,-100
  573.     DC.W    -600,+500,-100
  574.     DC.W    +600,+500,-100
  575. .normstart:
  576. .end:
  577.  
  578.     DC.W    (.end2d-.start2d)/Vertex2d.SIZE    * amount of 2d vertices
  579. .start2d:
  580.     DC.W    063,063
  581.     DC.W    063,191
  582.     DC.W    191,191
  583.     DC.W    191,063
  584. .end2d:
  585.  
  586.     DC.W    15                ; amount of primitives
  587.  
  588.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+03,04,01,+0,1,2
  589.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+03,01,00,+0,2,3
  590.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+04,05,02,+0,1,2
  591.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+04,02,01,+0,2,3
  592.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+05,03,00,+0,1,2
  593.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+05,00,02,+0,2,3
  594.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+06,07,04,+0,1,2
  595.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+06,04,03,+0,2,3
  596.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+07,08,05,+0,1,2
  597.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+07,05,04,+0,2,3
  598.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+08,06,03,+0,1,2
  599.     DC.W    Polygon.TRI|Polygon.TEXTUREMAPPED|1,+08,03,05,+0,2,3
  600.     DC.W    Polygon.QUAD|Polygon.TEXTUREMAPPED|1,+01,07,06,00,+1,2,3,0
  601.     DC.W    Polygon.QUAD|Polygon.TEXTUREMAPPED|1,+02,08,07,01,+1,2,3,0
  602.     DC.W    Polygon.QUAD|Polygon.TEXTUREMAPPED|1,+00,06,08,02,+1,2,3,0
  603. EnvBall.deltaEnd:
  604.  
  605. EnvBall.rectAddressTable:
  606.     DC.L    EnvBall.rectangleTable
  607.     DC.L    EnvBall.rectangleTable2
  608.     DC.L    EnvBall.rectangleTable3
  609.  
  610. ;======= OBJECT RESERVES ========
  611.  
  612.     BSS
  613.  
  614. EnvBall.rectangleTable:
  615.     DS.W    4*10
  616. EnvBall.rectangleTable2:
  617.     DS.W    4*10
  618. EnvBall.rectangleTable3:
  619.     DS.W    4*10
  620.  
  621. EnvBall.time:
  622.     DS.W    1
  623. EnvBall.startTime:
  624.     DS.W    1
  625. EnvBall.ballDist:
  626.     DS.W    1
  627. EnvBall.ballStartTime:
  628.     DS.W    1
  629. EnvBall.ballActive:
  630.     DS.W    1
  631. EnvBall.shockTime:
  632.     DS.W    1
  633. EnvBall.backColor:
  634.     DS.L    1
  635. EnvBall.worldRotTime:
  636.     DS.L    1
  637. EnvBall.worldRot:
  638.     DS.W    1
  639. EnvBall.fastRot:
  640.     DS.W    1
  641. EnvBall.fastRotTime:
  642.     DS.L    1
  643. EnvBall.startDist:
  644.     DS.W    1
  645.  
  646. EnvBall.portalSpeed:
  647.     DS.W    1
  648. EnvBall.portalsOn:
  649.     DS.W    1
  650.  
  651. EnvBall.texture2:
  652.     DS.W    10+64*64
  653.  
  654. EnvBall.spikey:
  655.     DS.W    1000
  656.  
  657. EnvBall.lightningMode:
  658.     DS.W    1
  659. EnvBall.newFrames:
  660.     DS.W    1
  661.  
  662. EnvBall.morphOn:
  663.     DS.W    1
  664. EnvBall.morphStartTime:
  665.     DS.L    1
  666.  
  667. ;======= END OF DEMO-EFFECT OBJECT ========