mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-09-28 02:55:03 +00:00
lemm: make draw lemming use jump table
This commit is contained in:
parent
df0f6bf36d
commit
6a7564aacc
@ -19,3 +19,6 @@
|
|||||||
|
|
||||||
+ nuke/exploding should not happen if lemming is splatting
|
+ nuke/exploding should not happen if lemming is splatting
|
||||||
or already exploding
|
or already exploding
|
||||||
|
|
||||||
|
+ green flame for ice level
|
||||||
|
|
||||||
|
@ -34,6 +34,9 @@ done_erase_lemming:
|
|||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;=========================
|
;=========================
|
||||||
;=========================
|
;=========================
|
||||||
; draw lemming
|
; draw lemming
|
||||||
@ -47,10 +50,11 @@ draw_lemming_loop:
|
|||||||
|
|
||||||
ldy CURRENT_LEMMING
|
ldy CURRENT_LEMMING
|
||||||
|
|
||||||
lda lemming_out,Y
|
lda lemming_out,Y ; if lemming not out, skip
|
||||||
bne do_draw_countdown
|
beq done_draw_lemming
|
||||||
|
|
||||||
jmp done_draw_lemming
|
;===============================
|
||||||
|
; draw countdown if applicable
|
||||||
|
|
||||||
do_draw_countdown:
|
do_draw_countdown:
|
||||||
lda lemming_exploding,Y
|
lda lemming_exploding,Y
|
||||||
@ -75,23 +79,74 @@ do_draw_countdown:
|
|||||||
|
|
||||||
|
|
||||||
do_draw_lemming:
|
do_draw_lemming:
|
||||||
ldy CURRENT_LEMMING
|
|
||||||
|
|
||||||
|
; set up jump table
|
||||||
|
ldy CURRENT_LEMMING
|
||||||
lda lemming_status,Y
|
lda lemming_status,Y
|
||||||
cmp #LEMMING_DIGGING
|
tax
|
||||||
beq draw_digging_sprite
|
|
||||||
cmp #LEMMING_FALLING
|
lda draw_lemming_jump_h,X
|
||||||
beq draw_falling_sprite
|
pha
|
||||||
cmp #LEMMING_FLOATING
|
lda draw_lemming_jump_l,X
|
||||||
beq draw_floating_sprite
|
pha
|
||||||
cmp #LEMMING_EXPLODING
|
rts ; jump to it
|
||||||
beq draw_exploding_sprite
|
|
||||||
cmp #LEMMING_PARTICLES
|
|
||||||
beq draw_particles
|
draw_common:
|
||||||
cmp #LEMMING_SPLATTING
|
sta YPOS
|
||||||
beq draw_splatting_sprite
|
|
||||||
cmp #LEMMING_STOPPING
|
jsr hgr_draw_sprite_autoshift
|
||||||
beq draw_stopping_sprite
|
|
||||||
|
done_draw_lemming:
|
||||||
|
|
||||||
|
inc CURRENT_LEMMING
|
||||||
|
lda CURRENT_LEMMING
|
||||||
|
cmp #MAX_LEMMINGS
|
||||||
|
; beq really_done_draw_lemming
|
||||||
|
bne draw_lemming_loop
|
||||||
|
|
||||||
|
really_done_draw_lemming:
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
draw_lemming_jump_l:
|
||||||
|
.byte <(draw_falling_sprite-1)
|
||||||
|
.byte <(draw_walking_sprite-1)
|
||||||
|
.byte <(draw_digging_sprite-1)
|
||||||
|
.byte <(draw_exploding_sprite-1)
|
||||||
|
.byte <(draw_particles-1)
|
||||||
|
.byte <(draw_splatting_sprite-1)
|
||||||
|
.byte <(draw_floating_sprite-1)
|
||||||
|
.byte 0 ; <(draw_climbing_sprite-1)
|
||||||
|
.byte 0 ; <(draw_bashing_sprite-1)
|
||||||
|
.byte <(draw_stopping_sprite-1)
|
||||||
|
.byte 0 ; <(draw_mining_sprite-1)
|
||||||
|
.byte 0 ; <(draw_building_sprite-1)
|
||||||
|
.byte 0 ; <(draw_shrugging_sprite-1)
|
||||||
|
.byte 0 ; <(draw_pullup_sprite-1)
|
||||||
|
|
||||||
|
draw_lemming_jump_h:
|
||||||
|
.byte >(draw_falling_sprite-1)
|
||||||
|
.byte >(draw_walking_sprite-1)
|
||||||
|
.byte >(draw_digging_sprite-1)
|
||||||
|
.byte >(draw_exploding_sprite-1)
|
||||||
|
.byte >(draw_particles-1)
|
||||||
|
.byte >(draw_splatting_sprite-1)
|
||||||
|
.byte >(draw_floating_sprite-1)
|
||||||
|
.byte 0 ; >(draw_climbing_sprite-1)
|
||||||
|
.byte 0 ; >(draw_bashing_sprite-1)
|
||||||
|
.byte >(draw_stopping_sprite-1)
|
||||||
|
.byte 0 ; >(draw_mining_sprite-1)
|
||||||
|
.byte 0 ; >(draw_building_sprite-1)
|
||||||
|
.byte 0 ; >(draw_shrugging_sprite-1)
|
||||||
|
.byte 0 ; >(draw_pullup_sprite-1)
|
||||||
|
|
||||||
|
|
||||||
|
;=========================
|
||||||
|
;=========================
|
||||||
|
; draw walking
|
||||||
|
;=========================
|
||||||
|
;=========================
|
||||||
|
|
||||||
draw_walking_sprite:
|
draw_walking_sprite:
|
||||||
|
|
||||||
@ -122,119 +177,14 @@ draw_walking_common:
|
|||||||
jmp draw_common
|
jmp draw_common
|
||||||
|
|
||||||
|
|
||||||
;====================
|
;=========================
|
||||||
|
;=========================
|
||||||
; draw floating
|
; draw floating
|
||||||
;====================
|
;=========================
|
||||||
|
;=========================
|
||||||
|
|
||||||
draw_floating_sprite:
|
draw_floating_sprite:
|
||||||
jsr do_draw_floating_sprite
|
|
||||||
jmp draw_common
|
|
||||||
|
|
||||||
|
|
||||||
;====================
|
|
||||||
; draw falling
|
|
||||||
;====================
|
|
||||||
|
|
||||||
draw_falling_sprite:
|
|
||||||
jsr do_draw_falling_sprite
|
|
||||||
jmp draw_common
|
|
||||||
|
|
||||||
|
|
||||||
;====================
|
|
||||||
; draw exploding
|
|
||||||
;====================
|
|
||||||
|
|
||||||
draw_exploding_sprite:
|
|
||||||
|
|
||||||
|
|
||||||
jsr handle_explosion
|
|
||||||
|
|
||||||
jmp done_draw_lemming
|
|
||||||
|
|
||||||
;====================
|
|
||||||
; draw splatting
|
|
||||||
;====================
|
|
||||||
|
|
||||||
draw_splatting_sprite:
|
|
||||||
|
|
||||||
|
|
||||||
jsr handle_splatting
|
|
||||||
|
|
||||||
jmp done_draw_lemming
|
|
||||||
|
|
||||||
|
|
||||||
;====================
|
|
||||||
; draw stopping
|
|
||||||
;====================
|
|
||||||
|
|
||||||
draw_stopping_sprite:
|
|
||||||
|
|
||||||
|
|
||||||
jsr handle_stopping
|
|
||||||
|
|
||||||
jmp done_draw_lemming
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;====================
|
|
||||||
; draw particles
|
|
||||||
;====================
|
|
||||||
|
|
||||||
draw_particles:
|
|
||||||
|
|
||||||
jsr handle_particles
|
|
||||||
|
|
||||||
jmp done_draw_lemming
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;======================
|
|
||||||
; digging
|
|
||||||
|
|
||||||
draw_digging_sprite:
|
|
||||||
|
|
||||||
lda lemming_frame,Y
|
|
||||||
and #$7
|
|
||||||
tax
|
|
||||||
|
|
||||||
lda dig_sprite_l,X
|
|
||||||
sta INL
|
|
||||||
lda dig_sprite_h,X
|
|
||||||
sta INH
|
|
||||||
|
|
||||||
ldx lemming_x,Y
|
|
||||||
stx XPOS
|
|
||||||
lda lemming_y,Y
|
|
||||||
sec
|
|
||||||
sbc #2
|
|
||||||
jmp draw_common
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
draw_common:
|
|
||||||
sta YPOS
|
|
||||||
|
|
||||||
jsr hgr_draw_sprite_autoshift
|
|
||||||
|
|
||||||
done_draw_lemming:
|
|
||||||
|
|
||||||
inc CURRENT_LEMMING
|
|
||||||
lda CURRENT_LEMMING
|
|
||||||
cmp #MAX_LEMMINGS
|
|
||||||
beq really_done_draw_lemming
|
|
||||||
jmp draw_lemming_loop
|
|
||||||
|
|
||||||
really_done_draw_lemming:
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
;===============
|
|
||||||
;===============
|
|
||||||
; draw floating
|
|
||||||
;===============
|
|
||||||
;===============
|
|
||||||
|
|
||||||
do_draw_floating_sprite:
|
|
||||||
lda lemming_frame,Y
|
lda lemming_frame,Y
|
||||||
cmp #4
|
cmp #4
|
||||||
bcc umbrella_opening ; blt
|
bcc umbrella_opening ; blt
|
||||||
@ -258,15 +208,17 @@ umbrella_opening:
|
|||||||
lda lemming_y,Y
|
lda lemming_y,Y
|
||||||
sec
|
sec
|
||||||
sbc #4
|
sbc #4
|
||||||
rts
|
|
||||||
|
|
||||||
;===============
|
jmp draw_common
|
||||||
;===============
|
|
||||||
|
|
||||||
|
;=========================
|
||||||
|
;=========================
|
||||||
; draw falling
|
; draw falling
|
||||||
;===============
|
;=========================
|
||||||
;===============
|
;=========================
|
||||||
|
|
||||||
do_draw_falling_sprite:
|
draw_falling_sprite:
|
||||||
|
|
||||||
lda lemming_frame,Y
|
lda lemming_frame,Y
|
||||||
and #$3
|
and #$3
|
||||||
@ -292,7 +244,275 @@ draw_falling_common:
|
|||||||
ldx lemming_x,Y
|
ldx lemming_x,Y
|
||||||
stx XPOS
|
stx XPOS
|
||||||
lda lemming_y,Y
|
lda lemming_y,Y
|
||||||
rts
|
|
||||||
|
jmp draw_common
|
||||||
|
|
||||||
|
|
||||||
|
;=========================
|
||||||
|
;=========================
|
||||||
|
; draw exploding
|
||||||
|
;=========================
|
||||||
|
;=========================
|
||||||
|
|
||||||
|
draw_exploding_sprite:
|
||||||
|
|
||||||
|
lda lemming_frame,Y
|
||||||
|
cmp #$10
|
||||||
|
; bcc exploding_animation
|
||||||
|
beq draw_explosion
|
||||||
|
bcs start_particles
|
||||||
|
jmp exploding_animation
|
||||||
|
|
||||||
|
start_particles:
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta lemming_frame,Y
|
||||||
|
|
||||||
|
jsr init_particles
|
||||||
|
|
||||||
|
; erase explosion
|
||||||
|
|
||||||
|
ldy CURRENT_LEMMING
|
||||||
|
|
||||||
|
lda lemming_y,Y
|
||||||
|
sec
|
||||||
|
sbc #16
|
||||||
|
sta SAVED_Y1
|
||||||
|
clc
|
||||||
|
adc #32
|
||||||
|
sta SAVED_Y2
|
||||||
|
|
||||||
|
lda lemming_x,Y
|
||||||
|
sec
|
||||||
|
sbc #1
|
||||||
|
tax
|
||||||
|
inx
|
||||||
|
inx
|
||||||
|
inx
|
||||||
|
jsr hgr_partial_restore
|
||||||
|
|
||||||
|
; start particles
|
||||||
|
|
||||||
|
ldy CURRENT_LEMMING
|
||||||
|
lda #LEMMING_PARTICLES
|
||||||
|
sta lemming_status,Y
|
||||||
|
|
||||||
|
jmp done_draw_lemming
|
||||||
|
|
||||||
|
draw_explosion:
|
||||||
|
|
||||||
|
; first erase pit in background art
|
||||||
|
|
||||||
|
jsr hgr_hlin_page_toggle ; toggle to page2
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
sta HGR_COLOR
|
||||||
|
|
||||||
|
ldy CURRENT_LEMMING
|
||||||
|
|
||||||
|
; line from (x,a) to (x+y,a)
|
||||||
|
lda lemming_x,Y
|
||||||
|
asl
|
||||||
|
adc lemming_x,Y
|
||||||
|
asl
|
||||||
|
adc lemming_x,Y ; multiply by 7
|
||||||
|
tax
|
||||||
|
pha
|
||||||
|
|
||||||
|
lda lemming_y,Y
|
||||||
|
clc
|
||||||
|
adc #9
|
||||||
|
|
||||||
|
ldy #7
|
||||||
|
|
||||||
|
jsr hgr_hlin
|
||||||
|
|
||||||
|
; line from (x,a) to (x+y,a)
|
||||||
|
pla
|
||||||
|
tax
|
||||||
|
|
||||||
|
ldy CURRENT_LEMMING
|
||||||
|
lda lemming_y,Y
|
||||||
|
ldy #7
|
||||||
|
clc
|
||||||
|
adc #10
|
||||||
|
jsr hgr_hlin
|
||||||
|
|
||||||
|
|
||||||
|
jsr hgr_hlin_page_toggle ; toggle back to page1
|
||||||
|
|
||||||
|
jsr click_speaker
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
lda #<explosion_sprite
|
||||||
|
sta INL
|
||||||
|
lda #>explosion_sprite
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
ldy CURRENT_LEMMING
|
||||||
|
ldx lemming_x,Y
|
||||||
|
dex
|
||||||
|
stx XPOS
|
||||||
|
lda lemming_y,Y
|
||||||
|
sec
|
||||||
|
sbc #5
|
||||||
|
|
||||||
|
jmp done_handle_exploding
|
||||||
|
|
||||||
|
exploding_animation:
|
||||||
|
; and #$f
|
||||||
|
tax
|
||||||
|
|
||||||
|
lda exploding_sprite_l,X
|
||||||
|
sta INL
|
||||||
|
lda exploding_sprite_h,X
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
ldx lemming_x,Y
|
||||||
|
stx XPOS
|
||||||
|
lda lemming_y,Y
|
||||||
|
|
||||||
|
done_handle_exploding:
|
||||||
|
sta YPOS
|
||||||
|
|
||||||
|
jsr hgr_draw_sprite_autoshift
|
||||||
|
|
||||||
|
jmp done_draw_lemming
|
||||||
|
|
||||||
|
;====================
|
||||||
|
; draw splatting
|
||||||
|
;====================
|
||||||
|
|
||||||
|
draw_splatting_sprite:
|
||||||
|
|
||||||
|
;==========================
|
||||||
|
; Handle splatting
|
||||||
|
;==========================
|
||||||
|
|
||||||
|
; moved to make room
|
||||||
|
handle_splatting:
|
||||||
|
|
||||||
|
lda lemming_frame,Y
|
||||||
|
cmp #$8
|
||||||
|
beq done_splatting
|
||||||
|
|
||||||
|
draw_splatting:
|
||||||
|
jsr click_speaker
|
||||||
|
|
||||||
|
tax
|
||||||
|
|
||||||
|
lda splatting_sprite_l,X
|
||||||
|
sta INL
|
||||||
|
lda splatting_sprite_h,X
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
ldx lemming_x,Y
|
||||||
|
stx XPOS
|
||||||
|
lda lemming_y,Y
|
||||||
|
sta YPOS
|
||||||
|
|
||||||
|
jsr hgr_draw_sprite_autoshift
|
||||||
|
|
||||||
|
jmp done_draw_lemming
|
||||||
|
|
||||||
|
done_splatting:
|
||||||
|
clc
|
||||||
|
jsr remove_lemming ; FIXME: tail call
|
||||||
|
|
||||||
|
jmp done_draw_lemming
|
||||||
|
|
||||||
|
|
||||||
|
;====================
|
||||||
|
;====================
|
||||||
|
; draw stopping
|
||||||
|
;====================
|
||||||
|
;====================
|
||||||
|
|
||||||
|
draw_stopping_sprite:
|
||||||
|
|
||||||
|
lda lemming_frame,Y
|
||||||
|
and #$f
|
||||||
|
tax
|
||||||
|
|
||||||
|
lda stopper_sprite_l,X
|
||||||
|
sta INL
|
||||||
|
lda stopper_sprite_h,X
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
ldx lemming_x,Y
|
||||||
|
stx XPOS
|
||||||
|
lda lemming_y,Y
|
||||||
|
sta YPOS
|
||||||
|
|
||||||
|
jsr hgr_draw_sprite_autoshift
|
||||||
|
|
||||||
|
jmp done_draw_lemming
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;====================
|
||||||
|
;====================
|
||||||
|
; draw particles
|
||||||
|
;====================
|
||||||
|
;====================
|
||||||
|
|
||||||
|
draw_particles:
|
||||||
|
|
||||||
|
jsr hgr_draw_particles
|
||||||
|
|
||||||
|
ldy CURRENT_LEMMING
|
||||||
|
|
||||||
|
lda lemming_frame,Y
|
||||||
|
cmp #16
|
||||||
|
bne still_going
|
||||||
|
|
||||||
|
; TODO: partway through make lemming not out?
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta lemming_out,Y
|
||||||
|
|
||||||
|
clc ; mark as not exiting via door
|
||||||
|
jsr remove_lemming ; remove the lemming
|
||||||
|
|
||||||
|
still_going:
|
||||||
|
|
||||||
|
not_done_particle:
|
||||||
|
jmp done_draw_lemming
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;======================
|
||||||
|
;======================
|
||||||
|
; digging
|
||||||
|
;======================
|
||||||
|
;======================
|
||||||
|
|
||||||
|
draw_digging_sprite:
|
||||||
|
|
||||||
|
lda lemming_frame,Y
|
||||||
|
and #$7
|
||||||
|
tax
|
||||||
|
|
||||||
|
lda dig_sprite_l,X
|
||||||
|
sta INL
|
||||||
|
lda dig_sprite_h,X
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
ldx lemming_x,Y
|
||||||
|
stx XPOS
|
||||||
|
lda lemming_y,Y
|
||||||
|
sec
|
||||||
|
sbc #2
|
||||||
|
jmp draw_common
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
lfall_sprite_l:
|
lfall_sprite_l:
|
||||||
@ -420,226 +640,3 @@ stopper_sprite_h:
|
|||||||
.byte >lemming_stopper13_sprite,>lemming_stopper14_sprite
|
.byte >lemming_stopper13_sprite,>lemming_stopper14_sprite
|
||||||
.byte >lemming_stopper7_sprite,>lemming_stopper7_sprite
|
.byte >lemming_stopper7_sprite,>lemming_stopper7_sprite
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;==========================
|
|
||||||
; Handle particles
|
|
||||||
;==========================
|
|
||||||
|
|
||||||
handle_particles:
|
|
||||||
jsr hgr_draw_particles
|
|
||||||
|
|
||||||
ldy CURRENT_LEMMING
|
|
||||||
|
|
||||||
lda lemming_frame,Y
|
|
||||||
cmp #16
|
|
||||||
bne still_going
|
|
||||||
|
|
||||||
; TODO: partway through make lemming not out?
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
sta lemming_out,Y
|
|
||||||
|
|
||||||
clc ; mark as not exiting via door
|
|
||||||
jsr remove_lemming ; remove the lemming
|
|
||||||
|
|
||||||
still_going:
|
|
||||||
|
|
||||||
not_done_particle:
|
|
||||||
rts
|
|
||||||
|
|
||||||
;==========================
|
|
||||||
; Handle explosion
|
|
||||||
;==========================
|
|
||||||
|
|
||||||
; moved to make room
|
|
||||||
handle_explosion:
|
|
||||||
|
|
||||||
lda lemming_frame,Y
|
|
||||||
cmp #$10
|
|
||||||
bcc exploding_animation
|
|
||||||
beq draw_explosion
|
|
||||||
|
|
||||||
start_particles:
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
sta lemming_frame,Y
|
|
||||||
|
|
||||||
jsr init_particles
|
|
||||||
|
|
||||||
; erase explosion
|
|
||||||
|
|
||||||
ldy CURRENT_LEMMING
|
|
||||||
|
|
||||||
lda lemming_y,Y
|
|
||||||
sec
|
|
||||||
sbc #16
|
|
||||||
sta SAVED_Y1
|
|
||||||
clc
|
|
||||||
adc #32
|
|
||||||
sta SAVED_Y2
|
|
||||||
|
|
||||||
lda lemming_x,Y
|
|
||||||
sec
|
|
||||||
sbc #1
|
|
||||||
tax
|
|
||||||
inx
|
|
||||||
inx
|
|
||||||
inx
|
|
||||||
jsr hgr_partial_restore
|
|
||||||
|
|
||||||
; start particles
|
|
||||||
|
|
||||||
ldy CURRENT_LEMMING
|
|
||||||
lda #LEMMING_PARTICLES
|
|
||||||
sta lemming_status,Y
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
draw_explosion:
|
|
||||||
|
|
||||||
; first erase pit in background art
|
|
||||||
|
|
||||||
jsr hgr_hlin_page_toggle ; toggle to page2
|
|
||||||
|
|
||||||
ldx #0
|
|
||||||
sta HGR_COLOR
|
|
||||||
|
|
||||||
ldy CURRENT_LEMMING
|
|
||||||
|
|
||||||
; line from (x,a) to (x+y,a)
|
|
||||||
lda lemming_x,Y
|
|
||||||
asl
|
|
||||||
adc lemming_x,Y
|
|
||||||
asl
|
|
||||||
adc lemming_x,Y ; multiply by 7
|
|
||||||
tax
|
|
||||||
pha
|
|
||||||
|
|
||||||
lda lemming_y,Y
|
|
||||||
clc
|
|
||||||
adc #9
|
|
||||||
|
|
||||||
ldy #7
|
|
||||||
|
|
||||||
jsr hgr_hlin
|
|
||||||
|
|
||||||
; line from (x,a) to (x+y,a)
|
|
||||||
pla
|
|
||||||
tax
|
|
||||||
|
|
||||||
ldy CURRENT_LEMMING
|
|
||||||
lda lemming_y,Y
|
|
||||||
ldy #7
|
|
||||||
clc
|
|
||||||
adc #10
|
|
||||||
jsr hgr_hlin
|
|
||||||
|
|
||||||
|
|
||||||
jsr hgr_hlin_page_toggle ; toggle back to page1
|
|
||||||
|
|
||||||
jsr click_speaker
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
lda #<explosion_sprite
|
|
||||||
sta INL
|
|
||||||
lda #>explosion_sprite
|
|
||||||
sta INH
|
|
||||||
|
|
||||||
ldy CURRENT_LEMMING
|
|
||||||
ldx lemming_x,Y
|
|
||||||
dex
|
|
||||||
stx XPOS
|
|
||||||
lda lemming_y,Y
|
|
||||||
sec
|
|
||||||
sbc #5
|
|
||||||
|
|
||||||
; jmp draw_common
|
|
||||||
jmp done_handle_exploding
|
|
||||||
|
|
||||||
exploding_animation:
|
|
||||||
; and #$f
|
|
||||||
tax
|
|
||||||
|
|
||||||
lda exploding_sprite_l,X
|
|
||||||
sta INL
|
|
||||||
lda exploding_sprite_h,X
|
|
||||||
sta INH
|
|
||||||
|
|
||||||
ldx lemming_x,Y
|
|
||||||
stx XPOS
|
|
||||||
lda lemming_y,Y
|
|
||||||
; jmp draw_common
|
|
||||||
|
|
||||||
done_handle_exploding:
|
|
||||||
sta YPOS
|
|
||||||
|
|
||||||
jsr hgr_draw_sprite_autoshift
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;==========================
|
|
||||||
; Handle splatting
|
|
||||||
;==========================
|
|
||||||
|
|
||||||
; moved to make room
|
|
||||||
handle_splatting:
|
|
||||||
|
|
||||||
lda lemming_frame,Y
|
|
||||||
cmp #$8
|
|
||||||
beq done_splatting
|
|
||||||
|
|
||||||
draw_splatting:
|
|
||||||
jsr click_speaker
|
|
||||||
|
|
||||||
tax
|
|
||||||
|
|
||||||
lda splatting_sprite_l,X
|
|
||||||
sta INL
|
|
||||||
lda splatting_sprite_h,X
|
|
||||||
sta INH
|
|
||||||
|
|
||||||
ldx lemming_x,Y
|
|
||||||
stx XPOS
|
|
||||||
lda lemming_y,Y
|
|
||||||
sta YPOS
|
|
||||||
|
|
||||||
jsr hgr_draw_sprite_autoshift
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
done_splatting:
|
|
||||||
clc
|
|
||||||
jsr remove_lemming ; FIXME: tail call
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;==========================
|
|
||||||
; Handle stopping
|
|
||||||
;==========================
|
|
||||||
|
|
||||||
handle_stopping:
|
|
||||||
|
|
||||||
lda lemming_frame,Y
|
|
||||||
and #$f
|
|
||||||
tax
|
|
||||||
|
|
||||||
lda stopper_sprite_l,X
|
|
||||||
sta INL
|
|
||||||
lda stopper_sprite_h,X
|
|
||||||
sta INH
|
|
||||||
|
|
||||||
ldx lemming_x,Y
|
|
||||||
stx XPOS
|
|
||||||
lda lemming_y,Y
|
|
||||||
sta YPOS
|
|
||||||
|
|
||||||
jsr hgr_draw_sprite_autoshift
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,18 +3,21 @@ MAX_LEMMINGS = 10
|
|||||||
LEMMING_RIGHT = $01
|
LEMMING_RIGHT = $01
|
||||||
LEMMING_LEFT = $FF
|
LEMMING_LEFT = $FF
|
||||||
|
|
||||||
LEMMING_FALLING = 1
|
LEMMING_FALLING = 0
|
||||||
LEMMING_WALKING = 2
|
LEMMING_WALKING = 1
|
||||||
LEMMING_DIGGING = 3
|
LEMMING_DIGGING = 2
|
||||||
LEMMING_EXPLODING = 4
|
LEMMING_EXPLODING = 3
|
||||||
LEMMING_PARTICLES = 5
|
LEMMING_PARTICLES = 4
|
||||||
LEMMING_SPLATTING = 6
|
LEMMING_SPLATTING = 5
|
||||||
LEMMING_FLOATING = 7
|
LEMMING_FLOATING = 6
|
||||||
LEMMING_CLIMBING = 8
|
LEMMING_CLIMBING = 7
|
||||||
LEMMING_BASHING = 9
|
LEMMING_BASHING = 8
|
||||||
LEMMING_STOPPING = 10
|
LEMMING_STOPPING = 9
|
||||||
LEMMING_MINING = 11
|
LEMMING_MINING = 10
|
||||||
LEMMING_BUILDING = 12
|
LEMMING_BUILDING = 11
|
||||||
|
LEMMING_SHRUGGING = 12
|
||||||
|
LEMMING_PULLUP = 13
|
||||||
|
|
||||||
|
|
||||||
LEMMING_FLOATER = $80
|
LEMMING_FLOATER = $80
|
||||||
LEMMING_CLIMBER = $40
|
LEMMING_CLIMBER = $40
|
||||||
|
Loading…
Reference in New Issue
Block a user