home *** CD-ROM | disk | FTP | other *** search
/ Fujiology Archive / fujiology_archive_v1_0.iso / !FALCON / AGGRESSN / MOTION.ZIP / MOTION / DSP / ROMEO9.S56 < prev    next >
Text File  |  1995-04-14  |  5KB  |  272 lines

  1. ;---------------------------------------------------------------
  2. ; Julia estimate-render by WizTom..  (could be faster the light ~3 vbl...)
  3. ;---------------------------------------------------------------
  4. ; 256*128 mirror, pix/w (x-y)
  5. ; faster calc..
  6.  
  7.  
  8. PBC    equ    $ffe0
  9. HSR    equ    $ffe9
  10. HTX    equ    $ffeb
  11.  
  12.     org    p:$0
  13.     jmp    start
  14.  
  15. ;    org    p:$40
  16.     dc    0,0,0,0,0,0,0,0,0,0
  17.     dc    0,0,0,0,0,0,0,0,0,0
  18.     dc    0,0,0,0,0,0,0,0,0,0
  19.     dc    0,0,0,0,0,0,0,0,0,0
  20.     dc    0,0,0,0,0,0,0,0,0,0
  21.     dc    0,0,0,0,0,0,0,0,0,0
  22.     dc    0,0
  23. start    
  24. ;    jmp    burn_silicon
  25.  
  26. secure    movep    #1,X:PBC
  27.     jclr    #0,x:HSR,secure
  28.     move    x:HTX,a
  29.     lsl    a    
  30.     movep    #0,x:$fffe        ;port a (luku tahtoo tökkiä ilman..)
  31. secure2    jclr    #1,X:HSR,secure2
  32.     move    a1,X:HTX        
  33. start2
  34.     move    #$ffff,m0    
  35.     move    #$ffff,m1    
  36.     move    #$3fff,m2        ;rajaa x/y gfx blokit..
  37.     move    #$ffff,m3    
  38.     move    #$ffff,m4    
  39.     move    #$ffff,m5    
  40.     move    #$ffff,m6    
  41.     move    #$ffff,m7    
  42.     move    #>128,x0
  43.     move    x0,x:midtab
  44.     move    #>256*128,x0
  45.     move    x0,x:midtab+1
  46.     move    #>$ffff00,x0
  47.     move    x0,x:midtab+2
  48.     move    #>120,x0
  49.     move    x0,x:midtab+3
  50.  
  51. ;---------------
  52.     jsr    get_cords
  53.     jsr    burn_silicon
  54.     jsr    write_gfx
  55.     jmp    start2
  56. ;---------------------------------------------------
  57.  
  58. get_cords
  59. l1    movep    #1,X:PBC            ;feed x
  60.     jclr    #0,x:HSR,l1
  61.     move    x:HTX,x0
  62.     move    x0,x:vakio
  63. l2    movep    #1,X:PBC            ;feed x
  64.     jclr    #0,x:HSR,l2
  65.     move    x:HTX,x0
  66.     move    x0,x:vakio+1
  67.     rts
  68. ;-------------------------------------------------
  69. write_gfx
  70.  
  71.     move    #64*256,x0
  72.     move    #0,x1
  73.     do    x0,l4
  74. l3    jclr    #1,X:HSR,l3
  75.     move    x:(r7),X:HTX        
  76.     move    x1,x:(r7)+
  77.     nop
  78. l4
  79.     move    #0,r7
  80.     do    x0,l6
  81. l5    jclr    #1,X:HSR,l5
  82.     move    y:(r7),X:HTX        
  83.     move    x1,y:(r7)+
  84.     nop
  85. l6
  86.     rts
  87. ;---------------------------------------------------------
  88. burn_silicon
  89.     move    #>4,n6
  90.     move    #vakio,r5
  91.     move    #$000001,x0            ;+2
  92.     move    x0,x:base_y
  93.     move    #$800001,x0            ;-2
  94.     move    x0,x:base_x
  95.  
  96.     do    #128,loopy
  97.  
  98.     do    #256,loopx    
  99.     
  100.     move    #0,r0                ;iter count
  101.     move    x:base_x,a            ;load base
  102.     move    x:base_y,b
  103.     move    #cheat,r1
  104.     move    #midtab,r6
  105.  
  106.  
  107.     do    #120,iter
  108. ;------------    
  109.     andi    #$bf,ccr            ;clear limit
  110.     move    a,x0                ;old z
  111.     move    b,y0    
  112.     jls    g_out
  113.  
  114.     tst    b        x:(r6)+,x1
  115.     jpl    no_mirror
  116.     neg    a
  117.     neg    b    a,x0
  118.     move    b,y0
  119. no_mirror
  120.     
  121.     move    x1,a
  122.     mac    x1,x0,a        x:(r6)+,x1    ;x*128+128
  123.     mpy    x1,y0,b        x:(r6)+,x1    ;y*256*128
  124.     and    x1,b        a1,x1        ;mask y
  125.     add    x1,b        x:(r6)+,x1    ;120>x1
  126.     move    b1,r2
  127.     move    b1,x:(r1)+            ;write cords to cheat
  128.     jset    #13,r2,ram_X
  129.     move    x:(r2),a    
  130. ram_y
  131.  
  132.     tst    a        (r0)+        ;inc iter
  133.     jeq    not_ready
  134.     cmp    x1,a                ;fillataanko x0:lla kaikki?
  135.     jeq    found_joukko
  136.     jmp    found_color
  137. ram_x    move    y:(r2),a
  138.     jmp    ram_Y
  139. not_ready
  140.  
  141.     mpy    x0,x0,b                    
  142.     mac    y0,y0,b        b,a        ;x^2+y^2 > 4 ?
  143.     jec    not_out
  144.     enddo
  145.     jmp    exit
  146. not_out
  147.  
  148.     mac    -y0,y0,a    (r6)-n6
  149.     asl    a
  150.     mpy    x0,y0,b        X:(r5)+,x0
  151.     add    x0,a                ;x*x-y*y+c
  152.     asl    b        
  153.     asl    b        x:(r5)-,x0
  154.     add    x0,b                ;x*y*2+ci (kertaa 2!!!)
  155.  
  156. iter
  157. ;--------------------
  158. ;joukossa
  159.     move    #cheat,r7
  160.     move    #>120,x1
  161.     move    x:(r7)+,r2            ;alkulista, (vikat epävarmoja..)
  162.     do    #120-60,fill_gfx        ;fillaa max:illa
  163.     jset    #13,r2,ram_x2
  164.     move    x1,x:(r2)        
  165. ram_y2
  166.     move    x:(r7)+,r2
  167.     nop
  168.     nop
  169. fill_gfx
  170.     jmp    nextpiste
  171.  
  172. ram_x2
  173.     move    x1,y:(r2)
  174.     jmp    ram_y2
  175. ;---------------        
  176. found_joukko
  177.     enddo
  178.     move    x:-(r1),r2
  179.     do    r0,fill_full
  180.     jset    #13,r2,ram_x3
  181.     move    x1,x:(r2)
  182. ram_y3
  183.     move    x:-(r1),r2
  184.     nop
  185.     nop
  186. fill_full
  187.     jmp    nextpiste
  188.  
  189. ram_x3
  190.     move    x1,y:(r2)
  191.     jmp    ram_y3
  192. ;---------------        
  193. found_color
  194.     enddo
  195.     move    a1,r7
  196.     move    x:-(r1),r2
  197.     do    r0,fill_color
  198.     jset    #13,r2,ram_x4
  199.     move    r7,x:(r2)
  200. ram_y4
  201.     move    x:-(r1),r2
  202.     move    (r7)+
  203.     nop
  204. fill_color
  205.     jmp    nextpiste
  206.  
  207. ram_x4
  208.     move    r7,y:(r2)
  209.     jmp    ram_y4
  210. ;---------------        
  211. g_out
  212.     enddo
  213.     move    #2,r7                ;color
  214.     move    x:-(r1),r2            ;skriivaa vikasta alkuun
  215.     do    r0,slide2
  216.     jset    #13,r2,ram_x5
  217.     move    r7,x:(r2)
  218. ram_y5
  219.     move    x:-(r1),r2            ;skriivaa vikasta alkuun
  220.     move    (r7)+
  221.     nop
  222. slide2
  223.     jmp    nextpiste
  224.  
  225. ram_x5
  226.     move    r7,y:(r2)
  227.     jmp    ram_y5
  228. ;-------------------
  229. exit                        ;fillaa listasta slide        
  230.     move    #1,r7                ;color
  231.     move    x:-(r1),r2            ;skriivaa vikasta alkuun
  232.     do    r0,slide
  233.     jset    #13,r2,ram_x6
  234.     move    r7,x:(r2)
  235. ram_y6
  236.     move    x:-(r1),r2            ;skriivaa vikasta alkuun
  237.     move    (r7)+
  238.     nop
  239. slide
  240.     jmp    nextpiste
  241.  
  242. ram_x6
  243.     move    r7,y:(r2)
  244.     jmp    ram_y6
  245. ;-------------
  246. nextpiste
  247.     move    #$00ffff,x0
  248.     move    x:base_x,a
  249.     add    x0,a
  250.     move    a1,x:base_x
  251. loopx
  252.     move    #$800001,x0
  253.     move    x0,x:base_x
  254.      move    #$00ffff,x0
  255.     move    x:base_y,a
  256.     add    x0,a
  257.     move    a1,x:base_y
  258. loopy
  259.  
  260.     rts
  261. ;---------------------------------------------------------
  262.     org    x:$4000
  263. spare    ds    1
  264.  
  265. midtab    ds    4
  266.  
  267. base_x    ds    1
  268. base_y    ds    1
  269. vakio    ds    2        ;c,ci
  270. cheat    ds    128        ;mid-iter table (x,y1)
  271.  
  272.     end