Re: A83: Sprite routine problem


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

Re: A83: Sprite routine problem






James Vernon wrote:

> On Fri, 03 Sep 1999 23:03:56 -0500, Pizza of Hut wrote:
>
> >I am attempting to write my own sprite routine that will display a 8x16
> >sprite. However, when I try running the program, all I get is the x & y
> >axis for the graph screen and no sprite. The code is as follows.
> >
> >  call _clrLCDFull
> >  ld d,48
> >  ld e,32
> >  ld ix,big_sprite
> >  call _Big_Sprite
> >  call _grbufcpy_v
> >loop:
> >  call _getkey
> >  ret nz
> >;Input: d-x coord, e-y coord, ix-sprite address
> >;Output: 8x16 XOR sprite written to 8e29h
> >_Big_Sprite:
> >  ld hl,0
> >  ld d,0
> >;*********Calculate addy in graphbuf********
> >  sla e  ;Do y*12
> >  sla e
> >  add hl,de
> >  add hl,de
> >  add hl,de
> >  ld e,d
> >  srl e  ;Do x/8
> >  srl e
> >  srl e
> >  add hl,de
> >  ld de,8e29
> >  add hl,de
> >  ld de,00000111b
> >  and d
> >  cp 0 ;checks if sprite is aligned
> >  jr z,Aligned_Sprite ;If so, goto aligned sprite bit
> >;********Non-aligned sprite bit starts here********
> >  ld b,a  ;Shift counter
> >  ld c,16  ;Line counter
> >Line_Loop:
> >  ld d,(ix+0)
> >  push bc
> >Shift_Loop:
> >  srl d
> >  rr e
> >  djnz Shift_Loop
> >  pop bc
> >  ld a,d  ;Write line to graphbuf
> >  xor (hl)
> >  ld (hl),a
> >  inc hl
> >  ld a,e
> >  xor (hl)
> >  ld (hl),a
> >  ld de,11
> >  add hl,de
> >  inc ix
> >  dec c
> >  cp 0
> >  jr nz,Line_Loop
> >  ret
> >;********Aligned sprite bit starts here********
> >Aligned_Sprite:
> >  ld c,16  ;Line counter
> >Aligned_Loop:
> >  ld d,(ix+0)
> >  ld a,d
> >  xor (hl)
> >  ld (hl),a
> >  ld de,12
> >  add hl,de
> >  inc ix
> >  dec c
> >  cp 0
> >  jr nz,Aligned_Loop
> >  ret
> >
> >big_sprite:
> >  .db 11111111b
> >  .db 11000011b
> >  .db 10100101b
> >  .db 10011001b
> >  .db 10011001b
> >  .db 10100101b
> >  .db 11000011b
> >  .db 10000001b
> >  .db 10000001b
> >  .db 11000011b
> >  .db 10100101b
> >  .db 10011001b
> >  .db 10011001b
> >  .db 10100101b
> >  .db 11000011b
> >  .db 11111111b
> >.end
> >END
> >
> >If someone could help me out with this, I would really appreciate it.
> >Thanx in advance.
> >
> >P.S. If anyone could tell me how to create a side-scrolling background,
> >like the one used in Mega Man 83-ASM, I would be forever grateful.
> >--
> >Pizza of Hut
> >http://www.antishrine.sacone.com/
>
>   I think the Mega Man routine just uses the Movax XOR Sprite routine for
> the whole screen each time the character moves a frame. That's why it
> doesn't run as fast as Sqrxz, Penguins, etc.
>
> James Vernon
> jimbob_v@hotmail.com
>
> ______________________________________________________
> Get Your Private, Free Email at http://www.hotmail.com

I've never really understood how you could use Movax's XOR sprite routing as
a scrolling routine. Could someone please explain it?

--
Pizza of Hut
http://www.antishrine.sacone.com/




References: