inc de ; skip flags
ld a, [de] ; a = y position
inc de ; de = x postion
- mul16 a
- add a, OBJ_OFF_Y
- sub a, b
+ tile_to_scrn OBJ_OFF_Y, b
ld [hl+], a
ld a, [de] ; a = x position
- mul16 a
- add a, OBJ_OFF_X
- sub a, c
+ tile_to_scrn OBJ_OFF_X, b
ld [hl+], a
ld a, 0x80
@done:
ret
+
+ ; translates tile to screen
+ ; inputs:
+ ; $1: Y/X offset
+ ; $2: register containing scroll
+ ; a: tile position
+#macro tile_to_scrn
+ mul16 a
+ add a, $1
+ sub a, $2
+#endmacro
; draws any unit
; inputs:
; set y pos
ld a, [de]
- mul16 a
- add a, OBJ_OFF_Y
- sub a, b
+ tile_to_scrn OBJ_OFF_Y, b
ld [hl+], a
; set x pos
inc de
ld a, [de]
- mul16 a
- add a, OBJ_OFF_X
- sub a, c
+ tile_to_scrn OBJ_OFF_X, c
ld c, a
ld a, [TMP_X_OFFSET]
add a, c