MMBC

__Line_NoClip_ASM example

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