Re: A86: Tilemaps and Collision Detection


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

Re: A86: Tilemaps and Collision Detection





Hrmm...I'll try this. But you use "or a" to check if the tile is clear.
Does this only work for blank tiles?

-}InFuZeD{

On Sat, 22 Apr 2000 ComAsYuAre@aol.com wrote:

> 
> In a message dated 4/22/00 11:18:16 AM Eastern Daylight Time, 
> zoneti@tinews.net writes:
> 
> > I was looking at the tilemaps section over at 86 Central and went to put
> >  together a little demo for an RPG I'm working on. I needed the guy to walk
> >  around and stop if he hit a block. I tried ACZ's routines but couldn't put
> >  together a working example of how to use them. The little guy just walks
> >  around through the blocks :) He does however stop if you try to go left at
> >  the very top or bottom row of the screen as well as stopping if you try to
> >  go off the top or bottom of the screen. Can anyone put together an example
> >  for me to see how to use these routines? (http://ti86.acz.org). Thanks.
> 
> The trick to collision detection is the GetTile subroutine.  For example:
> 
> mainloop:
>   call _getcsc
>   dec a ;K_DOWN
>   jr z,move_down
>   dec a ;K_LEFT
>   jr z,move_left
>   dec a ;K_RIGHT
>   jr z,move_right
>   dec a ;K_UP
>   jr z,move_up
>   ;...
> 
> 
> move_right:
>   ld bc,(coords)
>   inc b   ;increase x
>   jr move_tile
> 
> move_left:
>   ld bc,(coords)
>   dec b  ;decrease x
>   jr move_tile
> 
> move_down:
>   ld bc,(coords)
>   inc c  ;increase y
>   jr move_tile
> 
> move_up:
>   ld bc,(coords)
>   dec c  ;decrease y
> 
> move_tile:
>   bit 7,b  ;x>=128 or <0
>   jr nz,mainloop
>   ld a,c
>   cp 64  ;y>=64 or <0
>   jr nc,mainloop
>   push bc
>   call GetTile
>   pop bc
>   ld a,(hl)
>   or a  ;check if a clear tile
>   jr nz,mainloop
>   ld (coords),bc  ;save new coords
>   jr mainloop
> 
> 
> ----
> Jonah Cohen
> <ComAsYuAre@aol.com>
> http://jonah.ticalc.org
> 




Follow-Ups: References: