mirror of
https://github.com/pret/pokepinball.git
synced 2026-03-21 17:55:03 -05:00
49 lines
1007 B
NASM
49 lines
1007 B
NASM
InitAnimation: ; 0x28a0
|
|
; Initializes an sprite animation.
|
|
; hl = pointer to first frame of animation
|
|
; de = pointer to destination animation struct
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
xor a
|
|
ld [de], a
|
|
ret
|
|
|
|
UpdateAnimation: ; 0x28a9
|
|
; Updates an animation struct. (See wDugtrioAnimationFrameCounter)
|
|
; Input: de = pointer to 3-byte animation struct
|
|
; hl = pointer to animation frames data
|
|
; Sets carry flag if the animation is over.
|
|
ld a, [de]
|
|
and a
|
|
ret z ; return, if counter is zero
|
|
dec a
|
|
ld [de], a
|
|
ret nz ; return if counter is not zero after the decrement
|
|
push de
|
|
inc de
|
|
inc de
|
|
ld a, [de] ; a = current frame index
|
|
inc a
|
|
ld [de], a
|
|
ld c, a
|
|
ld b, $0
|
|
sla c
|
|
rl b
|
|
add hl, bc ; hl = pointer to two-byte entry in the frames data table
|
|
ld a, [hli]
|
|
pop de
|
|
and a
|
|
scf
|
|
ret z ; return if the next entry is $00
|
|
push de
|
|
ld [de], a ; save the animation duration
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a ; save the next animation frame id
|
|
pop de
|
|
ret
|