Advertisement
Guest User

Untitled

a guest
Feb 14th, 2016
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;------------------------------------------------------------
  2. _FireDraw_4x4:                 ; (void)
  3. ;------------------------------------------------------------
  4.     movem.l d0-d3/a0-a4,-(sp)  ; store registers
  5.     move.l  _FireArray,a0      ; fire array addr
  6.     move.l  _FireChunky,a1     ; chunky screen addr
  7.     move.l  #FIREH-1,d0        ; y < FIREH
  8. .loopY                         ; for y
  9.     move.l  a1,a2              ; a2 = a1
  10.     move.l  a1,a3              ; a3 = a1
  11.     move.l  a1,a4              ; a4 = a1
  12.     add.l   #(SCRW*1),a2       ; a2 + 1 line
  13.     add.l   #(SCRW*2),a3       ; a3 + 2 lines
  14.     add.l   #(SCRW*3),a4       ; a4 + 3 lines
  15.     move.l  #FIREW-1,d1        ; x < FIREW
  16. .loopX                         ; for x
  17.     move.b  (a0)+,d2           ; get byte
  18.     move.b  d2,d3              ; byte to long
  19.     rol.w   #8,d3              ;
  20.     move.b  d2,d3              ;
  21.     move.w  d3,d2              ;
  22.     swap    d3                 ;
  23.     move.w  d2,d3              ;
  24.     move.l  d3,(a1)+           ; write pixels
  25.     move.l  d3,(a2)+           ;
  26.     move.l  d3,(a3)+           ;
  27.     move.l  d3,(a4)+           ;
  28.     dbf     d1,.loopX          ; next x
  29.     move.l  a4,a1              ; a1 = a4
  30.     dbf     d0,.loopY          ; next y
  31.     movem.l (sp)+,d0-d3/a0-a4  ; restore registers
  32.     rts                        ; return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement