Advertisement
Runer112

Untitled

Jul 7th, 2011
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. p_DrawMsk:
  2.     ld  b,7         ;Input c = Sprite X Position
  3.     ld  d,0         ;Input e = Sprite Y Position
  4.     ld  a,c         ;Input ix = Sprite
  5.     add a,b
  6.     jr  c,__DrawMskClipLeft
  7.     sub 96+7
  8.     ret nc
  9.     cpl
  10.     cp  b
  11.     jr  nc,__DrawMskNoClipH
  12. __DrawMskClipRight:
  13.     inc d
  14.     jr  __DrawMskClipHDone
  15. __DrawMskClipLeft:
  16.     add a,89
  17.     ld  c,a
  18. __DrawMskClipHDone:
  19.     inc d       ;d,c,e are updated
  20. __DrawMskNoClipH:
  21.     ld  a,e
  22.     add a,b
  23.     jr  c,__DrawMskClipTop
  24.     sub 64+7
  25.     ret nc
  26.     cpl
  27.     cp  b
  28.     jr  nc,__DrawMskNoClipV
  29.     jr  __DrawMskClipBottom
  30. __DrawMskClipTop:
  31.     inc ix
  32.     inc e
  33.     jr  nz,__DrawMskClipTop
  34. __DrawMskClipBottom:
  35.     ld  b,a
  36. __DrawMskNoClipV:           ;b,ix,e are updated.
  37.     dec d
  38.     jr  z,__DrawMskNoFix
  39.     inc e
  40. __DrawMskNoFix:
  41.     push    de
  42.     ld  d,0
  43.     ld  h,d
  44.     ld  l,e
  45.     add hl,hl
  46.     add hl,de
  47.     add hl,hl
  48.     add hl,hl
  49.     ld  e,c
  50.     ld  a,e
  51.     srl e
  52.     srl e
  53.     srl e
  54.     add hl,de
  55.     ld  de,plotSScreen-11
  56.     add hl,de
  57.     pop de
  58.     inc b
  59.     and %00000111
  60.     jr  z,__DrawMskAligned
  61.     ld  c,a
  62. __DrawMskLoop:
  63.     push    bc
  64.  
  65.     push    hl
  66.  
  67.     ld  b,c
  68.     ld  e,(ix+0)
  69.     xor a
  70.     ld  h,a
  71.     ld  c,(ix+8)
  72. __DrawMskShift:
  73.     srl e
  74.     rr  h
  75.     srl c
  76.     rra
  77.     djnz    __DrawMskShift
  78.  
  79.     ld  b,h
  80.     pop hl
  81.     push    af
  82.  
  83.     dec d
  84.     jr  z,__DrawMskSkipRight1
  85.  
  86.     push    bc
  87.     xor b
  88.     cpl
  89.     ld  c,a
  90.  
  91.     ld  a,(hl)
  92.     or  b
  93.     and c
  94.     ld  (hl),a
  95.     pop bc
  96.  
  97. __DrawMskSkipRight1:
  98.     dec hl
  99.     inc d
  100.     push    de
  101.     jr  z,__DrawMskSkipLeft1
  102.  
  103.     ld  a,c
  104.     xor e
  105.     cpl
  106.     ld  d,a
  107.  
  108.     ld  a,(hl)
  109.     or  e
  110.     and d
  111.     ld  (hl),a
  112.  
  113. __DrawMskSkipLeft1:
  114.     ld  de,appBackUpScreen-plotSScreen+1
  115.     add hl,de
  116.     pop de
  117.     pop af
  118.     dec d
  119.     jr  z,__DrawMskSkipRight2
  120.  
  121.     or  b
  122.     cpl
  123.  
  124.     and (hl)
  125.     or  b
  126.     ld  (hl),a
  127.  
  128. __DrawMskSkipRight2:
  129.     dec hl
  130.     inc d
  131.     jr  z,__DrawMskSkipLeft2
  132.  
  133.     ld  a,c
  134.     or  e
  135.     cpl
  136.  
  137.     and (hl)
  138.     or  e
  139.     ld  (hl),a
  140.  
  141. __DrawMskSkipLeft2:
  142.     ld  bc,plotSScreen-appBackUpScreen+13
  143.     add hl,bc
  144.  
  145.     inc ix
  146.     pop bc
  147.     djnz    __DrawMskLoop
  148.     ret
  149. __DrawMskAligned:
  150.     dec hl
  151. __DrawMskAlignedLoop:
  152.     push    hl
  153.     ld  de,appBackUpScreen-plotSScreen
  154.     add hl,de
  155.  
  156.     ld  a,(ix+0)
  157.     ld  d,a
  158.     xor (ix+8)
  159.     cpl
  160.     ld  e,a
  161.  
  162.     and (hl)
  163.     or  d
  164.     ld  (hl),a
  165.  
  166.     pop hl
  167.  
  168.     ld  a,(hl)
  169.     or  d
  170.     and e
  171.     ld  (hl),a
  172.  
  173.     inc ix
  174.     ld  de,12
  175.     add hl,de
  176.     djnz    __DrawMskAlignedLoop
  177.     ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement