Routines |
Prev: A007 | Up: Map | Next: A035 |
This returns whether the given position is within the indexed area's bounds.
Used by the routine at solitary.
|
||||||||||||||||
within_camp_bounds | A01A | ADD A,A | Multiply A by 4 | |||||||||||||
A01B | ADD A,A | |||||||||||||||
A01C | LD C,A | Move it into BC | ||||||||||||||
A01D | LD B,$00 | |||||||||||||||
A01F | LD HL,$9F15 | Point HL at permitted_bounds | ||||||||||||||
A022 | ADD HL,BC | Add | ||||||||||||||
Test position against bounds
|
||||||||||||||||
A023 | LD B,$02 | Iterate twice - first checking the X axis, then the Y axis | ||||||||||||||
Start loop
|
||||||||||||||||
within_camp_bounds_0 | A025 | LD A,(DE) | Fetch a position byte | |||||||||||||
A026 | CP (HL) | Is A less than the lower bound? | ||||||||||||||
A027 | RET C | Return with flags NZ if so (outside area) | ||||||||||||||
A028 | INC HL | Move to x1, or y1 on second iteration | ||||||||||||||
A029 | CP (HL) | Is A less than the upper bound? | ||||||||||||||
A02A | JR C,within_camp_bounds_1 | Jump to the next loop iteration if so (inside area) | ||||||||||||||
A02C | OR $01 | Otherwise return with flags NZ (outside area) | ||||||||||||||
A02E | RET | |||||||||||||||
within_camp_bounds_1 | A02F | INC DE | Advance to second axis for position | |||||||||||||
A030 | INC HL | Advance to second axis for bounds | ||||||||||||||
A031 | DJNZ within_camp_bounds_0 | ...loop | ||||||||||||||
A033 | AND B | Return with flags Z (within area) | ||||||||||||||
A034 | RET |
Prev: A007 | Up: Map | Next: A035 |