Advertisement
Zeda

DrawSpriteXxY

Jan 4th, 2012
562
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;===========================================================
  2. DrawSpriteXxY:
  3. ;===========================================================
  4. ;Inputs:
  5. ;     A is the method:
  6. ;        0=Overwrite
  7. ;        1=AND
  8. ;        2=XOR
  9. ;        3=OR
  10. ;        4=Swap
  11. ;        5=Erase
  12. ;     B is the width (in bytes)
  13. ;     C is the height (in pixels)
  14. ;     DE points to the sprite data
  15. ;     HL points to the output location
  16. ;Outputs:
  17. ;     HL is A*12 larger (next sprite down?)
  18. ;     DE points to the next byte after the sprite data
  19. ;     A is 0
  20. ;     B is not changed
  21. ;     C is 12-B
  22. ;===========================================================
  23.           push af             ;F5
  24.           ld a,c              ;79
  25.           di                  ;F3
  26.           ex af,af'           ;08
  27.          ld a,12             ;3E0C
  28.          sub b               ;90
  29.          ld c,a              ;4F
  30.          pop af              ;F1
  31. OverwriteXxY:
  32.          or a                ;B7
  33.          jr nz,ANDXxY        ;2010
  34.            ex af,af'         ;08
  35.               ex de,hl        ;EB
  36.               push bc         ;C5
  37.                 ldi           ;EDA1
  38.                 inc bc        ;03
  39.                 djnz $-3      ;10FB
  40.               ex de,hl        ;EB
  41.               add hl,bc       ;09
  42.               pop bc          ;C1
  43.               dec a           ;3D
  44.               jr nz,$-11      ;20F3
  45.             ret               ;C9
  46. ANDXxY:
  47.           dec a               ;3D
  48.           jr nz,XORXxY        ;2011
  49.             ex af,af'           ;08
  50.              push bc             ;C5
  51.              push af             ;F5
  52.                ld a,(de)           ;1A
  53.                and (hl)            ;A6
  54.                ld (hl),a           ;77
  55.                inc de              ;13
  56.                inc hl              ;23
  57.                djnz $-5            ;10F9
  58.              add hl,bc           ;09
  59.              pop af              ;F1
  60.              pop bc              ;C1
  61.              dec a               ;3D
  62.              jr nz,$-13          ;20F1
  63.            ret                 ;C9
  64. XORXxY:
  65.          dec a               ;3D
  66.          jr nz,ORXxY         ;2011
  67.            ex af,af'           ;08
  68.               push bc             ;C5
  69.               push af             ;F5
  70.                 ld a,(de)           ;1A
  71.                 xor (hl)            ;AE
  72.                 ld (hl),a           ;77
  73.                 inc de              ;13
  74.                 inc hl              ;23
  75.                 djnz $-5            ;10F9
  76.               add hl,bc           ;09
  77.               pop af              ;F1
  78.               pop bc              ;C1
  79.               dec a               ;3D
  80.               jr nz,$-13          ;20F1
  81.             ret                 ;C9
  82. ORXxY:
  83.           dec a               ;3D
  84.           jr nz,SwapXxY       ;2011
  85.             ex af,af'           ;08
  86.              push bc             ;C5
  87.              push af             ;F5
  88.                ld a,(de)           ;1A
  89.                or (hl)             ;B6
  90.                ld (hl),a           ;77
  91.                inc de              ;13
  92.                inc hl              ;23
  93.                djnz $-5            ;10F9
  94.            add hl,bc           ;09
  95.            pop af              ;F1
  96.            pop bc              ;C1
  97.            dec a               ;3D
  98.            jr nz,$-13          ;20F1
  99.            ret                 ;C9
  100. SwapXxY:
  101.          dec a               ;3D
  102.          jr nz,EraseXxY      ;2011
  103.            ex af,af'           ;08
  104.             ld c,12             ;0E0C
  105.               push bc             ;C5
  106.               push af             ;F5
  107.                 ld a,(de)           ;1A
  108.                 ldi                 ;EDA0
  109.                 dec hl              ;2B
  110.                 ld (hl),a           ;77
  111.                 inc hl              ;23
  112.                 djnz $-6            ;10F8
  113.               add hl,bc           ;09
  114.               pop af              ;F1
  115.               pop bc              ;C1
  116.               dec a               ;3D
  117.               jr nz,$-14          ;20F0
  118.             ret                 ;C9
  119. EraseXxY:
  120.             ex af,af'           ;08
  121.              push bc             ;C5
  122.              push af             ;F5
  123.                ld a,(de)           ;1A
  124.                cpl                 ;2F
  125.                and (hl)            ;A6
  126.                ld (hl),a           ;77
  127.                inc de              ;13
  128.                inc hl              ;23
  129.                djnz $-6            ;10F8
  130.              add hl,bc           ;09
  131.              pop af              ;F1
  132.              pop bc              ;C1
  133.              dec a               ;3D
  134.              jr nz,$-14          ;20F0
  135.            ret                 ;C9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement