Re: A82: Sprite routine for ash


[Prev][Next][Index][Thread]

Re: A82: Sprite routine for ash



Andrew Von Dollen wrote:
> 
> At 02:53 PM 8/14/97 -0600, you wrote:
> >What is the simplest way (doesn't have to be the fastest) to display a
> >8x8 sprite at, say, (B,C) using Ash.
> 
> PutSprite:              ; Puts a sprite stored at (HL) at B,C  (by Jimmy Mardell)
>  push   bc
>  push   de
>  ld     a,63
>  sub    c
>  ld     c,a
>  push   hl
>  push   hl
>  call   $4166
>  ld     de,$88B8
>  add    hl,de
>  ex     de,hl
>  pop    hl
>  ld     b,(hl)
>  inc    hl
>  ld     c,(hl)
>  inc    hl
>  push   hl
>  pop    ix
>  ex     de,hl
> PS_NewRow:
>  push   bc
>  ld     d,(ix)
>  inc    ix
>  push   af
>  push   hl
> PS_NewCol:
>  rl     d
>  ld     e,a
>  jr     nc,PS_NoPixel
>  or     (hl)
>  ld     (hl),a
>  jr     PS_NextPixel
> PS_NoPixel:
>  cpl
>  and    (hl)
>  ld     (hl),a
> PS_NextPixel:
>  ld     a,e
>  rrca
>  jr     nc,PS_SameByte
>  inc    hl
> PS_SameByte:
>  djnz   PS_NewCol
>  pop    hl
>  pop    af
>  ld     de,12
>  add    hl,de
>  pop    bc
>  dec    c
>  jr     nz,PS_NewRow
>  pop    hl
>  pop    de
>  pop    bc
>  ret
> 
> This is for non-aligned sprites, if you only need to do aligned ones, it is
> much simpler, faster and smaller.  Remember to set the rom page to 4 before
> trying to use this routine, as it uses FIND_PIXEL.
> 
>         -Andrew

Ok thank you.  But I have one more question.  How would i store a 
sprite in HL?


Follow-Ups: References: