home *** CD-ROM | disk | FTP | other *** search
/ Fujiology Archive / fujiology_archive_v1_0.iso / !FALCON / LINEOUT / OUT.ZIP / SOURCE.ZIP / CONTOURD.SO < prev    next >
Text File  |  2003-12-29  |  13KB  |  699 lines

  1. ; yipyipee! motionblurred deep rotozoomer.. hopefully motionblur will hide
  2. ; the transitions. Also negative exponentional scaling is used to give the
  3. ; exact movement of zooming.
  4. ;
  5. ; highcolor version!
  6. ;
  7. ; attempt at ditherblur + motionblur (50% pixelfeedback)
  8.  
  9. ;======= OBJECT EQUATES ====================================================
  10.  
  11. XFade.MAX_FRAMES:=    16
  12. XFade.NUMFRAMES:=    4
  13. XFade.MBLUR:=        0            ; logical motionblur (160x100)
  14. XFade.DBLUR:=        1            ; physical motionblur (320x200)
  15. XFade.LOADFILES:=    0
  16.  
  17.             RSRESET
  18. XFade.screen1:        RS.W    160*100
  19. XFade.screen2:        RS.W    160*100
  20. XFade.screen3:        RS.W    160*100
  21. XFade.BLOCK_SIZE:    RS.B    0
  22.  
  23. ;======= OBJECT TABLE ======================================================
  24.  
  25.     IFND    DEMO_SYSTEM
  26. testmode:    =    0
  27.     move.l    #XFade.table,fxAdr
  28.     INCLUDE    TESTER.S
  29.     TEXT
  30.     ENDC    
  31.  
  32. XFade.table:
  33.     DC.L    XFade.mainLoop
  34.     DC.L    XFade.init
  35.     DC.L    XFade.initRT
  36.     DC.L    XFade.deinitRT
  37.     DC.L    rts
  38.     DC.L    rts
  39.     DC.L    rts
  40.     DC.L    rts
  41.     DC.L    rts
  42.     DC.L    rts
  43.     DC.L    rts                ; '9'
  44.     DC.L    XFade.decreaseSpeed        ; '-'
  45.     DC.L    rts                ; '4'
  46.     DC.L    rts                ; '5'
  47.     DC.L    rts                ; '6'
  48.     DC.L    XFade.increaseSpeed        ; '+'
  49.     DC.L    0
  50.  
  51. ;======= INIT SUBROUTINE ===================================================
  52.  
  53. ; OUTPUT:
  54. ; d0.l: 0   = All clear, neg = Error! Not initialized!
  55. XFade.init:
  56.     move.l    #XFade.BLOCK_SIZE,d0
  57.     bsr.l    Mem.register
  58.  
  59.     IFNE    XFade.LOADFILES
  60. ; Pull all textures from disk.
  61.     clr.w    XFade.numFrames
  62. ; Setup file data structure.
  63.     pea    .fdata(pc)
  64.     move.w    #$1A,-(sp)
  65.     trap    #1
  66.     addq    #6,sp
  67. ; Initialize search using searchpattern.
  68.     clr.w    -(sp)                ; only writable files
  69.     pea    .fspec(pc)            ; Push file-info table.
  70.     move.w    #$4E,-(sp)
  71.     trap    #1
  72.     addq    #8,sp
  73.     tst.l    d0
  74.     bmi.s    .error
  75.  
  76.     lea    XFade.picTable2,a6
  77.  
  78. .loop:    cmpi.w    #XFade.MAX_FRAMES,XFade.numFrames
  79.     bhs.s    .end
  80.     addq.w    #1,XFade.numFrames
  81.     lea    .fdata+26(pc),a0
  82.     move.l    (a0)+,d0            ; d0.l=size, a0: filename
  83.     bsr    XFade.load
  84.     addi.l    #20,d1                ; Skip apx header.
  85.     move.l    d1,(a6)+
  86. ; Look for next file that satisfies searchpattern.
  87.     move.w    #$4F,-(sp)
  88.     trap    #1
  89.     addq    #2,sp
  90.     tst.l    d0
  91.     bpl.s    .loop
  92.  
  93. ; Reverse frames, for zoom order..
  94. .end:    move.w    XFade.numFrames,d7
  95.     lea    XFade.picTable,a0
  96.     subq.w    #1,d7
  97. .revloop:
  98.     move.l    -(a6),(a0)+
  99.     dbf    d7,.revloop
  100.  
  101.     ELSE
  102.  
  103.     move.w    #XFade.NUMFRAMES,XFade.numFrames
  104.     ENDC
  105.  
  106.     IFNE    XFade.MBLUR|XFade.DBLUR
  107. ; Half all frames...
  108.     lea    XFade.picTable,a1
  109.     moveq    #XFade.NUMFRAMES-1,d6
  110.  
  111. .frameloop:
  112.     movea.l    (a1)+,a0
  113.     move.l    #%01111011111011110111101111101111,d1
  114.     clr.w    d7
  115.  
  116. .loop:    move.l    (a0),d0
  117.     lsr.l    d0
  118.     and.l    d1,d0
  119.     move.l    d0,(a0)+
  120.     addq.w    #1,d7
  121.     bpl.s    .loop
  122.  
  123.     dbf    d6,.frameloop
  124.     ENDC
  125.  
  126. .success:
  127.     moveq    #0,d0
  128.     rts
  129. .error:    moveq    #-1,d0
  130.     rts
  131.  
  132. .fspec:    dc.b    "COG*.APX",0
  133.     EVEN
  134. .fdata:    ds.b    44
  135.  
  136. ;======= REALTIME INIT SUBROUTINE ==========================================
  137.  
  138. XFade.initRT:
  139.     bsr.l    Mem.getBlock
  140. ; d0.l:block
  141. ; Set logical screenaddys..
  142.     move.l    d0,d1
  143.     move.l    d0,d2
  144.     lea    XFade.screenAddys,a0
  145.     addi.l    #XFade.screen1,d0
  146.     move.l    d0,(a0)+
  147.     addi.l    #XFade.screen2,d1
  148.     move.l    d1,(a0)+
  149.     addi.l    #XFade.screen3,d2
  150.     move.l    d2,(a0)+
  151.  
  152.     bsr    XFade.setPaintRout
  153.  
  154.     move.w    monitormode,d0
  155.     cmpi.w    #vga60,d0
  156.     beq.s    .vga60
  157.     cmpi.w    #vga100,d0
  158.     beq.s    .vga100
  159.     cmpi.w    #rgb50,d0
  160.     beq.s    .rgb50
  161. ; Unknown monitormode..
  162. .end:    rts
  163. .vga60:    move.l    #vga60_16bit_320_200,resRout
  164.     rts
  165. .vga100:move.l    #vga100_16bit_320_200,resRout
  166.     rts
  167. .rgb50:    move.l    #rgb50_16bit_320_200,resRout
  168.     rts
  169.  
  170. XFade.setPaintRout:
  171.     cmpi.w    #vga100,monitormode
  172.     beq.s    .vga100
  173.     move.l    #XFade.paintVBL,vbl_gfx
  174.     rts
  175. .vga100:move.l    #XFade.paintVga100VBL,vbl_gfx
  176.     rts
  177.  
  178. ;======= DEINITIALISATION ROUTINE ==========================================
  179.  
  180. XFade.deinitRT:
  181.     rts
  182.  
  183. ;======= SCREENINIT SUBROUTINE =============================================
  184.  
  185. XFade.initScreen:
  186.     rts
  187.  
  188. ;======= MAINLOOP SUBROUTINE ===============================================
  189.  
  190. XFade.mainLoop:
  191.     move.w    $0468.w,old468
  192.  
  193.     move.l    frmcnt,d0
  194.     sub.l    lastframecount,d0
  195.     cmpi.l    #3,d0
  196.     bhs.s    .end_screeninit
  197.     bsr    XFade.initScreen
  198. .end_screeninit:
  199.  
  200.     bsr    XFade.calcPosition
  201.     movea.l    XFade.screenAddys,a0
  202.     movea.l    XFade.screenAddys+8,a3
  203.     bsr    XFade.paint
  204.  
  205.     lea    XFade.screenAddys,a0
  206.     move.l    (a0)+,d0
  207.     move.l    (a0)+,d1
  208.     move.l    (a0),-4(a0)
  209.     move.l    d0,(a0)
  210.     move.l    d1,-8(a0)
  211.  
  212.     movea.l    resRout,a0
  213.     suba.l    a1,a1
  214.     movea.l    scr,a2
  215.     bsr.l    Screen.requestUpdate
  216.     clr.l    resRout
  217.  
  218.     move.w    old468,d0
  219. .wait:    cmp.w    $0468.w,d0
  220.     beq.s    .wait
  221.     rts
  222.  
  223. ;======= OBJECT SUBROUTINES ================================================
  224.  
  225. XFade.decreaseSpeed:
  226.     bsr    getTime
  227.     move.w    d0,XFade.speedTime
  228.     move.w    XFade.pos,XFade.oldPos
  229.     subq.w    #8,XFade.speed
  230.     rts
  231.  
  232. XFade.increaseSpeed:
  233.     bsr    getTime
  234.     move.w    d0,XFade.speedTime
  235.     move.w    XFade.pos,XFade.oldPos
  236.     addq.w    #8,XFade.speed
  237.     rts
  238.  
  239. ; INPUT:
  240. ; d0.l=size
  241. ; a0: filename
  242. ; OUTPUT:
  243. ; d0.l: =0:ok, <0:bad
  244. ; d1.l: buffer loaded into
  245. XFade.load:
  246. ; fopen
  247.     move.l    d0,-(sp)
  248.     clr.w    -(sp)                ; mode? ro?
  249.     pea    (a0)
  250.     move.w    #$3D,-(sp)
  251.     trap    #1
  252.     addq    #8,sp
  253.     move.l    (sp)+,d1
  254.     tst.l    d0
  255.     bmi.s    .end
  256.  
  257. ; malloc
  258.     move.w    d0,d6                ; d6.w=handle
  259.     move.l    d1,-(sp)
  260.     move.w    #$48,-(sp)
  261.     trap    #1
  262.     addq    #6,sp
  263.     tst.l    d0
  264.     bmi.s    .end
  265.     move.l    d0,d7
  266.     
  267. ; fread
  268.     move.l    d0,-(sp)
  269.     move.l    d1,-(sp)
  270.     move.w    d6,-(sp)
  271.     move.w    #$3F,-(sp)
  272.     trap    #1
  273.     move.w    2(sp),d1            ; d1.w=handle
  274.     lea    12(sp),sp
  275.     tst.l    d0
  276.     bmi.s    .end
  277.  
  278. ; fclose
  279.     move.w    d1,-(sp)
  280.     move.w    #$3E,-(sp)
  281.     trap    #1
  282.     addq    #4,sp
  283.  
  284. .end:    move.l    d7,d1                ; d1.l: bufferaddy
  285.     rts
  286.  
  287. XFade.calcPosition:
  288. * First we calculate the current time.
  289.     bsr    getTime
  290. ;    move.l    $4ba.w,d0
  291. ;    sub.l    XFade.startTime,d0
  292.  
  293.     move.l    d0,d1
  294.     move.l    d0,d6
  295.     lea    sine_tbl,a0
  296.  
  297. * Now we calculate our center position.
  298.     mulu.w    #5,d1
  299.     lsr.l    #4,d1
  300.     Do_SinModulo    d1
  301.     Get_SinCos    a0,d1,d2,d3
  302.     add.l    d2,d2
  303.     add.l    d3,d3
  304.     move.w    #$8000,d2
  305.     move.w    #$8000,d3
  306.     movem.w    d2/d3,XFade.center
  307.  
  308. * And now we calculate the current position in the trajectory.
  309.     mulu.w    XFade.rotSpeed,d0
  310.     lsr.l    #8,d0
  311.     Do_SinModulo    d0
  312.     Get_SinCos    a0,d0,d0,d1
  313. * d0.w: +sin(fi)
  314. * d1.w: +cos(fi)
  315.  
  316. * a'.x = +cos(fi)*a.x +sin(fi)*a.y
  317. * a'.y = -sin(fi)*a.x +cos(fi)*a.y
  318.     move.w    d1,d2
  319.     move.w    d0,d3
  320.     neg.w    d3
  321. * d2.w: a'.x, d3.w: a'.y
  322. * b'.x = +cos(fi)*b.x +sin(fi)*b.y
  323. * b'.y = -sin(fi)*b.x +cos(fi)*b.y
  324.     move.w    d0,d4
  325.     move.w    d1,d5
  326. * d4.w: b'.x, d5.w: b'.y
  327.  
  328. * And we calculate the amount of zoom...
  329. ;    move.w    $04BC.w,d6
  330.     sub.w    XFade.speedTime,d6
  331.     mulu.w    XFade.speed,d6
  332.     lsr.l    #8,d6
  333.     add.w    XFade.oldPos,d6
  334.  
  335.     move.w    d6,XFade.pos
  336.     clr.l    d0
  337.     move.w    d6,d0
  338.     lsr.w    #8,d0
  339.     divu.w    XFade.numFrames,d0
  340.     swap    d0
  341.     move.w    d0,XFade.picnum
  342.     move.w    d6,d0
  343.     andi.w    #$00FF,d0
  344.     move.w    (XFade.negexpTable,d0.w*2),d0
  345.     move.w    d0,d6
  346.     lsr.w    #2,d0
  347. ;    move.w    d0,XFade.slider
  348.  
  349.     lsl.w    #8,d6
  350.     mulu.w    #128,d6
  351.     swap    d6
  352.     addi.w    #128,d6
  353. * And zoom the damn thing!
  354.     muls.w    d6,d2
  355.     muls.w    d6,d3
  356.     muls.w    d6,d4
  357.     muls.w    d6,d5
  358.     IFNE    1
  359.     swap    d2
  360.     swap    d3
  361.     swap    d4
  362.     swap    d5
  363.     ENDC
  364.     IFNE    1
  365.     muls.w    #$170,d2
  366.     muls.w    #$170,d3
  367.     muls.w    #$170,d4
  368.     muls.w    #$170,d5
  369.     asr.l    #7,d2
  370.     asr.l    #7,d3
  371.     asr.l    #7,d4
  372.     asr.l    #7,d5
  373.     ENDC
  374.     IFNE    0
  375.     moveq    #15,d0
  376.     asr.l    d0,d2
  377.     asr.l    d0,d3
  378.     asr.l    d0,d4
  379.     asr.l    d0,d5
  380.     ENDC
  381.     movem.w    d2-d5,XFade.scaledVectorTable
  382.  
  383.     rts
  384.  
  385. ; input:
  386. ; a0: screen (current)
  387. ; a3: screen (previous)
  388. XFade.paint:
  389.     move.w    XFade.picnum,d2
  390.     movea.l    (XFade.picTable,d2.w*4),a1
  391. ;    adda.l    #2*(256*128+128),a1
  392.  
  393.     movem.w    XFade.scaledVectorTable,d0-d3
  394. ; d0.w: a.x, d1.w: a.y, d2.w: b.x, d3.w: b.y
  395.     movem.w    XFade.center,d6/d7
  396.     move.w    d0,d4
  397.     move.w    d1,d5
  398.     muls.w    #80,d4
  399.     muls.w    #80,d5
  400.     sub.w    d4,d6
  401.     sub.w    d5,d7
  402.     move.w    d2,d4
  403.     move.w    d3,d5
  404.     muls.w    #50,d4
  405.     muls.w    #50,d5
  406.     sub.w    d4,d6
  407.     sub.w    d5,d7
  408. ; a
  409.     ror.l    #8,d1
  410.     move.w    d1,d4                ; d4.b=UU x_step
  411.     move.w    d0,d1
  412.     movea.l    d1,a5                ; a5.l=uu00VVvv x_step
  413. ; b
  414.     ror.l    #8,d3
  415.     move.w    d3,XFade.u_ystep
  416.     move.w    d2,d3
  417.     move.l    d3,XFade.uv_ystep
  418. ; top-left
  419.     ror.l    #8,d7
  420.     move.w    d7,XFade.u_start
  421.     move.w    d6,d7
  422.     move.l    d7,XFade.uv_start
  423.     move.l    XFade.uv_start(pc),d0
  424.     move.w    XFade.u_start(pc),d1
  425.  
  426.     move.w    #%0111101111101111,d5
  427.     clr.l    d2                ; clear upper word of offset
  428.     clr.l    d6                ; clear upper part of paloffset
  429.     moveq    #100-1,d7
  430.  
  431. XFade.paintVga100:
  432. ; a1: texture1, a2: hc pal1[0..255], a3: texture2, a4: hc pal2[0..255]
  433.  
  434. .yloop:    swap    d7
  435.     move.w    #20-1,d7
  436.     
  437. ; d0.l=uu00VVvv (fast)
  438. ; d1.b=UU (fast)
  439. ; d2.w=offset
  440. ; d4.b=UU (x_step)
  441. ; d6.w=hc pixel
  442. ; a0: screen
  443. ; a1: 8b texture (fast)
  444. ; a5=uu00VVvv (x_step)
  445.  
  446. .chunkloop:
  447.     REPT    8
  448.     move.w    d0,d2
  449.     move.b    d1,d2
  450.     IFNE    XFade.MBLUR
  451.     move.w    (a3)+,d3
  452.     lsr.w    d3
  453.     and.w    d5,d3
  454.     add.w    (a1,d2.l*2),d3
  455.     move.w    d3,(a0)+
  456.     ELSE
  457.     move.w    (a1,d2.l*2),(a0)+
  458.     ENDC
  459.     add.l    a5,d0
  460.     addx.b    d4,d1
  461.     ENDR
  462.     dbf    d7,.chunkloop
  463.  
  464.     move.l    XFade.uv_start(pc),d0
  465.     move.w    XFade.u_start(pc),d1
  466.     move.w    XFade.u_ystep(pc),d2
  467.     add.l    XFade.uv_ystep(pc),d0
  468.     addx.w    d2,d1
  469.     move.l    d0,XFade.uv_start
  470.     move.w    d1,XFade.u_start
  471.  
  472.     swap    d7
  473.     dbf    d7,.yloop
  474.     rts
  475.  
  476. XFade.uv_ystep:
  477.     DC.L    0
  478. XFade.u_ystep:
  479.     DC.W    0
  480. XFade.uv_start:
  481.     DC.L    0
  482. XFade.u_start:
  483.     DC.W    0
  484.  
  485. XFade.paintVga100VBL:
  486.     clr.l    d1
  487.     move.w    $0468.w,d1
  488.     lsr.l    d1
  489.     bcs.s    .proceed
  490.     rts
  491. .proceed:
  492.     bra.s    XFade.paintIt
  493.  
  494. XFade.paintVBL:
  495. ;    tst.w    XFade.readyToVblKick
  496. ;    bne.s    .go_on
  497. ;    rts
  498. .go_on:    clr.l    d1
  499.     move.w    $0468.w,d1
  500.  
  501. XFade.paintIt:
  502.  
  503.     IFNE    0
  504.  
  505. ;evl esque blur, too 'jerky'?
  506. XFade.SKIP:    =    5
  507.  
  508.     movea.l    scr,a0                    ; physical screen please!
  509.     movea.l    XFade.screenAddys+8,a1            ; physical viewport
  510.     movea.w    #XFade.SKIP*2,a6
  511.     movea.w    #XFade.SKIP*4,a5
  512.     move.l    d1,d2
  513.     divu.w    #XFade.SKIP,d2
  514.     swap    d2                    ; d2.w=dst lookupoffset
  515.     divu.w    #XFade.SKIP*4,d1
  516.     swap    d1                    ; d1.w=src lookupoffset
  517.     moveq    #100,d7
  518.     adda.w    (.table.w,pc,d1.w*2),a0
  519.     move.w    (.htable.w,pc,d2.w*2),d5            ; d5.w=src offset
  520.     adda.w    d5,a1
  521.     lsr.w    d5
  522.     move.w    #%0111101111101111,d2
  523.  
  524. .yloop:
  525.     REPT    32
  526.     IFNE    XFade.DBLUR
  527.     move.w    (a0),d1
  528.     lsr.w    d1
  529.     and.w    d2,d1
  530.     add.w    (a1),d1
  531.     move.w    d1,(a0)
  532.     ELSE
  533.     move.w    (a1),(a0)
  534.     ENDC
  535.     adda.l    a6,a1
  536.     adda.l    a5,a0
  537.     ENDR
  538.     adda.w    #320*2,a0
  539.     dbf    d7,.yloop
  540.  
  541. .end:    rts
  542.  
  543. ; offset: 000,001,002,003,004 (wrap)
  544. ; pixels: 023,023,023,023,023 (wrap)
  545. .htable:DC.W    004*2,003*2,001*2,002*2,000*2
  546. .table:    DC.W    008*2,006*2,002*2,004*2,000*2
  547.     DC.W    009*2,007*2,003*2,005*2,001*2
  548.     DC.W    328*2,326*2,322*2,324*2,320*2
  549.     DC.W    329*2,327*2,323*2,325*2,321*2
  550.  
  551.     ELSE
  552.  
  553. ;no esque blur...
  554. XFade.SKIP:    =    7
  555.  
  556.     movea.l    scr,a0                    ; physical screen please!
  557.     movea.l    XFade.screenAddys+8,a1            ; physical viewport
  558.     movea.w    #XFade.SKIP*2,a6
  559.     movea.w    #XFade.SKIP*4,a5
  560.     move.l    d1,d2
  561.     divu.w    #XFade.SKIP,d2
  562.     swap    d2                    ; d2.w=dst lookupoffset
  563.     divu.w    #XFade.SKIP*4,d1
  564.     swap    d1                    ; d1.w=src lookupoffset
  565.     moveq    #100,d7
  566.     adda.w    (.table.w,pc,d1.w*2),a0
  567.     move.w    (.htable.w,pc,d2.w*2),d5            ; d5.w=src offset
  568.     adda.w    d5,a1
  569.     lsr.w    d5
  570.     move.w    #%0111101111101111,d2
  571.  
  572. .plot00:moveq    #2-1,d6
  573.  
  574. .loop:
  575.     REPT    11
  576.     IFNE    XFade.DBLUR
  577.     move.w    (a0),d1
  578.     lsr.w    d1
  579.     and.w    d2,d1
  580.     add.w    (a1),d1
  581.     move.w    d1,(a0)
  582.     ELSE
  583.     move.w    (a1),(a0)
  584.     ENDC
  585.     adda.l    a6,a1
  586.     adda.l    a5,a0
  587.     ENDR
  588.     dbra    d6,.loop
  589.  
  590.     subq.w    #1,d7
  591.     beq.s    .main_done
  592.     subq.w    #6,d5
  593.     bpl.s    .next
  594.     addq.w    #7,d5
  595.     IFNE    XFade.DBLUR
  596.     move.w    (a0),d1
  597.     lsr.w    d1
  598.     and.w    d2,d1
  599.     add.w    (a1),d1
  600.     move.w    d1,(a0)
  601.     ELSE
  602.     move.w    (a1),(a0)
  603.     ENDC
  604.     adda.l    a6,a1
  605.     adda.l    a5,a0
  606. .next:    adda.w    #320*2,a0
  607.     bra.w    .plot00
  608.  
  609. .main_done:
  610. ; Don't forget the final 6. 64000 mod 7 = 6 you know.
  611.     subq.w    #6,d5
  612.     beq.s    .end
  613. ; 0<=d1.w<6 => 0<=#pix<64000
  614.     IFNE    XFade.DBLUR
  615.     move.w    (a0),d1
  616.     lsr.w    d1
  617.     and.w    d2,d1
  618.     add.w    (a1),d1
  619.     move.w    d1,(a0)
  620.     ELSE
  621.     move.w    (a1),(a0)    
  622.     ENDC
  623. .end:    rts
  624.  
  625. ; offset: 000,001,002,003,004,005,006 (wrap)
  626. ; pixels: 023,023,023,023,023,023,022 (wrap)
  627. .htable:DC.W    000*2,003*2,005*2,002*2,006*2,001*2,004*2
  628. .table:    DC.W    000*2,006*2,010*2,004*2,012*2,002*2,008*2
  629.     DC.W    001*2,007*2,011*2,005*2,013*2,003*2,009*2
  630.     DC.W    320*2,326*2,330*2,324*2,332*2,322*2,328*2
  631.     DC.W    321*2,327*2,331*2,325*2,333*2,323*2,329*2
  632.  
  633.     ENDC
  634.  
  635. ;======= OBJECT DATA =======================================================
  636.  
  637.     DATA
  638.  
  639.     IFEQ    XFade.LOADFILES
  640. XFade.picTable:
  641.     DC.L    XFade.texture1+20
  642.     DC.L    XFade.texture2+20
  643.     DC.L    XFade.texture3+20
  644.     DC.L    XFade.texture4+20
  645. XFade.texture1:
  646.     INCBIN    COG4.APX
  647. XFade.texture2:
  648.     INCBIN    COG3.APX
  649. XFade.texture3:
  650.     INCBIN    COG2.APX
  651. XFade.texture4:
  652.     INCBIN    COG1.APX
  653.     ENDC
  654.  
  655. XFade.negexpTable
  656.     INCBIN    NEGEXP.DAT
  657.  
  658. XFade.speed:
  659.     DC.W    $0054 $00A0
  660. XFade.rotSpeed:
  661.     DC.W    $0040
  662.  
  663. ;======= OBJECT RESERVES ===================================================
  664.  
  665.     BSS
  666.  
  667.     IFNE    XFade.LOADFILES
  668. XFade.picTable:
  669.     DS.L    XFade.MAX_FRAMES+1
  670. XFade.picTable2:
  671.     DS.L    XFade.MAX_FRAMES+1
  672.     ENDC
  673.  
  674. XFade.slider:
  675.     DS.W    1                ; [0..63]
  676. XFade.picnum:
  677.     DS.W    1
  678. XFade.startTime:
  679.     DS.L    1
  680. XFade.scaledVectorTable:
  681.     DS.B    XFade.MAX_FRAMES
  682.     EVEN
  683. XFade.center:
  684.     DS.W    2
  685. XFade.distoStrength:
  686.     DS.W    1
  687. XFade.pos:
  688.     DS.W    1
  689. XFade.oldPos:
  690.     DS.W    1
  691. XFade.speedTime:
  692.     DS.W    1
  693. XFade.numFrames:
  694.     DS.W    1
  695.  
  696. XFade.screenAddys:
  697.     DS.L    3
  698.  
  699.