home *** CD-ROM | disk | FTP | other *** search
/ Fujiology Archive / fujiology_archive_v1_0.iso / !FALCON / AGGRESSN / MOTION.ZIP / MOTION / WRITER4.S < prev   
Text File  |  1999-01-02  |  26KB  |  1,072 lines

  1. ;      /| __    _    /  __      
  2. ;     / |/ _ __| \  <  <    _   
  3. ;    /__|\ // _| / / \  \ |/ \  |
  4. ;   <   | \ \ /|< <_  >  >|\_/|\|
  5. ;    \  |    \ | \ \ / _/ |   | | 
  6. ;     \        |    /
  7. ;
  8. ; tekstiwriteri+diffusio
  9. ; 262k taulun wflowtable sorsan jalkeen.. luodaan initissa vain kerran..  
  10. ; vbl fixattu...
  11.  
  12. write.run    =    1
  13.  
  14.     IFNE    write.run
  15.     OPT    d+,c-,p=68030
  16.  
  17. memory    =    500*1024
  18.  
  19. Overdose_Beyond_Braindamage
  20.     include    freeintx.s
  21.     even
  22.  
  23. DEMO:
  24.     move.w    activepoint,d0
  25.     move.l    (activelist,pc,d0.w*4),a0
  26.     jsr    (a0)
  27.     rts
  28.  
  29. viimeinen
  30.     st     Space_Pressed
  31.     rts
  32.  
  33. precalc
  34.     move.w    #1000,d0
  35.     move.l    #$0,d1
  36. .xx    rept    20
  37.     addq.l    #1,d1
  38.     move.l    d1,$ffff9800.w
  39.     endr
  40.     dbf    d0,.xx    
  41.     clr.l    $ffff9800.w
  42.     rts
  43.  
  44. activepoint    dc.w    0    
  45. activelist    
  46.     DC.L    initwrite
  47.     dc.l    precalc
  48.     dc.l    viimeinen
  49.     ENDC
  50.  
  51. ;------------
  52. writeTV:
  53. .HHT    SET     $fe    *fe    ; Horizontal Hold Timer
  54. .HBB    SET     $a2     $cb    *cb    ; Horizontal Border Begin
  55. .HBE    SET     $20     $27-$27    *27    ; Horizontal Border End
  56. .HDB    SET     $30     $2e-40    *1c    ; Horizontal Display Begin
  57. .HDE    SET     $91     $8f+40    *7d    ; Horizontal Display End
  58. .HSS    SET     $d8    *d8    ; Horizontal Synchro Start
  59.  
  60. .VFT    SET    $271    *271    ; (31250/Hz!1) ; V FREQUENCY
  61. .VBB    SET     $227    *265    ; V BORDER BLANK
  62. .VBE    SET     $47    *2f    ; ($265-$02f)/2 = 283 LINES
  63. .VDB    SET     $47    *57    ; V DISPLAY SIZE (256 lines..)
  64. .VDE    SET     $227    *237    ; ($237-$057)/2 = 240 LINES
  65. .VSS    SET     $26b    *26b    ; V SYNCHRO START (<FREQUENCY!)
  66. .VCLK    SET    $183    *181    ; Video Clock
  67. .VCO    SET    $000        ; Video Control
  68. .WIDE    set    320        ;screen wide (words)
  69. .modulo    set    0        ;screen modulo
  70. .VMODE    set    $100        ;screen mode (true)
  71. ; Video Control TV Bits                3 2 1 0
  72. ;    Horizontal Resolution-------------------+-+ + +
  73. ;        00: LORES (320 Pixels)            | |
  74. ;        01: HIRES (640 Pixels)            | |
  75. ;        10: SUPER HIRES (1280 Pixels)        | |
  76. ;            (shires seems to work with        | |
  77. ;             16 colors only (???))        | |
  78. ;    Interlace-----------------------------------' |
  79. ;        To enable interlacing, set VFT          |
  80. ;        bit 0 to logic 0.              |
  81. ;    Vertical Resolution---------------------------'
  82. ;        0: 200 lines
  83. ;        1: 100 lines
  84.  
  85.     dc.w    .HHT&$1ff,.HBB&$1ff,.HBE&$1ff,.HDB&$1ff,.HDE&$1ff,.HSS&$1ff
  86.     dc.w    .VFT&$3ff,.VBB&$3ff,.VBE&$3ff,.VDB&$3ff,.VDE&$3ff,.VSS&$3ff
  87.     dc.w    .VCLK&$1ff,.VCO&$00f
  88.     dc.l    .wide,.modulo,.vmode
  89.  
  90.  
  91. *********************************************************************************
  92. *
  93. *********************************************************************************
  94. initwscreen:
  95.  
  96.     move.l    address.freemem,d0
  97.     add.l    #wruutu.write+255,d0
  98.     clr.b    d0
  99.     move.l    d0,adr_screen1    ;set active
  100.     MOVE.l  d0,wfalconscreen     ;used screen
  101.  
  102.     move.l    #writetv,pointertv
  103.     jsr    middlesetscreen
  104.     move.w    #$2300,sr
  105.     
  106.     move.l    #writevbl,own_vbl
  107.     rts
  108.  
  109. initwrite:
  110.     BSR     wexpand_ball
  111.     BSR     wmakeflowtable
  112.     bsr    initwscreen
  113.  
  114.     addq.w    #1,activepoint
  115.  
  116.     rts
  117. ;----------------------------------------------------
  118. writevbl:
  119.     move.w    #$2500,sr
  120.     move.l    writesukka,a0
  121.     move.l    (a0),d0
  122.     bne.s    .ok
  123.  
  124. ; zekkaa onko susie precalc valmis, jos ei, exitoi
  125. ;    move.w    #$2300,sr
  126. ;    rts    
  127. ; jos on, tapa writeri..
  128.     addq.w    #1,activepoint
  129.     move.l    #.null,own_vbl
  130.     move.w    #$2300,sr
  131.     rts
  132. .ok    move.l    d0,a0
  133.     jsr    (a0)
  134.     move.w    #$2300,sr
  135. .null    rts
  136.  
  137. writesukka
  138.     dc.l    .sukka
  139. .sukka
  140.     dc.l    clearpaper    ;vbl:n sisainen suorituslista
  141.     dc.l    clearpaper2
  142.     dc.l    writepala
  143.     dc.l    writecont
  144.     dc.l    writeviive
  145.     rept    6
  146.     dc.l    diffupala
  147.     endr
  148.  
  149.     dc.l    clearpaper
  150.     dc.l    clearpaper2
  151.     dc.l    writepala
  152.     dc.l    writecont
  153.     dc.l    writeviive
  154.     rept    6
  155.     dc.l    diffupala
  156.     endr    
  157.  
  158.     dc.l    0
  159. ;---------------------------------------------
  160. writepala
  161.     move.l    writetask,a1
  162.     move.l    (a1),a1
  163.     add.l    #4,writetask
  164.     BSR    wbezieri
  165.     addq.l    #4,writesukka
  166.     rts
  167.  
  168.  
  169. writetask
  170.     dc.l    .wlist
  171. .wlist    
  172.     dc.l    wkuppa        ;lista piirrettavista kamoista
  173.     dc.l    wkuppa2
  174.  
  175. diffupala
  176.     bsr    wasm_diffuse
  177.     addq.l    #4,writesukka
  178.     rts
  179.  
  180. writeviive
  181.     sub.w    #1,.time
  182.     bgt.s    .ok
  183.     move.w    #200,.time
  184.     addq.l    #4,writesukka
  185. .ok
  186.     rts
  187. .time    dc.w    200
  188. ;------------------------------------
  189. clearpaper
  190.     move.l    wfalconscreen,a0
  191.     moveq.l    #0,d1
  192.     move.w    #(320*128/16)-1,d0
  193. .wiper
  194.     move.l    d1,(a0)+
  195.     move.l    d1,(a0)+
  196.     move.l    d1,(a0)+
  197.     move.l    d1,(a0)+
  198.     move.l    d1,(a0)+
  199.     move.l    d1,(a0)+
  200.     move.l    d1,(a0)+
  201.     move.l    d1,(a0)+
  202.     dbf    d0,.wiper
  203.     addq.l    #4,writesukka
  204.     rts
  205.  
  206. clearpaper2
  207.     move.l    wfalconscreen,a0
  208.     add.l    #320*128*2,a0
  209.     moveq.l    #0,d1
  210.     move.w    #(320*128/16)-1,d0
  211. .wiper
  212.     move.l    d1,(a0)+
  213.     move.l    d1,(a0)+
  214.     move.l    d1,(a0)+
  215.     move.l    d1,(a0)+
  216.     move.l    d1,(a0)+
  217.     move.l    d1,(a0)+
  218.     move.l    d1,(a0)+
  219.     move.l    d1,(a0)+
  220.     dbf    d0,.wiper
  221.     addq.l    #4,writesukka
  222.     rts
  223. ;*********************************************************************
  224. ;*                                                                   *
  225. ;* Performs drawing of a bezier-file found from a1 to a 320*240      *
  226. ;* screen, the address of which is stored in falconscreen-variable   *
  227. ;*                                                                   *
  228. ;*********************************************************************
  229.  
  230. wbezieri:
  231.   LEA wbeztable,a2
  232.  
  233.   MOVE.w  (a1)+,d7
  234.   SUBQ  #1,d7
  235.  
  236. wbez_main_loop:
  237.   SWAP  d7
  238.   MOVE.l  a2,a0
  239.   MOVEQ #0,d5
  240.   MOVEQ #0,d6
  241.   MOVE.w 16(a1),d5
  242.   MOVE.w 18(a1),d6
  243.   SUB.w  d5,d6
  244.   SWAP  d5            ;size
  245.   MOVE.w  #0,d5
  246.   SWAP  d6
  247.   MOVE.w  #0,d6
  248.   ASR.l #5,d6         ;sizechange
  249.  
  250.   MOVE.l  d5,wsizepos
  251.   MOVE.l  d6,wsizechange
  252.  
  253.   MOVE.l 20(a1),d3
  254.   MOVE.l 24(a1),d4
  255.  
  256. ;blue
  257.   MOVEQ   #0,d5
  258.   MOVEQ   #0,d6
  259.   MOVE.b  d3,d5
  260.   MOVE.b  d4,d6
  261.   SWAP  d5
  262.   SWAP  d6
  263.   MOVE.l  d5,wbluepos
  264.   SUB.l   d5,d6
  265.   ASR.l   #5,d6
  266.   MOVE.l  d6,wbluechange
  267.  
  268. ;green
  269.   LSR.l   #8,d3
  270.   LSR.l   #8,d4
  271.   MOVEQ   #0,d5
  272.   MOVEQ   #0,d6
  273.   MOVE.b  d3,d5
  274.   MOVE.b  d4,d6
  275.   SWAP  d5
  276.   SWAP  d6
  277.   MOVE.l  d5,wgreenpos
  278.   SUB.l   d5,d6
  279.   ASR.l   #5,d6
  280.   MOVE.l  d6,wgreenchange
  281.  
  282. ;red
  283.   LSR.l   #8,d3
  284.   LSR.l   #8,d4
  285.   MOVEQ   #0,d5
  286.   MOVEQ   #0,d6
  287.   MOVE.b  d3,d5
  288.   MOVE.b  d4,d6
  289.   SWAP  d5
  290.   SWAP  d6
  291.   MOVE.l  d5,wredpos
  292.   SUB.l   d5,d6
  293.   ASR.l   #5,d6
  294.   MOVE.l  d6,wredchange
  295.  
  296.   MOVE.w  #(32/4)-1,d7
  297.  
  298. wbez_loop:
  299.     rept    4
  300.   MOVE.l  wsizepos,d5
  301.   MOVE.l  wsizechange,d6
  302.   MOVE.l  d5,d0
  303.   MOVE.w  #0,d0
  304.   SWAP    d0
  305.   ADD.l   d6,d5
  306.   MOVE.l  d5,wsizepos
  307.  
  308.   MOVE.w  #0,d5
  309.   ASR.l   #1,d5
  310.   NEG.l   d5
  311.   MOVE.l  d5,d6
  312.  
  313.   MOVE.l  (a0)+,d1
  314.   MOVEQ   #0,d2
  315.   MOVEQ   #0,d3
  316.   MOVE.w  12(a1),d2
  317.   MOVE.w  14(a1),d3
  318.   MULU.l  d1,d2
  319. ;  Dc.l  $4c012002
  320.   MULU.l  d1,d3
  321. ;  Dc.l  $4c013003
  322.   ADD.l  d2,d5
  323.   ADD.l  d3,d6
  324.  
  325.   MOVE.l  124(a0),d1
  326.   MOVEQ   #0,d2
  327.   MOVEQ   #0,d3
  328.   MOVE.w  8(a1),d2
  329.   MOVE.w  10(a1),d3
  330.   MULU.l  d1,d2
  331. ;  Dc.l  $4c012002
  332.   MULU.l  d1,d3
  333. ;  Dc.l  $4c013003
  334.   ADD.l  d2,d5
  335.   ADD.l  d3,d6
  336.  
  337.   MOVE.l  252(a0),d1
  338.   MOVEQ   #0,d2
  339.   MOVEQ   #0,d3
  340.   MOVE.w  4(a1),d2
  341.   MOVE.w  6(a1),d3
  342.   MULU.l  d1,d2
  343. ;  Dc.l  $4c012002
  344.   MULU.l  d1,d3
  345. ;  Dc.l  $4c013003
  346.   ADD.l  d2,d5
  347.   ADD.l  d3,d6
  348.  
  349.   MOVE.l  380(a0),d1
  350.   MOVEQ   #0,d2
  351.   MOVEQ   #0,d3
  352.   MOVE.w  0(a1),d2
  353.   MOVE.w  2(a1),d3
  354.   MULU.l  d1,d2
  355. ;  Dc.l  $4c012002
  356.   MULU.l  d1,d3
  357. ;  Dc.l  $4c013003
  358.   ADD.l  d2,d5
  359.   ADD.l  d3,d6
  360.  
  361. ;  xpos=Int(beztable(n)*bezi\x4+beztable(n+32)*bezi\x3+beztable(n+64)*bezi\x2+beztable(n+96)*bezi\x1)-size/2
  362. ;  ypos=Int(beztable(n)*bezi\y4+beztable(n+32)*bezi\y3+beztable(n+64)*bezi\y2+beztable(n+96)*bezi\y1)-size/2
  363.  
  364.   MOVEQ #0,d2
  365.   MOVEQ #0,d3
  366.  
  367.   SWAP  d5
  368.   SWAP  d6
  369.   MOVE.w  d5,d2
  370.   MOVE.w  d6,d3
  371.  
  372.   MOVE.l  wredpos,d5
  373.   MOVE.l  wredchange,d6
  374.   MOVE.l  d5,d1
  375.   MOVE.w  #0,d1
  376.   ADD.l   d6,d5
  377.   MOVE.l  d5,wredpos
  378.  
  379.   MOVE.l  wgreenpos,d5
  380.   MOVE.l  wgreenchange,d6
  381.   MOVE.l  d5,d4
  382.   MOVE.w  #0,d4
  383.   LSR.l   #8,d4
  384.   MOVE.w  d4,d1
  385.   ADD.l   d6,d5
  386.   MOVE.l  d5,wgreenpos
  387.  
  388.   MOVE.l  wbluepos,d5
  389.   MOVE.l  wbluechange,d6
  390.   MOVE.l  d5,d4
  391.   SWAP    d4
  392.   MOVE.b  d4,d1
  393.   ADD.l   d6,d5
  394.   MOVE.l  d5,wbluepos
  395.  
  396. ;* d0 - size                                                    *
  397. ;* d1 - 24-bit colour                                           *
  398. ;* d2 - x                                                       *
  399. ;* d3 - y                                                       *
  400.  
  401.   BSR wreal_ball
  402.     endr
  403.     movem.l    d0-a6,writesecure    ;regut talteen ja poikki...
  404.     rts
  405.  
  406. writecont
  407.     movem.l    writesecure,d0-a6
  408.  
  409.   DBRA  d7,wbez_loop
  410.   LEA   28(a1),a1
  411.  
  412.   SWAP  d7
  413.  
  414.   DBRA  d7,wbez_main_loop
  415.  
  416.     addq.l    #4,writesukka        ;valmista.. seuraava sukka..
  417.   RTS
  418.  
  419. writesecure
  420.     ds.l    15
  421. ;****************************************************************
  422. ;*                                                              *
  423. ;* Real ball draw, adds ball to screen.                         *
  424. ;* d0 - size                                                    *
  425. ;* d1 - 24-bit colour                                           *
  426. ;* d2 - x                                                       *
  427. ;* d3 - y                                                       *
  428. ;****************************************************************
  429.  
  430. wreal_ball:
  431.   MOVE.l  a2,wsailo
  432.  
  433.   BSR wcreate_colour_data
  434.  
  435.   LEA wrawball,a3
  436. ;  LEA wflowtable,a4
  437.     move.l    address.freemem,a4
  438.     add.l    #wflowtable,a4
  439.   MOVE.l  wfalconscreen,a5
  440.   LEA wcolourtable,a2
  441.   MULU  #320*2,d3
  442.   LSL   #1,d2
  443.   ADD.l d3,d2
  444.   ADD.l d2,a5
  445.   MOVE.l  a3,a6
  446.  
  447.   MOVE.l #$400000,d2  ;decimal skip
  448.   DIVU.l  d0,d2
  449.   ;Dc.l  $4c402002
  450.  
  451.   MOVEQ #0,d1
  452.   MOVEQ #0,d3         ;xcount
  453.   MOVEQ #0,d4         ;ycount
  454.   MOVEQ #0,d5
  455.  
  456.   SUBQ  #1,d0
  457.   MOVE.w d0,d6
  458.  
  459. wrd_yloop:
  460.   SWAP  d6
  461.   MOVE.w  d0,d6
  462. wrd_xloop:
  463.   MOVE.b 0(a6,d3.w),d5
  464.   CMP.w #0,d5
  465.   BEQ   wnodraw
  466.  
  467.   LSL.w #1,d5
  468.   MOVE.w  0(a2,d5.w),d5
  469.  
  470.   MOVE.w  (a5),d1
  471.   ADD.l d1,d5
  472.   LSL.l #1,d5
  473.   MOVE.w 0(a4,d5.l),(a5)
  474. ;    move.w    #$ffff,(a5)
  475.  
  476.   MOVEQ #0,d5
  477.  
  478. wnodraw:
  479.   ADDQ  #2,a5
  480.  
  481.   SWAP  d3
  482.   ADD.l d2,d3
  483.   SWAP  d3
  484.  
  485.   DBRA  d6,wrd_xloop
  486.  
  487.   MOVEQ #0,d3
  488.  
  489.   SWAP  d4
  490.   ADD.l d2,d4
  491.   SWAP  d4
  492.  
  493.   MOVE.w d4,d5
  494.   LSL.l  #6,d5
  495.   MOVE.l  a3,a6
  496.   ADD.l   d5,a6
  497.   MOVEQ  #0,d5
  498.  
  499.   MOVE.w #319,d5
  500.   SUB.w d0,d5
  501.   LSL.w #1,d5
  502.   ADD.l d5,a5
  503.  
  504.   MOVEQ #0,d5
  505.  
  506.   SWAP  d6
  507.   DBRA  d6,wrd_yloop
  508.   MOVE.l  wsailo,a2
  509.   RTS
  510.  
  511. ;****************************************************************
  512. ;*                                                              *
  513. ;* Creates 16-bit colour fade from 0 to 24-bit colour in d1.    *
  514. ;\*                                                              *
  515. ;****************************************************************
  516.  
  517. ;don't change d0,d2,d3,d7,a0,a1,a2
  518.  
  519. wcreate_colour_data:
  520.   MOVE.l  d1,a4
  521.  
  522. ;blue
  523.   LEA wcolourtable,a3
  524.  
  525.   MOVEQ #0,d4
  526.   MOVEQ #0,d5
  527.   MOVE.b  d1,d4
  528.   LSL.w #5,d4
  529.  
  530.   MOVE.w #255,d6
  531. wcolour_b_loop:
  532.   SWAP  d5
  533.   ADD.l d4,d5
  534.   SWAP  d5
  535.   MOVE.w  d5,(a3)+
  536.   DBRA  d6,wcolour_b_loop
  537.  
  538. ; green
  539.   LEA wcolourtable,a3
  540.  
  541.   MOVEQ #0,d4
  542.   MOVEQ #0,d5
  543.   MOVE.l  a4,d4
  544.   LSL.l #3,d4
  545.   AND.l #$0007f800,d4
  546.  
  547.   MOVE.w #255,d6
  548. wcolour_g_loop:
  549.   ADD.l d4,d5
  550.   MOVE.l  d5,d1
  551.   SWAP  d1
  552.   AND.w #$07c0,d1
  553.   OR.w  d1,(a3)+
  554.   DBRA  d6,wcolour_g_loop
  555.  
  556. ; red
  557.   LEA wcolourtable,a3
  558.  
  559.   MOVEQ #0,d4
  560.   MOVEQ #0,d5
  561.   MOVE.l  a4,d4
  562.   AND.l #$00ff0000,d4
  563.  
  564.   MOVE.w #255,d6
  565. wcolour_r_loop:
  566.   ADD.l d4,d5
  567.   MOVE.l  d5,d1
  568.   SWAP  d1
  569.   AND.w #$f000,d1
  570.   OR.w  d1,(a3)+
  571.   DBRA  d6,wcolour_r_loop
  572.  
  573.   RTS
  574.  
  575. ;********************************************************************
  576. ;*                                                                  *
  577. ;* Expands incbin'ed data of one quarter of a ball to a whole ball. *
  578. ;*                                                                  *
  579. ;********************************************************************
  580. wexpand_ball:
  581.   LEA     wrawball,a0
  582.   LEA     32*63(a0),a1
  583.   LEA     32*32(a0),a0
  584.   MOVE.l  a1,a2
  585.   LEA     64(a1),a3
  586.   MOVE.l  a3,a4
  587.   MOVE.w  #31,d7
  588. wexpand_y_loop:
  589.   MOVE.w  #31,d6
  590. wexpand_x_loop:
  591.   MOVE.b  -(a0),d0
  592.   MOVE.b  d0,-(a1)
  593.   MOVE.b  d0,(a2)+
  594.   MOVE.b  d0,-(a3)
  595.   MOVE.b  d0,(a4)+
  596.   DBRA    d6,wexpand_x_loop
  597.   LEA     -32(a1),a1
  598.   LEA     -96(a2),a2
  599.   LEA     96(a3),a3
  600.   LEA     32(a4),a4
  601.   DBRA    d7,wexpand_y_loop
  602.   RTS
  603.  
  604. ;********************************************************************
  605. ;*                                                                  *
  606. ;* Creates look-up table used to avoid overflow of colours inside   *
  607. ;* true-colour word. Plotting routine does not use lowest bits of   *
  608. ;* red and green, but they are used to indicate that either green   *
  609. ;* or blue overflowed.                                              *
  610. ;*                                                                  *
  611. ;********************************************************************
  612.  
  613. wmakeflowtable:
  614.  ; LEA     wflowtable,a0
  615.     move.l    address.freemem,a0
  616.     add.l    #wflowtable,a0 
  617.   MOVE.l  a0,a1
  618.   ADD.l   #$20000,a0
  619.   ADD.l   #$40000,a1
  620.   MOVEQ   #0,d0
  621.   MOVEQ   #0,d1
  622.   MOVEQ   #0,d2
  623.   MOVEQ   #0,d3
  624.   MOVEQ   #-1,d7
  625. wmake_flow_loop:
  626.   MOVE.w  d7,d0
  627.   MOVE.w  d7,d1
  628.   MOVE.w  d7,d2
  629.   AND.w   #$20,d0
  630.   CMP.w   #0,d0
  631.   BEQ     wno_null_1
  632.   AND.w   #$ffdf,d2
  633.   OR.w    #$001f,d2
  634. wno_null_1:
  635.   AND.w   #$800,d1
  636.   CMP.w   #0,d1
  637.   BEQ     wno_null_2
  638.   AND.w   #$f7ff,d2
  639.   OR.w    #$07c0,d2
  640. wno_null_2:
  641.   MOVE.w  d2,-(a0)
  642.   OR.w    #$f000,d2
  643.   MOVE.w  d2,-(a1)
  644.   DBRA d7,wmake_flow_loop
  645.   RTS
  646.  
  647. ;----------------------------------
  648. ; DIFFUUSI FADE VEKE
  649. ;----------------------------------
  650. wasm_diffuse:
  651.   MOVEQ   #0,d0
  652.   MOVEQ   #0,d1
  653.   MOVEQ   #0,d2
  654.   MOVEQ   #0,d3
  655.   MOVE.l    wfalconscreen,a0
  656.  
  657.   LEA     wxtable,a1
  658.   LEA     wytable,a2
  659.   LEA     wrndxtable,a3
  660.   LEA     wrndytable,a4
  661.  
  662.   MOVE.w  #253-1,d7
  663. wdiff_yloop:
  664.   SWAP    d7
  665.   MOVE.w  #320-1,d7
  666. wdiff_xloop:
  667.   MOVE.w  0(a1,d0.w),a5       ;x offset
  668.   ADD.l   0(a2,d1.w),a5       ;y  offset
  669.   ADD.l   a0,a5               ;current point
  670.  
  671.   MOVE.l  a5,a6
  672.   MOVEQ   #0,d4
  673.   move.w  0(a3,d2.w),d4       ;x rnd offset
  674.   ADD.w   0(a4,d3.w),d4       ;y rnd offset
  675.   EXT.l      d4
  676.   ADD.l   d4,a6               ;other point
  677.  
  678.   MOVE.w  (a5),d4             ;halve current colour
  679.   LSR.w   #1,d4
  680.   AND.w   #$7bef,d4
  681.   MOVE.w  d4,(a5)
  682.  
  683.   MOVE.w  (a6),d5             ;add to other colour
  684.   LSR.w   #1,d5
  685.   AND.w   #$7bef,d5
  686.   ADD.w   d4,d5
  687.   MOVE.w  d5,(a6)
  688.  
  689.   ADDQ    #2,d0
  690.   ADDQ    #4,d1
  691.   ADDQ    #2,d2
  692.   ADDQ    #2,d3
  693.  
  694.   CMP.w   #320*2,d0
  695.   BNE     wno_xptr_loop
  696.   MOVEQ   #0,d0
  697. wno_xptr_loop
  698.   CMP.w   #253*4,d1
  699.   BNE     wno_yptr_loop
  700.   MOVEQ   #0,d1
  701. wno_yptr_loop
  702.   CMP.w   #59*2,d2
  703.   BNE     wno_xrndptr_loop
  704.   MOVEQ   #0,d2
  705. wno_xrndptr_loop
  706.   CMP.w   #53*2,d3
  707.   BNE     wno_yrndptr_loop
  708.   MOVEQ   #0,d3
  709. wno_yrndptr_loop
  710.  
  711.   DBRA    d7,wdiff_xloop
  712.   SWAP    d7
  713.   DBRA    d7,wdiff_yloop
  714.   RTS
  715.  
  716. wxtable:
  717.   IncBin "difxtabl.bin"
  718. wytable:
  719.   IncBin "difytabl.bin"
  720. wrndxtable:
  721.   IncBin "rndxtabl.bin"
  722. wrndytable:
  723.   IncBin "rndytabl.bin"
  724. ;----------------------------------
  725. ;----------------------------------
  726. ;***************************
  727. ;*                         *
  728. ;* bezier drawings here... *
  729. ;*                         *
  730. ;***************************
  731. wkuppa
  732. ; PC1:keepinmo.s
  733.     dc.w    89
  734.     dc.w    231,111,224,116,221,123,223,129,10,4
  735.     dc.l    $00181818,$00181818
  736.     dc.w    222,129,215,138,217,148,212,158,10,4
  737.     dc.l    $00181818,$00181818
  738.     dc.w    208,159,203,149,193,157,180,144,12,4
  739.     dc.l    $00181818,$00181818
  740.     dc.w    180,144,168,130,171,154,165,163,8,4
  741.     dc.l    $00181818,$00181818
  742.     dc.w    166,171,174,155,176,151,180,154,4,7
  743.     dc.l    $00181818,$00181818
  744.     dc.w    181,154,198,165,206,171,216,174,4,12
  745.     dc.l    $00181818,$00181818
  746.     dc.w    217,174,225,162,234,152,242,128,10,4
  747.     dc.l    $00181818,$00181818
  748.     dc.w    240,136,249,152,256,154,262,168,4,4
  749.     dc.l    $00181818,$00181818
  750.     dc.w    265,169,265,191,280,191,285,216,10,4
  751.     dc.l    $00181818,$00202020
  752.     dc.w    286,219,285,239,293,229,304,219,4,8
  753.     dc.l    $00181818,$00181818
  754.     dc.w    308,212,293,216,294,219,290,209,4,4
  755.     dc.l    $00181818,$00181818
  756.     dc.w    289,207,285,189,280,182,278,169,4,8
  757.     dc.l    $00181818,$00181818
  758.     dc.w    275,163,268,149,260,134,250,117,4,10
  759.     dc.l    $00181818,$00181818
  760.     dc.w    251,118,249,106,257,91,257,76,4,9
  761.     dc.l    $00181818,$00181818
  762.     dc.w    256,86,261,97,272,112,274,99,4,10
  763.     dc.l    $00181818,$00181818
  764.     dc.w    274,91,283,93,287,74,274,78,4,4
  765.     dc.l    $00181818,$00181818
  766.     dc.w    275,80,268,76,273,87,267,95,4,4
  767.     dc.l    $00181818,$00181818
  768.     dc.w    266,86,263,78,260,61,252,63,4,9
  769.     dc.l    $00181818,$00181818
  770.     dc.w    252,66,248,62,249,60,250,55,4,4
  771.     dc.l    $00181818,$00181818
  772.     dc.w    244,52,256,59,258,58,258,53,4,4
  773.     dc.l    $00181818,$00181818
  774.     dc.w    258,47,257,23,232,27,237,45,4,12
  775.     dc.l    $00181818,$00202020
  776.     dc.w    238,49,238,57,238,60,235,60,4,4
  777.     dc.l    $00181818,$00181818
  778.     dc.w    238,62,226,59,224,66,218,73,10,4
  779.     dc.l    $00181818,$00181818
  780.     dc.w    218,75,213,78,208,85,204,92,8,4
  781.     dc.l    $00181818,$00181818
  782.     dc.w    207,94,210,101,220,102,229,107,4,4
  783.     dc.l    $00181818,$00181818
  784.     dc.w    230,109,232,114,239,116,246,109,4,4
  785.     dc.l    $00181818,$00181818
  786.     dc.w    245,108,244,96,236,108,228,101,4,10
  787.     dc.l    $00181818,$00181818
  788.     dc.w    232,103,227,99,222,95,217,88,4,9
  789.     dc.l    $00181818,$00181818
  790.     dc.w    218,93,221,86,227,81,231,76,4,9
  791.     dc.l    $00181818,$00181818
  792.     dc.w    227,83,230,90,232,96,233,104,4,6
  793.     dc.l    $00181818,$00181818
  794.     dc.w    226,60,152,23,137,13,137,45,8,12
  795.     dc.l    $00181818,$00181818
  796.     dc.w    232,59,185,23,177,12,170,38,8,10
  797.     dc.l    $00101010,$00101010
  798.     dc.w    141,48,191,57,173,52,223,63,4,6
  799.     dc.l    $00181818,$00181818
  800.     dc.w    230,111,238,117,247,115,250,114,4,6
  801.     dc.l    $00181818,$00181818
  802.     dc.w    224,118,232,119,240,121,248,123,12,6
  803.     dc.l    $00221100,$00000000
  804.     dc.w    222,129,227,131,235,134,238,134,9,4
  805.     dc.l    $00181000,$00180800
  806.     dc.w    217,138,222,142,230,145,233,145,9,4
  807.     dc.l    $00181000,$00181000
  808.     dc.w    215,149,221,152,227,153,228,154,9,4
  809.     dc.l    $00181000,$00181000
  810.     dc.w    212,157,215,159,220,162,223,162,9,4
  811.     dc.l    $00181000,$00181000
  812.     dc.w    239,137,245,135,252,132,254,128,9,4
  813.     dc.l    $00100800,$00100800
  814.     dc.w    244,145,249,143,257,139,259,136,9,4
  815.     dc.l    $00100800,$00100800
  816.     dc.w    251,154,256,152,263,146,264,144,9,4
  817.     dc.l    $00100800,$00100800
  818.     dc.w    259,162,263,160,268,156,270,154,9,4
  819.     dc.l    $00100800,$00100800
  820.     dc.w    264,170,268,169,274,168,275,165,9,4
  821.     dc.l    $00100800,$00100800
  822.     dc.w    39,56,54,60,40,80,32,112,12,5
  823.     dc.l    $00302010,$00302010
  824.     dc.w    45,55,53,58,46,79,34,111,2,5
  825.     dc.l    $00304050,$00304050
  826.     dc.w    67,70,63,76,56,90,40,90,12,5
  827.     dc.l    $00181008,$00302010
  828.     dc.w    42,90,61,93,59,99,61,113,12,5
  829.     dc.l    $00181008,$00302010
  830.     dc.w    71,71,67,77,60,91,44,91,5,2
  831.     dc.l    $00304050,$00304050
  832.     dc.w    40,91,59,94,57,100,56,112,2,4
  833.     dc.l    $00304050,$00304050
  834.     dc.w    40,59,38,57,42,53,46,55,4,4
  835.     dc.l    $00181818,$00181818
  836.     dc.w    64,74,64,67,68,68,69,68,4,4
  837.     dc.l    $00181818,$00181818
  838.     dc.w    69,91,117,95,100,71,86,70,5,12
  839.     dc.l    $00302010,$00181008
  840.     dc.w    87,71,61,74,61,129,95,105,12,5
  841.     dc.l    $00302010,$00302010
  842.     dc.w    72,93,120,97,103,73,89,72,5,2
  843.     dc.l    $00304050,$00000010
  844.     dc.w    90,73,64,76,64,131,98,107,2,8
  845.     dc.l    $00000000,$00203040
  846.     dc.w    72,79,75,75,79,72,84,70,4,4
  847.     dc.l    $00181818,$00181818
  848.     dc.w    106,92,154,96,137,72,123,71,5,12
  849.     dc.l    $00302010,$00181008
  850.     dc.w    124,72,98,75,98,130,132,106,12,5
  851.     dc.l    $00302010,$00302010
  852.     dc.w    109,94,157,98,140,74,126,73,5,2
  853.     dc.l    $00304050,$00000010
  854.     dc.w    127,74,101,77,101,132,135,108,2,8
  855.     dc.l    $00000000,$00203040
  856.     dc.w    109,80,112,76,116,73,121,71,4,4
  857.     dc.l    $00181818,$00181818
  858.     dc.w    143,102,168,139,191,48,145,77,5,12
  859.     dc.l    $00302010,$00302010
  860.     dc.w    146,71,144,91,138,116,131,132,12,5
  861.     dc.l    $00302010,$00302010
  862.     dc.w    141,105,170,142,195,50,148,80,7,5
  863.     dc.l    $00203040,$00001020
  864.     dc.w    149,73,147,93,145,117,132,132,2,5
  865.     dc.l    $00102030,$00102030
  866.     dc.w    144,76,143,75,146,68,149,70,4,4
  867.     dc.l    $00181818,$00181818
  868.     dc.w    59,152,64,161,58,183,54,194,12,6
  869.     dc.l    $00181008,$00302010
  870.     dc.w    62,143,75,136,51,136,61,141,12,5
  871.     dc.l    $00181008,$00302010
  872.     dc.w    64,154,72,160,61,181,54,197,2,12
  873.     dc.l    $00001020,$00081018
  874.     dc.w    65,145,78,137,53,136,65,145,4,7
  875.     dc.l    $00001020,$00001020
  876.     dc.w    59,157,57,149,60,145,64,153,4,4
  877.     dc.l    $00181818,$00181818
  878.     dc.w    58,141,58,136,62,136,62,136,4,4
  879.     dc.l    $00101010,$00101010
  880.     dc.w    77,150,83,159,79,180,75,194,12,5
  881.     dc.l    $00181008,$00302010
  882.     dc.w    106,158,110,168,109,178,103,194,12,7
  883.     dc.l    $00181008,$00181008
  884.     dc.w    83,161,88,152,99,150,104,155,6,12
  885.     dc.l    $00181008,$00181008
  886.     dc.w    84,165,89,156,100,154,106,158,10,2
  887.     dc.l    $00081018,$00081018
  888.     dc.w    83,151,87,160,83,181,76,197,2,9
  889.     dc.l    $00102030,$00081018
  890.     dc.w    107,154,113,158,117,167,103,199,2,7
  891.     dc.l    $00102030,$00102030
  892.     dc.w    78,155,76,149,79,146,83,151,4,4
  893.     dc.l    $00181818,$00181818
  894.     dc.w    129,196,142,189,118,189,128,194,12,5
  895.     dc.l    $00181008,$00302010
  896.     dc.w    132,198,145,190,120,189,132,198,4,7
  897.     dc.l    $00001020,$00001020
  898.     dc.w    125,194,125,189,129,189,129,189,4,4
  899.     dc.l    $00101010,$00101010
  900.     dc.w    147,195,160,188,136,188,146,193,12,5
  901.     dc.l    $00181008,$00302010
  902.     dc.w    150,197,163,189,138,188,150,197,4,7
  903.     dc.l    $00001020,$00001020
  904.     dc.w    143,193,143,188,147,188,147,188,4,4
  905.     dc.l    $00101010,$00101010
  906.     dc.w    165,195,178,188,154,188,164,193,12,5
  907.     dc.l    $00181008,$00302010
  908.     dc.w    168,197,181,189,156,188,168,197,4,7
  909.     dc.l    $00001020,$00001020
  910.     dc.w    161,193,161,188,165,188,165,188,4,4
  911.     dc.l    $00101010,$00101010
  912.  
  913.  
  914. wkuppa2    dc.w    54
  915.     dc.w    17,78,22,94,17,120,15,140,15,7
  916.     dc.l    $00081018,$00102030
  917.     dc.w    19,86,42,58,41,110,33,143,15,7
  918.     dc.l    $00081018,$00102030
  919.     dc.w    38,85,61,57,60,109,52,142,15,7
  920.     dc.l    $00081018,$00102030
  921.     dc.w    23,83,28,99,23,125,20,144,15,7
  922.     dc.l    $00181008,$00302010
  923.     dc.w    25,89,48,61,47,113,39,145,15,7
  924.     dc.l    $00181008,$00302010
  925.     dc.w    45,88,68,60,67,112,59,144,15,7
  926.     dc.l    $00181008,$00302010
  927.     dc.w    17,81,19,89,19,97,18,107,2,6
  928.     dc.l    $00303030,$00303030
  929.     dc.w    18,113,17,125,15,132,15,140,6,2
  930.     dc.l    $00303030,$00303030
  931.     dc.w    37,84,39,92,39,100,38,110,2,6
  932.     dc.l    $00303030,$00303030
  933.     dc.w    38,114,37,126,35,133,34,141,6,2
  934.     dc.l    $00303030,$00303030
  935.     dc.w    55,85,57,93,57,101,56,111,2,6
  936.     dc.l    $00303030,$00303030
  937.     dc.w    56,113,55,125,53,132,52,140,6,2
  938.     dc.l    $00303030,$00303030
  939.     dc.w    115,85,98,55,84,109,87,127,7,15
  940.     dc.l    $00102030,$00081018
  941.     dc.w    87,127,99,158,124,111,110,90,15,7
  942.     dc.l    $00081018,$00102030
  943.     dc.w    118,90,104,60,89,112,95,131,7,15
  944.     dc.l    $00302010,$00181008
  945.     dc.w    95,129,107,163,129,115,116,94,15,7
  946.     dc.l    $00181008,$00302010
  947.     dc.w    97,81,91,90,89,97,87,106,2,6
  948.     dc.l    $00303030,$00303030
  949.     dc.w    87,104,85,114,85,125,95,138,6,2
  950.     dc.l    $00303030,$00303030
  951.     dc.w    101,136,107,132,109,125,111,118,2,6
  952.     dc.l    $00303030,$00303030
  953.     dc.w    112,118,112,111,112,104,110,91,6,2
  954.     dc.l    $00303030,$00303030
  955.     dc.w    146,55,147,105,130,114,152,136,7,15
  956.     dc.l    $00102030,$00081018
  957.     dc.w    130,75,142,73,148,78,158,77,7,15
  958.     dc.l    $0002040C,$00081018
  959.     dc.w    152,68,151,114,139,118,160,140,7,15
  960.     dc.l    $00302010,$00181008
  961.     dc.w    134,80,142,79,150,85,161,82,7,15
  962.     dc.l    $000C0402,$00181008
  963.     dc.w    147,60,145,71,145,83,140,102,2,6
  964.     dc.l    $00303030,$00303030
  965.     dc.w    141,103,143,116,139,118,149,132,6,2
  966.     dc.l    $00303030,$00303030
  967.     dc.w    199,65,194,63,192,68,194,75,2,15
  968.     dc.l    $00000000,$00081018
  969.     dc.w    190,82,192,112,182,117,192,136,7,15
  970.     dc.l    $00102030,$00081018
  971.     dc.w    203,69,197,67,195,73,197,79,2,15
  972.     dc.l    $00000000,$00181008
  973.     dc.w    194,87,195,116,186,121,198,139,7,15
  974.     dc.l    $00302010,$00181008
  975.     dc.w    190,63,189,67,190,69,189,72,10,2
  976.     dc.l    $00000000,$00303030
  977.     dc.w    190,85,189,94,190,100,189,109,2,6
  978.     dc.l    $00303030,$00303030
  979.     dc.w    188,108,187,122,187,129,194,138,6,2
  980.     dc.l    $00303030,$00303030
  981.     dc.w    251,83,234,53,220,107,223,125,7,15
  982.     dc.l    $00102030,$00081018
  983.     dc.w    223,125,235,156,260,109,246,88,15,7
  984.     dc.l    $00081018,$00102030
  985.     dc.w    254,88,240,58,225,110,231,129,7,15
  986.     dc.l    $00302010,$00181008
  987.     dc.w    232,128,244,162,266,114,253,93,15,7
  988.     dc.l    $00181008,$00302010
  989.     dc.w    233,79,227,88,225,95,223,104,2,6
  990.     dc.l    $00303030,$00303030
  991.     dc.w    223,102,221,112,221,123,232,136,6,2
  992.     dc.l    $00303030,$00303030
  993.     dc.w    237,134,243,130,245,123,247,116,2,6
  994.     dc.l    $00303030,$00303030
  995.     dc.w    248,116,251,107,249,97,246,91,6,2
  996.     dc.l    $00303030,$00303030
  997.     dc.w    280,74,286,90,280,116,278,137,15,7
  998.     dc.l    $00081018,$00102030
  999.     dc.w    281,82,309,56,307,106,298,137,15,7
  1000.     dc.l    $00081018,$00102030
  1001.     dc.w    286,79,292,93,286,117,284,141,15,7
  1002.     dc.l    $00181008,$00302010
  1003.     dc.w    287,85,315,59,313,108,304,139,15,7
  1004.     dc.l    $00181008,$00302010
  1005.     dc.w    280,80,282,89,282,96,281,106,2,6
  1006.     dc.l    $00303030,$00303030
  1007.     dc.w    281,105,280,117,278,124,278,136,6,2
  1008.     dc.l    $00303030,$00303030
  1009.     dc.w    303,84,305,92,305,100,304,110,2,6
  1010.     dc.l    $00303030,$00303030
  1011.     dc.w    304,108,303,121,300,127,299,136,6,2
  1012.     dc.l    $00303030,$00303030
  1013.     dc.w    292,74,291,79,292,80,292,83,10,2
  1014.     dc.l    $00000000,$00303030
  1015.     dc.w    11,179,45,169,85,167,120,168,5,30
  1016.     dc.l    $00203010,$00302820
  1017.     dc.w    119,168,151,168,212,182,296,179,30,10
  1018.     dc.l    $00302820,$00302020
  1019.     dc.w    22,190,56,180,96,178,131,179,5,30
  1020.     dc.l    $00101808,$00181410
  1021.     dc.w    130,179,162,179,223,193,307,190,30,10
  1022.     dc.l    $00181410,$00181010
  1023.  
  1024.     even
  1025. ;***********************
  1026. ;*                     *
  1027. ;* Space for variables *
  1028. ;*                     *
  1029. ;***********************
  1030.  
  1031. wfalconscreen:
  1032.   Dc.l  0
  1033. wsizepos:
  1034.   Dc.l  0
  1035. wsizechange:
  1036.   Dc.l  0
  1037. wredpos:
  1038.   Dc.l  0
  1039. wredchange:
  1040.   Dc.l  0
  1041. wgreenpos:
  1042.   Dc.l  0
  1043. wgreenchange:
  1044.   Dc.l  0
  1045. wbluepos:
  1046.   Dc.l  0
  1047. wbluechange:
  1048.   Dc.l  0
  1049. wsailo:
  1050.   Dc.l  0
  1051.  
  1052. ;----------------------------------------
  1053.  
  1054. wbeztable:
  1055.   IncBin    beztable.bin
  1056.  
  1057. wrawball:
  1058.   IncBin    ball2.bin
  1059.   Ds.b  3*32*32
  1060.  
  1061. wcolourtable:
  1062.   Ds.w  256
  1063. ;wflowtable:
  1064. ;        ds.b  $40000
  1065.  
  1066.     RSRESET            ;susieen ruutu 524 416 bytes..
  1067. wflowtable    rs.w    $40000/2
  1068. wqqa        RS.b 3600
  1069. wruutu.write:    RS.w    320*256+256
  1070. wqqae        RS.b 3600
  1071.  
  1072.