daily pastebin goal
22%
SHARE
TWEET

Rectangle_Erase

Zeda Mar 10th, 2014 109 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. GBUF_LSB = 40h
  2. GBUF_MSB = 93h
  3.  
  4. Rectangle_erase:
  5. ;    DE = (x,y)
  6. ;    BC = (height,width)
  7. ;Uses 2 bytes of RAM: (FirstByte), (LastByte)
  8.         push de
  9.         push bc
  10.         push bc
  11.         ld a,d
  12.         call ComputeByte
  13.         cpl                             ;used for WHITE
  14.         ld (FirstByte),a
  15.         ex (sp),hl
  16.         ld a,d
  17.         neg
  18.         and 7
  19.     jr nz,$+4
  20.     ld a,8
  21.         ld b,a
  22.         ld a,l
  23.         sub b
  24.         ex (sp),hl
  25.         ld c,a
  26.         call ComputeByte
  27. ;       cpl
  28.         ld (LastByte),a
  29.         ld b,a
  30.         sra c \ sra c \ sra c
  31.         inc c
  32.  
  33.         ld a,d
  34.         ld d,0
  35.         ld h,d
  36.         ld l,e
  37.         add hl,hl
  38.         add hl,de
  39.         add hl,hl
  40.         add hl,hl
  41.         and %11111000
  42.         rra \ rra \ rra
  43.         add a,GBUF_LSB
  44.         ld e,a
  45.         ld d,GBUF_MSB
  46.         add hl,de
  47. ;HL points to the first byte   
  48.         pop de
  49. ;D is the height
  50. ;E is the number of bytes wide
  51.         inc c
  52.         dec c
  53.         jr nz,RectOverLoop-1
  54.                 ld a,(FirstByte)
  55.                 or b
  56.                 ld c,a          ;value
  57.                 ld b,d          ;height
  58.                 ld de,12
  59.                         ld a,c
  60.                         and (hl)
  61.                         ld (hl),a
  62.                         add hl,de
  63.                         djnz $-4
  64.                         pop bc
  65.                         pop de
  66.                         ret
  67.         ld e,c
  68. RectOverLoop:
  69.         ld b,e
  70.         ld c,12
  71.         ld a,(FirstByte)
  72. RectLoop:
  73.         and (hl)
  74.         ld (hl),a
  75.         inc hl
  76.         dec c
  77.         jr z,ExitLoop
  78.         xor a                   ;should be 'ld a,255' for other modes
  79.         djnz RectLoop
  80.         ld a,(lastByte)
  81.         and (hl)
  82.         ld (hl),a
  83.         add hl,bc
  84. ExitLoop:
  85.         dec d
  86.         jr nz,RectOverLoop
  87.         pop bc
  88.         pop de
  89.         ret
  90.  
  91. ComputeByte:
  92.         and 7
  93.         ld b,a
  94.         ld a,80h
  95.         jr z,$+5
  96.           rrca
  97.           djnz $-1
  98.         add a,a
  99.         dec a
  100.         ret
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top