shithub: pokecrystal

ref: 333524f0beb876ceaaed99b97f4c7dacf6466050
dir: /macros/coords.asm/

View raw version
bccoord EQUS "coord bc,"
decoord EQUS "coord de,"
hlcoord EQUS "coord hl,"

coord: MACRO
; register, x, y[, origin]
	if _NARG < 4
	ld \1, TileMap + SCREEN_WIDTH * (\3) + (\2)
	else
	ld \1, \4 + SCREEN_WIDTH * (\3) + (\2)
	endc
	ENDM

dwcoord: MACRO
	rept _NARG / 2
	dw TileMap + SCREEN_WIDTH * (\2) + (\1)
	shift
	shift
	endr
	ENDM

ldcoord_a: MACRO
	if _NARG < 3
	ld [TileMap + SCREEN_WIDTH * (\2) + (\1)], a
	else
	ld [\3 + SCREEN_WIDTH * (\2) + (\1)], a
	endc
	ENDM

lda_coord: MACRO
	if _NARG < 3
	ld a, [TileMap + SCREEN_WIDTH * (\2) + (\1)]
	else
	ld a, [\3 + SCREEN_WIDTH * (\2) + (\1)]
	endc
	ENDM


bgrows EQUS "* $20" ; SCREEN_WIDTH

hlbgcoord EQUS "bgcoord hl,"
debgcoord EQUS "bgcoord de,"
bcbgcoord EQUS "bgcoord bc,"

bgcoord: MACRO
IF _NARG >= 4
	ld \1, \3 bgrows + \2 + \4
ELSE
	ld \1, \3 bgrows + \2 + vBGMap0
ENDC
ENDM