lemm: hook up floaters
This commit is contained in:
parent
f4bb380802
commit
7ba8b5b8a4
|
@ -82,6 +82,8 @@ do_draw_lemming:
|
|||
beq draw_digging_sprite
|
||||
cmp #LEMMING_FALLING
|
||||
beq draw_falling_sprite
|
||||
cmp #LEMMING_FLOATING
|
||||
beq draw_floating_sprite
|
||||
cmp #LEMMING_EXPLODING
|
||||
beq draw_exploding_sprite
|
||||
cmp #LEMMING_PARTICLES
|
||||
|
@ -117,36 +119,22 @@ draw_walking_common:
|
|||
lda lemming_y,Y
|
||||
jmp draw_common
|
||||
|
||||
|
||||
;====================
|
||||
; draw floating
|
||||
;====================
|
||||
|
||||
draw_floating_sprite:
|
||||
jsr do_draw_floating_sprite
|
||||
jmp draw_common
|
||||
|
||||
|
||||
;====================
|
||||
; draw falling
|
||||
;====================
|
||||
|
||||
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
|
||||
jsr do_draw_falling_sprite
|
||||
jmp draw_common
|
||||
|
||||
|
||||
|
@ -225,6 +213,73 @@ really_done_draw_lemming:
|
|||
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:
|
||||
.byte <lemming_lfall1_sprite,<lemming_lfall2_sprite
|
||||
.byte <lemming_lfall3_sprite,<lemming_lfall4_sprite
|
||||
|
@ -318,6 +373,18 @@ splatting_sprite_h:
|
|||
.byte >lemming_splat5_sprite,>lemming_splat6_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
|
||||
|
|
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
|
||||
|
||||
make_climber:
|
||||
jsr make_climber_routine
|
||||
jmp done_keypress
|
||||
make_floater:
|
||||
jsr make_floater_routine
|
||||
jmp done_keypress
|
||||
make_exploding:
|
||||
jsr make_exploding_routine
|
||||
|
@ -301,6 +303,27 @@ make_exploding_routine:
|
|||
sta lemming_exploding,Y
|
||||
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 13,18,"TIME 5 MINUTES",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 13,18,"TIME 5 MINUTES",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 13,18,"TIME 5 MINUTES",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 13,18,"TIME 5 MINUTES",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 13,18,"TIME 5 MINUTES",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
|
||||
|
||||
lemming_x:
|
||||
|
@ -51,6 +49,8 @@ really_move_lemming:
|
|||
beq do_lemming_walking
|
||||
cmp #LEMMING_DIGGING
|
||||
beq do_lemming_digging
|
||||
cmp #LEMMING_FLOATING
|
||||
beq do_lemming_floating
|
||||
jmp done_move_lemming
|
||||
|
||||
|
||||
|
@ -59,17 +59,19 @@ really_move_lemming:
|
|||
;=========================
|
||||
|
||||
do_lemming_falling:
|
||||
tya
|
||||
tax
|
||||
inc lemming_y,X ; fall speed
|
||||
inc lemming_y,X
|
||||
|
||||
inc lemming_fall_distance,X ; how far
|
||||
|
||||
jsr collision_check_ground
|
||||
|
||||
jsr handle_lemming_falling
|
||||
jmp done_move_lemming
|
||||
|
||||
|
||||
;=========================
|
||||
; floating
|
||||
;=========================
|
||||
|
||||
do_lemming_floating:
|
||||
jsr handle_lemming_floating
|
||||
jmp done_move_lemming
|
||||
|
||||
|
||||
;=========================
|
||||
; walking
|
||||
;=========================
|
||||
|
@ -146,6 +148,11 @@ walking_no_increment:
|
|||
walking_done:
|
||||
jmp done_move_lemming
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;=====================
|
||||
; digging
|
||||
;=====================
|
||||
|
@ -202,6 +209,54 @@ really_done_checking_lemming:
|
|||
|
||||
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
|
||||
;==========================
|
||||
|
@ -291,14 +346,19 @@ ground_walking:
|
|||
sta lemming_fall_distance,Y
|
||||
|
||||
lda #LEMMING_WALKING ; else, walk
|
||||
jmp done_check_ground
|
||||
jmp update_status_check_ground
|
||||
|
||||
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
|
||||
done_check_ground:
|
||||
update_status_check_ground:
|
||||
ldy CURRENT_LEMMING
|
||||
sta lemming_status,Y
|
||||
|
||||
done_check_ground:
|
||||
rts
|
||||
|
||||
lemming_goes_splat:
|
||||
|
|
Loading…
Reference in New Issue