Re: A83: using hl as a label
[Prev][Next][Index][Thread]
Re: A83: using hl as a label
On Mon, 12 Jul 1999 14:58:01 PDT, the homonerdicus wrote:
>yo ...
>
>Now, I have a place in memory where I strore data about several units and
>it
>looks like this.
>
>#DEFINE beg 82A1h ; 708 bytes
>
>#DEFINE hero1 beg
>#DEFINE hero2 beg+60d
>#DEFINE hero3 beg+120d
>#DEFINE hero4 beg+180d
>#DEFINE hero5 beg+240d
>
>#DEFINE unit1 30d
>#DEFINE unit2 40d
>#DEFINE unit3 50d
>
>#DEFINE type 0
>#DEFINE heroN 2
>#DEFINE Nofunits 3
>#DEFINE x 4
>#DEFINE y 5
>#DEFINE hp 6
>#DEFINE stat 7
>#DEFINE kind 8
>
>So to find the hitpoints of the 3rd unit of the 2nd hero.
>ld a,(hero2+unit3+hp)
>
>At a different place in the prog I have the adress of the unit in hl
>and I want to add to it the offset for hitpoints....
>
>I tried :
>ld a,(hl)+hp
>ld a,(hl+hp)
>ld a,((hl)+hp)
>and none of them work ... The assembler takes hl for a label and says
>"label
>not found"
>
>I know I can do it this way
>ld d,0
>ld a,(hp)
>ld e,a
>add hl,de
>a,(hl)
>
>but it's very long and will be using this a lot of times in the game ...
>
>Does anybody know a way to do this ?
>Ideas comments ....
>
>thanks
One way you could possibly fix it is to make the last bit of code you
wrote into a separate routine so that you can just call it whenever..
couldn't you? What about this:
#define temp $858F
ld (temp),hl ; load the address into the temp var
ld a,(temp+hp) ; load into A the data you want
This should work instead of what you had earlier, which was:
ld a,(hl+hp)
Anyways, hope that helps..
James Vernon
jimbob_v@hotmail.com
______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com