Advertisement
TheBlad768

Smooth palette change (S3K)

Mar 1st, 2019
482
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; How to use:
  2.         jsr (Create_New_Sprite).l
  3.         bne.s   +
  4.         move.l  #Obj_SmoothPalette,(a1)
  5.         move.w  #4,subtype(a1)
  6.         move.l  #Pal_FDZ3_Rain,$30(a1)
  7.         move.w  #Normal_palette_line_3,$34(a1)
  8.         move.w  #16-1,$38(a1)
  9.  
  10. ; =============== S U B R O U T I N E =======================================
  11.  
  12. Obj_SmoothPalette:
  13.         subq.w  #1,$2E(a0)
  14.         bpl.s   SmoothPalette_Return
  15.         move.w  subtype(a0),$2E(a0)
  16.         movea.l $30(a0),a1          ; palette pointer
  17.         movea.w $34(a0),a2          ; palette ram
  18.         move.w  $38(a0),d6          ; palette size
  19.         jsr (Pal_FadeToPal).l
  20.         bne.s   SmoothPalette_Return
  21.         move.l  #Delete_Current_Sprite,address(a0)
  22.  
  23. SmoothPalette_Return:
  24.         rts
  25. ; ---------------------------------------------------------------------------
  26. ; Smooth palette change
  27. ; Inputs:
  28. ; a1 = current palette
  29. ; a2 = current palette line
  30. ; d7 = number of colors
  31. ; ---------------------------------------------------------------------------
  32.  
  33. ; =============== S U B R O U T I N E =======================================
  34.  
  35. Pal_FadeToPal:
  36.         tst.b   (Palette_refade_count).w
  37.         bne.s   Pal_FadeToPal_Loop
  38.         move.b  #7,(Palette_refade_count).w
  39.  
  40. Pal_FadeToPal_Loop:
  41.         moveq   #0,d5
  42.         move.w  (a1)+,d2
  43.         move.w  (a2),d3
  44.         cmp.w   d2,d3
  45.         beq.s   Pal_FadeToPal_Next
  46.         move.w  d2,d0
  47.         move.w  d3,d1
  48.         andi.w  #$E,d0
  49.         andi.w  #$E,d1
  50.         move.w  #2,d4
  51.         cmp.w   d1,d0
  52.         beq.s   ++
  53.         bhi.s   +
  54.         neg.w   d4
  55. +       add.w   d4,d1
  56. +       or.w    d1,d5
  57.         move.w  d2,d0
  58.         move.w  d3,d1
  59.         andi.w  #$E0,d0
  60.         andi.w  #$E0,d1
  61.         move.w  #$20,d4
  62.         cmp.w   d1,d0
  63.         beq.s   ++
  64.         bhi.s   +
  65.         neg.w   d4
  66. +       add.w   d4,d1
  67. +       or.w    d1,d5
  68.         move.w  d2,d0
  69.         move.w  d3,d1
  70.         andi.w  #$E00,d0
  71.         andi.w  #$E00,d1
  72.         move.w  #$200,d4
  73.         cmp.w   d1,d0
  74.         beq.s   ++
  75.         bhi.s   +
  76.         neg.w   d4
  77. +       add.w   d4,d1
  78. +       or.w    d1,d5
  79.         move.w  d5,(a2)
  80.  
  81. Pal_FadeToPal_Next:
  82.         addq.w  #2,a2
  83.         dbf d7,Pal_FadeToPal_Loop
  84.         subq.b  #1,(Palette_refade_count).w
  85.         rts
  86. ; End of function Pal_FadeToPal
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement