mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-06-02 19:42:23 +00:00
lemm: hook up floaters
This commit is contained in:
parent
f4bb380802
commit
7ba8b5b8a4
|
@ -82,6 +82,8 @@ do_draw_lemming:
|
||||||
beq draw_digging_sprite
|
beq draw_digging_sprite
|
||||||
cmp #LEMMING_FALLING
|
cmp #LEMMING_FALLING
|
||||||
beq draw_falling_sprite
|
beq draw_falling_sprite
|
||||||
|
cmp #LEMMING_FLOATING
|
||||||
|
beq draw_floating_sprite
|
||||||
cmp #LEMMING_EXPLODING
|
cmp #LEMMING_EXPLODING
|
||||||
beq draw_exploding_sprite
|
beq draw_exploding_sprite
|
||||||
cmp #LEMMING_PARTICLES
|
cmp #LEMMING_PARTICLES
|
||||||
|
@ -117,36 +119,22 @@ draw_walking_common:
|
||||||
lda lemming_y,Y
|
lda lemming_y,Y
|
||||||
jmp draw_common
|
jmp draw_common
|
||||||
|
|
||||||
|
|
||||||
|
;====================
|
||||||
|
; draw floating
|
||||||
|
;====================
|
||||||
|
|
||||||
|
draw_floating_sprite:
|
||||||
|
jsr do_draw_floating_sprite
|
||||||
|
jmp draw_common
|
||||||
|
|
||||||
|
|
||||||
;====================
|
;====================
|
||||||
; draw falling
|
; draw falling
|
||||||
;====================
|
;====================
|
||||||
|
|
||||||
draw_falling_sprite:
|
draw_falling_sprite:
|
||||||
|
jsr do_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
|
|
||||||
sta INL
|
|
||||||
lda rfall_sprite_h,X
|
|
||||||
|
|
||||||
draw_falling_common:
|
|
||||||
sta INH
|
|
||||||
|
|
||||||
ldx lemming_x,Y
|
|
||||||
stx XPOS
|
|
||||||
lda lemming_y,Y
|
|
||||||
jmp draw_common
|
jmp draw_common
|
||||||
|
|
||||||
|
|
||||||
|
@ -225,6 +213,73 @@ really_done_draw_lemming:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
;===============
|
||||||
|
;===============
|
||||||
|
; draw floating
|
||||||
|
;===============
|
||||||
|
;===============
|
||||||
|
|
||||||
|
do_draw_floating_sprite:
|
||||||
|
lda lemming_frame,Y
|
||||||
|
cmp #4
|
||||||
|
bcc umbrella_opening ; blt
|
||||||
|
; if <4 then draw first 4
|
||||||
|
; frames
|
||||||
|
|
||||||
|
and #3 ; otherwise repeat frames
|
||||||
|
clc ; 4..7
|
||||||
|
adc #4
|
||||||
|
|
||||||
|
umbrella_opening:
|
||||||
|
tax
|
||||||
|
|
||||||
|
lda umbrella_sprite_l,X
|
||||||
|
sta INL
|
||||||
|
lda umbrella_sprite_h,X
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
ldx lemming_x,Y
|
||||||
|
stx XPOS
|
||||||
|
lda lemming_y,Y
|
||||||
|
sec
|
||||||
|
sbc #4
|
||||||
|
rts
|
||||||
|
|
||||||
|
;===============
|
||||||
|
;===============
|
||||||
|
; draw falling
|
||||||
|
;===============
|
||||||
|
;===============
|
||||||
|
|
||||||
|
do_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
|
||||||
|
sta INL
|
||||||
|
lda rfall_sprite_h,X
|
||||||
|
|
||||||
|
draw_falling_common:
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
ldx lemming_x,Y
|
||||||
|
stx XPOS
|
||||||
|
lda lemming_y,Y
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
lfall_sprite_l:
|
lfall_sprite_l:
|
||||||
.byte <lemming_lfall1_sprite,<lemming_lfall2_sprite
|
.byte <lemming_lfall1_sprite,<lemming_lfall2_sprite
|
||||||
.byte <lemming_lfall3_sprite,<lemming_lfall4_sprite
|
.byte <lemming_lfall3_sprite,<lemming_lfall4_sprite
|
||||||
|
@ -318,6 +373,18 @@ splatting_sprite_h:
|
||||||
.byte >lemming_splat5_sprite,>lemming_splat6_sprite
|
.byte >lemming_splat5_sprite,>lemming_splat6_sprite
|
||||||
.byte >lemming_splat7_sprite,>lemming_splat8_sprite
|
.byte >lemming_splat7_sprite,>lemming_splat8_sprite
|
||||||
|
|
||||||
|
umbrella_sprite_l:
|
||||||
|
.byte <lemming_umbrella1_sprite,<lemming_umbrella2_sprite
|
||||||
|
.byte <lemming_umbrella3_sprite,<lemming_umbrella4_sprite
|
||||||
|
.byte <lemming_umbrella5_sprite,<lemming_umbrella6_sprite
|
||||||
|
.byte <lemming_umbrella7_sprite,<lemming_umbrella8_sprite
|
||||||
|
|
||||||
|
umbrella_sprite_h:
|
||||||
|
.byte >lemming_umbrella1_sprite,>lemming_umbrella2_sprite
|
||||||
|
.byte >lemming_umbrella3_sprite,>lemming_umbrella4_sprite
|
||||||
|
.byte >lemming_umbrella5_sprite,>lemming_umbrella6_sprite
|
||||||
|
.byte >lemming_umbrella7_sprite,>lemming_umbrella8_sprite
|
||||||
|
|
||||||
|
|
||||||
;==========================
|
;==========================
|
||||||
; Handle particles
|
; Handle particles
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
@ -243,8 +243,10 @@ return_check_lemming:
|
||||||
bne done_keypress
|
bne done_keypress
|
||||||
|
|
||||||
make_climber:
|
make_climber:
|
||||||
|
jsr make_climber_routine
|
||||||
jmp done_keypress
|
jmp done_keypress
|
||||||
make_floater:
|
make_floater:
|
||||||
|
jsr make_floater_routine
|
||||||
jmp done_keypress
|
jmp done_keypress
|
||||||
make_exploding:
|
make_exploding:
|
||||||
jsr make_exploding_routine
|
jsr make_exploding_routine
|
||||||
|
@ -301,6 +303,27 @@ make_exploding_routine:
|
||||||
sta lemming_exploding,Y
|
sta lemming_exploding,Y
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
;========================
|
||||||
|
; make climber
|
||||||
|
;========================
|
||||||
|
make_climber_routine:
|
||||||
|
|
||||||
|
lda #LEMMING_CLIMBER
|
||||||
|
ora lemming_attribute,Y
|
||||||
|
sta lemming_attribute,Y
|
||||||
|
rts
|
||||||
|
|
||||||
|
;========================
|
||||||
|
; make floater
|
||||||
|
;========================
|
||||||
|
make_floater_routine:
|
||||||
|
|
||||||
|
lda #LEMMING_FLOATER
|
||||||
|
ora lemming_attribute,Y
|
||||||
|
sta lemming_attribute,Y
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;=============================
|
;=============================
|
||||||
;=============================
|
;=============================
|
||||||
|
|
|
@ -286,4 +286,4 @@ level1_intro_text:
|
||||||
.byte 12,16,"RELEASE RATE 50",0
|
.byte 12,16,"RELEASE RATE 50",0
|
||||||
.byte 13,18,"TIME 5 MINUTES",0
|
.byte 13,18,"TIME 5 MINUTES",0
|
||||||
.byte 15,20,"RATING FUN",0
|
.byte 15,20,"RATING FUN",0
|
||||||
.byte 8,23,"PRESS RETURN TO CONINUE",0
|
.byte 8,23,"PRESS RETURN TO CONTINUE",0
|
||||||
|
|
|
@ -294,4 +294,4 @@ level2_intro_text:
|
||||||
.byte 12,16,"RELEASE RATE 50",0
|
.byte 12,16,"RELEASE RATE 50",0
|
||||||
.byte 13,18,"TIME 5 MINUTES",0
|
.byte 13,18,"TIME 5 MINUTES",0
|
||||||
.byte 15,20,"RATING FUN",0
|
.byte 15,20,"RATING FUN",0
|
||||||
.byte 8,23,"PRESS RETURN TO CONINUE",0
|
.byte 8,23,"PRESS RETURN TO CONTINUE",0
|
||||||
|
|
|
@ -296,4 +296,4 @@ level3_intro_text:
|
||||||
.byte 12,16,"RELEASE RATE 50",0
|
.byte 12,16,"RELEASE RATE 50",0
|
||||||
.byte 13,18,"TIME 5 MINUTES",0
|
.byte 13,18,"TIME 5 MINUTES",0
|
||||||
.byte 15,20,"RATING FUN",0
|
.byte 15,20,"RATING FUN",0
|
||||||
.byte 8,23,"PRESS RETURN TO CONINUE",0
|
.byte 8,23,"PRESS RETURN TO CONTINUE",0
|
||||||
|
|
|
@ -296,4 +296,4 @@ level4_intro_text:
|
||||||
.byte 12,16,"RELEASE RATE 1",0
|
.byte 12,16,"RELEASE RATE 1",0
|
||||||
.byte 13,18,"TIME 5 MINUTES",0
|
.byte 13,18,"TIME 5 MINUTES",0
|
||||||
.byte 15,20,"RATING FUN",0
|
.byte 15,20,"RATING FUN",0
|
||||||
.byte 8,23,"PRESS RETURN TO CONINUE",0
|
.byte 8,23,"PRESS RETURN TO CONTINUE",0
|
||||||
|
|
|
@ -287,4 +287,4 @@ level5_intro_text:
|
||||||
.byte 12,16,"RELEASE RATE 50",0
|
.byte 12,16,"RELEASE RATE 50",0
|
||||||
.byte 13,18,"TIME 5 MINUTES",0
|
.byte 13,18,"TIME 5 MINUTES",0
|
||||||
.byte 15,20,"RATING FUN",0
|
.byte 15,20,"RATING FUN",0
|
||||||
.byte 8,23,"PRESS RETURN TO CONINUE",0
|
.byte 8,23,"PRESS RETURN TO CONTINUE",0
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
|
|
||||||
|
|
||||||
; TODO: auto-size this based on MAX_LEMMINGS
|
; TODO: auto-size this based on MAX_LEMMINGS
|
||||||
|
|
||||||
lemming_x:
|
lemming_x:
|
||||||
|
@ -51,6 +49,8 @@ really_move_lemming:
|
||||||
beq do_lemming_walking
|
beq do_lemming_walking
|
||||||
cmp #LEMMING_DIGGING
|
cmp #LEMMING_DIGGING
|
||||||
beq do_lemming_digging
|
beq do_lemming_digging
|
||||||
|
cmp #LEMMING_FLOATING
|
||||||
|
beq do_lemming_floating
|
||||||
jmp done_move_lemming
|
jmp done_move_lemming
|
||||||
|
|
||||||
|
|
||||||
|
@ -59,17 +59,19 @@ really_move_lemming:
|
||||||
;=========================
|
;=========================
|
||||||
|
|
||||||
do_lemming_falling:
|
do_lemming_falling:
|
||||||
tya
|
jsr handle_lemming_falling
|
||||||
tax
|
|
||||||
inc lemming_y,X ; fall speed
|
|
||||||
inc lemming_y,X
|
|
||||||
|
|
||||||
inc lemming_fall_distance,X ; how far
|
|
||||||
|
|
||||||
jsr collision_check_ground
|
|
||||||
|
|
||||||
jmp done_move_lemming
|
jmp done_move_lemming
|
||||||
|
|
||||||
|
|
||||||
|
;=========================
|
||||||
|
; floating
|
||||||
|
;=========================
|
||||||
|
|
||||||
|
do_lemming_floating:
|
||||||
|
jsr handle_lemming_floating
|
||||||
|
jmp done_move_lemming
|
||||||
|
|
||||||
|
|
||||||
;=========================
|
;=========================
|
||||||
; walking
|
; walking
|
||||||
;=========================
|
;=========================
|
||||||
|
@ -146,6 +148,11 @@ walking_no_increment:
|
||||||
walking_done:
|
walking_done:
|
||||||
jmp done_move_lemming
|
jmp done_move_lemming
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;=====================
|
;=====================
|
||||||
; digging
|
; digging
|
||||||
;=====================
|
;=====================
|
||||||
|
@ -202,6 +209,54 @@ really_done_checking_lemming:
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
;=====================
|
||||||
|
; falling
|
||||||
|
;=====================
|
||||||
|
handle_lemming_falling:
|
||||||
|
|
||||||
|
tya
|
||||||
|
tax
|
||||||
|
inc lemming_y,X ; fall speed
|
||||||
|
inc lemming_y,X
|
||||||
|
|
||||||
|
inc lemming_fall_distance,X ; how far
|
||||||
|
|
||||||
|
lda lemming_fall_distance,X
|
||||||
|
cmp #12
|
||||||
|
bcc not_fallen_enough ; blt
|
||||||
|
|
||||||
|
lda lemming_attribute,X
|
||||||
|
bpl not_fallen_enough ; see if high bit set
|
||||||
|
|
||||||
|
; we can switch to floating
|
||||||
|
lda #LEMMING_FLOATING
|
||||||
|
sta lemming_status,X
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta lemming_frame,X
|
||||||
|
|
||||||
|
not_fallen_enough:
|
||||||
|
jsr collision_check_ground
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
;=====================
|
||||||
|
; floating
|
||||||
|
;=====================
|
||||||
|
handle_lemming_floating:
|
||||||
|
tya
|
||||||
|
tax
|
||||||
|
inc lemming_y,X ; fall speed
|
||||||
|
lda #0
|
||||||
|
sta lemming_fall_distance,X
|
||||||
|
|
||||||
|
jsr collision_check_ground
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;==========================
|
;==========================
|
||||||
; remove lemming from game
|
; remove lemming from game
|
||||||
;==========================
|
;==========================
|
||||||
|
@ -291,14 +346,19 @@ ground_walking:
|
||||||
sta lemming_fall_distance,Y
|
sta lemming_fall_distance,Y
|
||||||
|
|
||||||
lda #LEMMING_WALKING ; else, walk
|
lda #LEMMING_WALKING ; else, walk
|
||||||
jmp done_check_ground
|
jmp update_status_check_ground
|
||||||
|
|
||||||
ground_falling:
|
ground_falling:
|
||||||
|
ldy CURRENT_LEMMING
|
||||||
|
lda lemming_status,Y ; if floating, don't go back to fall
|
||||||
|
cmp #LEMMING_FLOATING
|
||||||
|
beq done_check_ground
|
||||||
|
|
||||||
lda #LEMMING_FALLING
|
lda #LEMMING_FALLING
|
||||||
done_check_ground:
|
update_status_check_ground:
|
||||||
ldy CURRENT_LEMMING
|
ldy CURRENT_LEMMING
|
||||||
sta lemming_status,Y
|
sta lemming_status,Y
|
||||||
|
done_check_ground:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
lemming_goes_splat:
|
lemming_goes_splat:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user