dos33fsprogs/games/lemm/release_lemming.s

73 lines
1.1 KiB
ArmAsm

;=======================
; Clear Lemmings Out
;=======================
clear_lemmings_out:
lda #0
ldy #0
clear_lemmings_loop:
sta lemming_out,Y
iny
cpy #MAX_LEMMINGS
bne clear_lemmings_loop
rts
;=======================
; Release Lemmings
;=======================
release_lemming:
; don't release if we've released them all
lda LEMMINGS_TO_RELEASE
beq done_release_lemmings
; don't release if door is still opening
lda DOOR_OPEN
beq done_release_lemmings
; only release every X frames
lda FRAMEL
release_lemming_speed:
and #$f
bne done_release_lemmings
ldy NEXT_LEMMING_TO_RELEASE
lda #1
sta lemming_out,Y
lda #0
sta lemming_exploding,Y
sta lemming_fall_distance,Y
sta lemming_attribute,Y
lda INIT_X
sta lemming_x,Y
lda INIT_Y
sta lemming_y,Y
lda #LEMMING_RIGHT
sta lemming_direction,Y
lda #LEMMING_FALLING
sta lemming_status,Y
sed
lda LEMMINGS_OUT ; BCD
clc
adc #1
sta LEMMINGS_OUT
cld
jsr update_lemmings_out
inc NEXT_LEMMING_TO_RELEASE
dec LEMMINGS_TO_RELEASE
done_release_lemmings:
rts