Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- p_DrawMsk:
- ld b,7 ;Input c = Sprite X Position
- ld d,0 ;Input e = Sprite Y Position
- ld a,c ;Input ix = Sprite
- add a,b
- jr c,__DrawMskClipLeft
- sub 96+7
- ret nc
- cpl
- cp b
- jr nc,__DrawMskNoClipH
- __DrawMskClipRight:
- inc d
- jr __DrawMskClipHDone
- __DrawMskClipLeft:
- add a,89
- ld c,a
- __DrawMskClipHDone:
- inc d ;d,c,e are updated
- __DrawMskNoClipH:
- ld a,e
- add a,b
- jr c,__DrawMskClipTop
- sub 64+7
- ret nc
- cpl
- cp b
- jr nc,__DrawMskNoClipV
- jr __DrawMskClipBottom
- __DrawMskClipTop:
- inc ix
- inc e
- jr nz,__DrawMskClipTop
- __DrawMskClipBottom:
- ld b,a
- __DrawMskNoClipV: ;b,ix,e are updated.
- dec d
- jr z,__DrawMskNoFix
- inc e
- __DrawMskNoFix:
- push de
- ld d,0
- ld h,d
- ld l,e
- add hl,hl
- add hl,de
- add hl,hl
- add hl,hl
- ld e,c
- ld a,e
- srl e
- srl e
- srl e
- add hl,de
- ld de,plotSScreen-11
- add hl,de
- pop de
- inc b
- and %00000111
- jr z,__DrawMskAligned
- ld c,a
- __DrawMskLoop:
- push bc
- push hl
- ld b,c
- ld e,(ix+0)
- xor a
- ld h,a
- ld c,(ix+8)
- __DrawMskShift:
- srl e
- rr h
- srl c
- rra
- djnz __DrawMskShift
- ld b,h
- pop hl
- push af
- dec d
- jr z,__DrawMskSkipRight1
- push bc
- xor b
- cpl
- ld c,a
- ld a,(hl)
- or b
- and c
- ld (hl),a
- pop bc
- __DrawMskSkipRight1:
- dec hl
- inc d
- push de
- jr z,__DrawMskSkipLeft1
- ld a,c
- xor e
- cpl
- ld d,a
- ld a,(hl)
- or e
- and d
- ld (hl),a
- __DrawMskSkipLeft1:
- ld de,appBackUpScreen-plotSScreen+1
- add hl,de
- pop de
- pop af
- dec d
- jr z,__DrawMskSkipRight2
- or b
- cpl
- and (hl)
- or b
- ld (hl),a
- __DrawMskSkipRight2:
- dec hl
- inc d
- jr z,__DrawMskSkipLeft2
- ld a,c
- or e
- cpl
- and (hl)
- or e
- ld (hl),a
- __DrawMskSkipLeft2:
- ld bc,plotSScreen-appBackUpScreen+13
- add hl,bc
- inc ix
- pop bc
- djnz __DrawMskLoop
- ret
- __DrawMskAligned:
- dec hl
- __DrawMskAlignedLoop:
- push hl
- ld de,appBackUpScreen-plotSScreen
- add hl,de
- ld a,(ix+0)
- ld d,a
- xor (ix+8)
- cpl
- ld e,a
- and (hl)
- or d
- ld (hl),a
- pop hl
- ld a,(hl)
- or d
- and e
- ld (hl),a
- inc ix
- ld de,12
- add hl,de
- djnz __DrawMskAlignedLoop
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement