MMBC

__Line_NoClip_ASM

Aug 3rd, 2017
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. __Line_NoClip_ASM:
  2.     ; arg0: y1 (1byte) x1 (2bytes)
  3.     ; arg2: y2 (1byte) x2 (2bytes)
  4.     ; a = color
  5.     ld (color), a
  6.     ld ix, 0
  7.     add ix, sp
  8.     lea ix, ix+3
  9.     or a
  10.     sbc hl, hl
  11.     push hl
  12.     pop bc
  13.     ld l, (ix+0)
  14.     ld h, (ix+1)
  15.     ld c, (ix+3)
  16.     ld b, (ix+4)
  17.     ld a, c
  18.     ld (x), a
  19.     ld a, b
  20.     ld (x+1), a
  21.     sbc hl, bc
  22.     jp p, +_
  23.     ld a, -1
  24.     ld (sx), a
  25.     jr ++_
  26. _:
  27.     ld a, 1
  28.     ld (sx), a
  29. _:
  30.     ex de, hl
  31.     call _abs24de
  32.     push hl
  33.     or a
  34.     sbc hl, hl
  35.     push hl
  36.     pop bc
  37.     ld l, (ix+2)
  38.     ld c, (ix+5)
  39.     ld a, c
  40.     ld (y), a
  41.     sbc hl, bc
  42.     jp p, +_
  43.     ld a, -1
  44.     ld (sy), a
  45.     jr ++_
  46. _:
  47.     ld a, 1
  48.     ld (sy), a
  49. _:
  50.     ex de, hl
  51.     call _abs24de
  52.     ex de, hl
  53.     or a
  54.     sbc hl, hl
  55.     sbc hl, de
  56.     pop de
  57.     push de
  58.     add hl, de
  59.     ld (err), hl
  60.     or a
  61.     sbc hl, de
  62.     push hl
  63. _:
  64.     ld hl, (x)
  65.     ex.s de, hl
  66.     ld a, (y)
  67.     ld l, a
  68.     ld h, 160
  69.     mlt hl
  70.     add hl, hl
  71.     add hl, de
  72.     ld bc, $D40000
  73.     add hl, bc
  74.     ld a, (color)
  75.     ld (hl), a
  76.    
  77.    
  78.     ld de, (x)
  79.     ld hl, (ix)
  80.     or a, a
  81.     sbc hl, de
  82.     jp z, +_
  83.    
  84.     ld hl, (err)
  85.     add hl, hl
  86.     ld (e2), hl
  87.    
  88.     pop bc
  89.     push bc
  90.     or a, a
  91.     sbc hl, bc
  92.     jp m, e2dx
  93.     ld hl, (err)
  94.     add hl, bc
  95.     ld (err), hl
  96.     ld hl, (x)
  97.     ex.s de, hl
  98.     ex de, hl
  99.     ld a, (sx)
  100.     ld e, a
  101.     ld d, 0
  102.     add hl, de
  103.     ld a, l
  104.     ld (x), a
  105.     ld a, h
  106.     ld (x+1), a
  107.  
  108. e2dx:
  109.     pop bc
  110.     pop de
  111.     push de
  112.     push bc
  113.     ld hl, (e2)
  114.     sbc hl, de
  115.     jp p, eol
  116.     ld hl, (err)
  117.     add hl, de
  118.     ld (err), hl
  119.     ld a, (y)
  120.     ld h, a
  121.     ld a, (sy)
  122.     add a, h
  123.     ld (y), a
  124.    
  125. eol:
  126.     jp -_
  127. _:
  128.     pop bc
  129.     pop bc
  130.     ret
  131. sx:
  132.     nop
  133. sy:
  134.     nop
  135. x:
  136.     nop
  137.     nop
  138. y:
  139.     nop
  140. err:
  141.     nop
  142.     nop
  143.     nop
  144. e2:
  145.     nop
  146.     nop
  147.     nop
  148. color:
  149.     nop
  150.  
  151. _abs24de:
  152.     sbc hl, hl
  153.     adc hl, de
  154.     jp p, +_
  155.     or a, a
  156.     sbc hl, hl
  157.     sbc hl,de
  158. _:
  159.     ret
Advertisement
Add Comment
Please, Sign In to add comment