2022-03-13 21:18:19 +00:00
|
|
|
;==================
|
|
|
|
;==================
|
|
|
|
; erase lemming
|
|
|
|
;==================
|
|
|
|
;==================
|
2022-03-11 04:02:08 +00:00
|
|
|
erase_lemming:
|
|
|
|
ldy #0
|
|
|
|
|
|
|
|
lda lemming_out,Y
|
|
|
|
beq done_erase_lemming
|
|
|
|
|
|
|
|
lda lemming_y,Y
|
2022-03-13 03:13:05 +00:00
|
|
|
sec
|
2022-03-16 01:00:30 +00:00
|
|
|
sbc #6
|
2022-03-11 04:02:08 +00:00
|
|
|
sta SAVED_Y1
|
|
|
|
clc
|
2022-03-16 01:00:30 +00:00
|
|
|
adc #15
|
2022-03-11 04:02:08 +00:00
|
|
|
sta SAVED_Y2
|
|
|
|
|
|
|
|
lda lemming_x,Y
|
|
|
|
tax
|
|
|
|
inx
|
|
|
|
jsr hgr_partial_restore
|
|
|
|
|
|
|
|
done_erase_lemming:
|
|
|
|
rts
|
|
|
|
|
2022-03-13 21:18:19 +00:00
|
|
|
;=========================
|
|
|
|
;=========================
|
|
|
|
; draw lemming
|
|
|
|
;=========================
|
|
|
|
;=========================
|
2022-03-10 06:10:42 +00:00
|
|
|
draw_lemming:
|
2022-03-11 04:02:08 +00:00
|
|
|
ldy #0
|
2022-03-10 06:10:42 +00:00
|
|
|
|
2022-03-11 04:02:08 +00:00
|
|
|
lda lemming_out,Y
|
2022-03-16 01:00:30 +00:00
|
|
|
bne do_draw_countdown
|
2022-03-13 03:13:05 +00:00
|
|
|
|
|
|
|
jmp done_draw_lemming
|
2022-03-10 06:10:42 +00:00
|
|
|
|
2022-03-16 01:00:30 +00:00
|
|
|
do_draw_countdown:
|
|
|
|
lda lemming_exploding,Y
|
|
|
|
beq do_draw_lemming
|
|
|
|
|
|
|
|
ldx lemming_exploding
|
|
|
|
dex
|
|
|
|
|
|
|
|
lda countdown_sprites_l,X
|
|
|
|
sta INL
|
|
|
|
lda countdown_sprites_h,X
|
|
|
|
sta INH
|
|
|
|
|
|
|
|
ldx lemming_x,Y
|
|
|
|
stx XPOS
|
|
|
|
lda lemming_y,Y
|
|
|
|
sec
|
|
|
|
sbc #6
|
|
|
|
sta YPOS
|
|
|
|
|
|
|
|
jsr hgr_draw_sprite_autoshift
|
|
|
|
|
|
|
|
|
2022-03-13 03:13:05 +00:00
|
|
|
do_draw_lemming:
|
2022-03-16 01:00:30 +00:00
|
|
|
ldy #0
|
2022-03-13 01:55:20 +00:00
|
|
|
lda lemming_status,Y
|
|
|
|
cmp #LEMMING_DIGGING
|
|
|
|
beq draw_digging_sprite
|
2022-03-13 03:13:05 +00:00
|
|
|
cmp #LEMMING_FALLING
|
|
|
|
beq draw_falling_sprite
|
2022-03-16 01:00:30 +00:00
|
|
|
cmp #LEMMING_EXPLODING
|
|
|
|
beq draw_exploding_sprite
|
2022-03-13 03:13:05 +00:00
|
|
|
|
|
|
|
draw_walking_sprite:
|
|
|
|
|
|
|
|
lda lemming_frame,Y
|
|
|
|
and #$7
|
|
|
|
tax
|
|
|
|
|
|
|
|
lda lemming_direction,Y
|
|
|
|
bpl draw_walking_right
|
2022-03-13 01:55:20 +00:00
|
|
|
|
2022-03-13 03:13:05 +00:00
|
|
|
draw_walking_left:
|
|
|
|
lda lwalk_sprite_l,X
|
|
|
|
sta INL
|
|
|
|
lda lwalk_sprite_h,X
|
|
|
|
jmp draw_walking_common
|
|
|
|
|
|
|
|
draw_walking_right:
|
|
|
|
lda rwalk_sprite_l,X
|
|
|
|
sta INL
|
|
|
|
lda rwalk_sprite_h,X
|
|
|
|
|
|
|
|
draw_walking_common:
|
|
|
|
sta INH
|
|
|
|
|
|
|
|
ldx lemming_x,Y
|
|
|
|
stx XPOS
|
|
|
|
lda lemming_y,Y
|
|
|
|
jmp draw_common
|
|
|
|
|
|
|
|
;====================
|
|
|
|
; draw falling
|
|
|
|
;====================
|
2022-03-12 23:03:53 +00:00
|
|
|
|
|
|
|
draw_falling_sprite:
|
|
|
|
|
|
|
|
lda lemming_frame,Y
|
|
|
|
and #$3
|
|
|
|
tax
|
|
|
|
|
|
|
|
lda lemming_direction,Y
|
|
|
|
bpl draw_falling_right
|
|
|
|
|
|
|
|
draw_falling_left:
|
|
|
|
lda lfall_sprite_l,X
|
|
|
|
sta INL
|
|
|
|
lda lfall_sprite_h,X
|
|
|
|
jmp draw_falling_common
|
|
|
|
|
|
|
|
draw_falling_right:
|
|
|
|
lda rfall_sprite_l,X
|
2022-03-10 06:10:42 +00:00
|
|
|
sta INL
|
2022-03-12 23:03:53 +00:00
|
|
|
lda rfall_sprite_h,X
|
|
|
|
|
|
|
|
draw_falling_common:
|
2022-03-10 06:10:42 +00:00
|
|
|
sta INH
|
|
|
|
|
2022-03-11 04:02:08 +00:00
|
|
|
ldx lemming_x,Y
|
2022-03-10 06:10:42 +00:00
|
|
|
stx XPOS
|
2022-03-11 04:02:08 +00:00
|
|
|
lda lemming_y,Y
|
2022-03-13 01:55:20 +00:00
|
|
|
jmp draw_common
|
|
|
|
|
|
|
|
|
2022-03-16 01:00:30 +00:00
|
|
|
;====================
|
|
|
|
; draw exploding
|
|
|
|
;====================
|
|
|
|
|
|
|
|
draw_exploding_sprite:
|
|
|
|
|
|
|
|
|
2022-03-16 01:24:13 +00:00
|
|
|
jsr handle_explosion
|
2022-03-16 01:00:30 +00:00
|
|
|
|
2022-03-16 01:24:13 +00:00
|
|
|
jmp done_draw_lemming
|
2022-03-16 01:00:30 +00:00
|
|
|
|
|
|
|
|
2022-03-13 01:55:20 +00:00
|
|
|
;======================
|
|
|
|
; 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:
|
2022-03-10 06:10:42 +00:00
|
|
|
sta YPOS
|
|
|
|
|
2022-03-13 21:18:19 +00:00
|
|
|
jsr hgr_draw_sprite_autoshift
|
2022-03-10 06:10:42 +00:00
|
|
|
|
|
|
|
done_draw_lemming:
|
|
|
|
rts
|
|
|
|
|
2022-03-12 23:03:53 +00:00
|
|
|
|
|
|
|
lfall_sprite_l:
|
|
|
|
.byte <lemming_lfall1_sprite,<lemming_lfall2_sprite
|
|
|
|
.byte <lemming_lfall3_sprite,<lemming_lfall4_sprite
|
|
|
|
lfall_sprite_h:
|
|
|
|
.byte >lemming_lfall1_sprite,>lemming_lfall2_sprite
|
|
|
|
.byte >lemming_lfall3_sprite,>lemming_lfall4_sprite
|
|
|
|
|
|
|
|
rfall_sprite_l:
|
|
|
|
.byte <lemming_rfall1_sprite,<lemming_rfall2_sprite
|
|
|
|
.byte <lemming_rfall3_sprite,<lemming_rfall4_sprite
|
|
|
|
rfall_sprite_h:
|
|
|
|
.byte >lemming_rfall1_sprite,>lemming_rfall2_sprite
|
|
|
|
.byte >lemming_rfall3_sprite,>lemming_rfall4_sprite
|
|
|
|
|
|
|
|
|
2022-03-13 01:55:20 +00:00
|
|
|
dig_sprite_l:
|
|
|
|
.byte <lemming_dig1_sprite,<lemming_dig2_sprite
|
|
|
|
.byte <lemming_dig3_sprite,<lemming_dig4_sprite
|
|
|
|
.byte <lemming_dig5_sprite,<lemming_dig6_sprite
|
|
|
|
.byte <lemming_dig7_sprite,<lemming_dig8_sprite
|
|
|
|
dig_sprite_h:
|
|
|
|
.byte >lemming_dig1_sprite,>lemming_dig2_sprite
|
|
|
|
.byte >lemming_dig3_sprite,>lemming_dig4_sprite
|
|
|
|
.byte >lemming_dig5_sprite,>lemming_dig6_sprite
|
|
|
|
.byte >lemming_dig7_sprite,>lemming_dig8_sprite
|
|
|
|
|
2022-03-13 03:13:05 +00:00
|
|
|
rwalk_sprite_l:
|
|
|
|
.byte <lemming_rwalk1_sprite,<lemming_rwalk2_sprite
|
|
|
|
.byte <lemming_rwalk3_sprite,<lemming_rwalk4_sprite
|
|
|
|
.byte <lemming_rwalk5_sprite,<lemming_rwalk6_sprite
|
|
|
|
.byte <lemming_rwalk7_sprite,<lemming_rwalk8_sprite
|
|
|
|
rwalk_sprite_h:
|
|
|
|
.byte >lemming_rwalk1_sprite,>lemming_rwalk2_sprite
|
|
|
|
.byte >lemming_rwalk3_sprite,>lemming_rwalk4_sprite
|
|
|
|
.byte >lemming_rwalk5_sprite,>lemming_rwalk6_sprite
|
|
|
|
.byte >lemming_rwalk7_sprite,>lemming_rwalk8_sprite
|
|
|
|
|
|
|
|
lwalk_sprite_l:
|
|
|
|
.byte <lemming_lwalk1_sprite,<lemming_lwalk2_sprite
|
|
|
|
.byte <lemming_lwalk3_sprite,<lemming_lwalk4_sprite
|
|
|
|
.byte <lemming_lwalk5_sprite,<lemming_lwalk6_sprite
|
|
|
|
.byte <lemming_lwalk7_sprite,<lemming_lwalk8_sprite
|
|
|
|
lwalk_sprite_h:
|
|
|
|
.byte >lemming_lwalk1_sprite,>lemming_lwalk2_sprite
|
|
|
|
.byte >lemming_lwalk3_sprite,>lemming_lwalk4_sprite
|
|
|
|
.byte >lemming_lwalk5_sprite,>lemming_lwalk6_sprite
|
|
|
|
.byte >lemming_lwalk7_sprite,>lemming_lwalk8_sprite
|
|
|
|
|
2022-03-16 01:00:30 +00:00
|
|
|
exploding_sprite_l:
|
2022-03-13 05:05:24 +00:00
|
|
|
.byte <lemming_explode1_sprite,<lemming_explode1_sprite
|
|
|
|
.byte <lemming_explode2_sprite,<lemming_explode3_sprite
|
|
|
|
.byte <lemming_explode4_sprite,<lemming_explode5_sprite
|
|
|
|
.byte <lemming_explode6_sprite,<lemming_explode7_sprite
|
|
|
|
.byte <lemming_explode8_sprite,<lemming_explode7_sprite
|
|
|
|
.byte <lemming_explode9_sprite,<lemming_explode8_sprite
|
|
|
|
.byte <lemming_explode9_sprite,<lemming_explode8_sprite
|
|
|
|
.byte <lemming_explode9_sprite,<lemming_explode8_sprite
|
|
|
|
|
2022-03-16 01:00:30 +00:00
|
|
|
exploding_sprite_h:
|
2022-03-13 05:05:24 +00:00
|
|
|
.byte >lemming_explode1_sprite,>lemming_explode1_sprite
|
|
|
|
.byte >lemming_explode2_sprite,>lemming_explode3_sprite
|
|
|
|
.byte >lemming_explode4_sprite,>lemming_explode5_sprite
|
|
|
|
.byte >lemming_explode6_sprite,>lemming_explode7_sprite
|
|
|
|
.byte >lemming_explode8_sprite,>lemming_explode7_sprite
|
|
|
|
.byte >lemming_explode9_sprite,>lemming_explode8_sprite
|
|
|
|
.byte >lemming_explode9_sprite,>lemming_explode8_sprite
|
|
|
|
.byte >lemming_explode9_sprite,>lemming_explode8_sprite
|
|
|
|
|
|
|
|
|
|
|
|
; 787989898
|
|
|
|
; clcrlrlrle
|
|
|
|
|
2022-03-16 01:00:30 +00:00
|
|
|
countdown_sprites_l:
|
|
|
|
.byte <countdown5_sprite,<countdown4_sprite,<countdown3_sprite
|
|
|
|
.byte <countdown2_sprite,<countdown1_sprite
|
2022-03-13 05:05:24 +00:00
|
|
|
|
2022-03-16 01:00:30 +00:00
|
|
|
countdown_sprites_h:
|
|
|
|
.byte >countdown5_sprite,>countdown4_sprite,>countdown3_sprite
|
|
|
|
.byte >countdown2_sprite,>countdown1_sprite
|
2022-03-13 03:13:05 +00:00
|
|
|
|
2022-03-16 01:24:13 +00:00
|
|
|
|
|
|
|
|
|
|
|
; moved to make room
|
|
|
|
handle_explosion:
|
|
|
|
|
|
|
|
lda lemming_frame,Y
|
|
|
|
cmp #$10
|
|
|
|
bcc exploding_animation
|
|
|
|
beq draw_explosion
|
|
|
|
|
|
|
|
start_particles:
|
|
|
|
|
|
|
|
; erase explosion
|
|
|
|
|
|
|
|
ldy #0
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
lda #LEMMING_PARTICLES
|
|
|
|
sta lemming_status
|
|
|
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
|
|
draw_explosion:
|
|
|
|
|
|
|
|
; first erase pit in background art
|
|
|
|
|
|
|
|
jsr hgr_hlin_page_toggle ; toggle to page2
|
|
|
|
|
|
|
|
; line from (x,a) to (x+y,a)
|
|
|
|
ldx lemming_x
|
|
|
|
dex
|
|
|
|
ldy #3
|
|
|
|
lda lemming_y
|
|
|
|
clc
|
|
|
|
adc #10
|
|
|
|
jsr hgr_hlin
|
|
|
|
|
|
|
|
; line from (x,a) to (x+y,a)
|
|
|
|
ldx lemming_x
|
|
|
|
ldy #1
|
|
|
|
lda lemming_y
|
|
|
|
clc
|
|
|
|
adc #11
|
|
|
|
jsr hgr_hlin
|
|
|
|
|
|
|
|
|
|
|
|
jsr hgr_hlin_page_toggle ; toggle to page1
|
|
|
|
|
|
|
|
ldy #0
|
|
|
|
lda #<explosion_sprite
|
|
|
|
sta INL
|
|
|
|
lda #>explosion_sprite
|
|
|
|
sta INH
|
|
|
|
|
|
|
|
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
|