ld [de], a
inc de ; de = timer
- ; set timer
- ld a, 0x40
+ ; clear frame counter
+ xor a, a
ld [de], a
; set gameplay flag to pause object updates
ld a, [de] ; a = x position
tile_to_scrn OBJ_OFF_X, c
- ld [hl+], a
ld [TMP_X], a
+ ; offset position by counter
+ push af
+ ld a, [objanim+obja_timer]
+ sra a
+ ld b, a
+ pop af
+ sub a, b
+ ld [hl+], a
+
; door tile
ld a, DOOR_SPRITE_TILE
; set x pos
ld a, [TMP_X]
add a, 8 ; move over a tile
+ ; offset position by counter
+ push af
+ ld a, [objanim+obja_timer]
+ sra a
+ ld b, a
+ pop af
+ add a, b
ld [hl+], a
; tile
ld [hl], a
; check if we are done
- ld de, objanim+obja_timer
- ld a, [de]
- dec a
- ld [de], a ; timer--
+ ld a, [objanim+obja_timer]
+ inc a
+ ld [objanim+obja_timer], a ; frame counter++
+ cp a, 0x10 ; end frame?
jr z, @timer_done REL
ldnull bc