Advertisement
vladikcomper

Vladikcomper's Palette Fading Routines

Jul 23rd, 2015
472
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; ---------------------------------------------------------------------------
  2. ; Subroutine to fade out and fade in
  3. ; ---------------------------------------------------------------------------
  4.  
  5. ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
  6.  
  7.  
  8. Pal_FadeTo:
  9.         move.w  #$3F,($FFFFF626).w
  10.  
  11. Pal_FadeTo2:
  12.         moveq   #0,d0
  13.         lea ($FFFFFB00).w,a0
  14.         move.b  ($FFFFF626).w,d0
  15.         adda.w  d0,a0
  16.         moveq   #0,d1
  17.         move.b  ($FFFFF627).w,d0
  18.  
  19. Pal_ToBlack:
  20.         move.w  d1,(a0)+
  21.         dbf d0,Pal_ToBlack  ; fill pallet with $000 (black)
  22.  
  23.         move.w  #$15,d4
  24.  
  25. loc_1DCE:
  26.         move.b  #$12,($FFFFF62A).w
  27.         bsr.w   DelayProgram
  28.         move.b  #$12,($FFFFF62A).w
  29.         bsr.w   DelayProgram
  30.         bsr.s   Pal_FadeIn
  31.         bsr.w   RunPLC_RAM
  32.         dbf d4,loc_1DCE
  33.         rts
  34. ; End of function Pal_FadeTo
  35.  
  36. ; ---------------------------------------------------------------------------
  37. ; Pallet fade-in subroutine
  38. ; ---------------------------------------------------------------------------
  39.  
  40. ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
  41.  
  42.  
  43. Pal_FadeIn:             ; XREF: Pal_FadeTo
  44.         moveq   #0,d0
  45.         lea ($FFFFFB00).w,a0
  46.         lea ($FFFFFB80).w,a1
  47.         move.b  ($FFFFF626).w,d0
  48.         adda.w  d0,a0
  49.         adda.w  d0,a1
  50.         move.b  ($FFFFF627).w,d0
  51.  
  52. loc_1DFA:
  53.         bsr.s   Pal_AddColor
  54.         dbf d0,loc_1DFA
  55.         cmpi.b  #1,($FFFFFE10).w
  56.         bne.s   locret_1E24
  57.         moveq   #0,d0
  58.         lea ($FFFFFA80).w,a0
  59.         lea ($FFFFFA00).w,a1
  60.         move.b  ($FFFFF626).w,d0
  61.         adda.w  d0,a0
  62.         adda.w  d0,a1
  63.         move.b  ($FFFFF627).w,d0
  64.  
  65. loc_1E1E:
  66.         bsr.s   Pal_AddColor
  67.         dbf d0,loc_1E1E
  68.  
  69. locret_1E24:
  70.         rts
  71. ; End of function Pal_FadeIn
  72.  
  73.  
  74. ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
  75.  
  76.  
  77. Pal_AddColor:               ; XREF: Pal_FadeIn
  78.  
  79.         move.b  (a0),d2     ; d2 = B (actual)
  80.         cmp.b   (a1)+,d2    ; B (actual) = B (taget)?
  81.         beq.s   @outB
  82.         addq.b  #2,d2
  83.     @outB:  move.b  d2,(a0)+    ; output B'
  84.  
  85.         move.b  (a0),d2     ; d2 = GR (actual)  
  86.         move.b  (a1)+,d5    ; d5 = GR (target)
  87.         move.b  d2,d3
  88.         move.b  d5,d6
  89.         andi.b  #$E0,d3     ; d3 = G0
  90.         andi.b  #$E0,d6
  91.         cmp.b   d6,d3
  92.         beq.s   @endG
  93.         addi.b  #$20,d3
  94.     @endG:  andi.b  #$E,d2      ; d2 = 0R
  95.         andi.b  #$E,d5
  96.         cmp.b   d2,d5
  97.         beq.s   @endR    
  98.         addq.b  #2,d2
  99.     @endRor.b    d3,d2
  100.         move.b  d2,(a0)+
  101.  
  102.         rts
  103.  
  104. ; End of function Pal_AddColor
  105.  
  106.  
  107. ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
  108.  
  109.  
  110. Pal_FadeFrom:
  111.         move.w  #$3F,($FFFFF626).w
  112.         move.w  #$15,d4
  113.  
  114. loc_1E5C:
  115.         move.b  #$12,($FFFFF62A).w
  116.         bsr.w   DelayProgram
  117.         move.b  #$12,($FFFFF62A).w
  118.         bsr.w   DelayProgram
  119.         bsr.s   Pal_FadeOut
  120.         bsr.w   RunPLC_RAM
  121.         dbf d4,loc_1E5C
  122.         rts
  123. ; End of function Pal_FadeFrom
  124.  
  125. ; ---------------------------------------------------------------------------
  126. ; Pallet fade-out subroutine
  127. ; ---------------------------------------------------------------------------
  128.  
  129. ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
  130.  
  131.  
  132. Pal_FadeOut:                ; XREF: Pal_FadeFrom
  133.         moveq   #0,d0
  134.         lea ($FFFFFB00).w,a0
  135.         move.b  ($FFFFF626).w,d0
  136.         adda.w  d0,a0
  137.         move.b  ($FFFFF627).w,d0
  138.  
  139. loc_1E82:
  140.         bsr.s   Pal_DecColor
  141.         dbf d0,loc_1E82
  142.  
  143.         moveq   #0,d0
  144.         lea ($FFFFFA80).w,a0
  145.         move.b  ($FFFFF626).w,d0
  146.         adda.w  d0,a0
  147.         move.b  ($FFFFF627).w,d0
  148.  
  149. loc_1E98:
  150.         bsr.s   Pal_DecColor
  151.         dbf d0,loc_1E98
  152.         rts
  153. ; End of function Pal_FadeOut
  154.  
  155.  
  156. ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
  157.  
  158.  
  159. Pal_DecColor:               ; XREF: Pal_FadeOut
  160.         tst.b   (a0)+       ; is B zero?
  161.         beq.s   @Green      ; if yes, branch
  162.         subq.b  #2,-1(a0)   ; decrease B
  163.  
  164.     @Green: move.b  (a0),d2     ; d2 -> GR
  165.         move.b  d2,d3
  166.         andi.b  #$E0,d2     ; d2 -> G0
  167.         beq.s   @Red
  168.         subi.b  #$20,d2
  169.  
  170.     @Red:   andi.b  #$E,d3      ; d3 -> 0R
  171.         beq.s   @GRout
  172.         subq.b  #2,d3
  173.  
  174.     @GRout: or.b    d2,d3
  175.         move.b  d3,(a0)+
  176.  
  177.         rts
  178. ; End of function Pal_DecColor
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement