lemm: can select any lemming

This commit is contained in:
Vince Weaver 2022-03-22 21:36:44 -04:00
parent a4fe2f7a4f
commit 3e18390ec6
8 changed files with 82 additions and 29 deletions

View File

@ -5,8 +5,8 @@
draw_pointer:
lda #0
sta OVER_LEMMING
lda #$FF
sta OVER_LEMMING ; first assume not over lemming
; for now assume the only 14x14 sprites are the pointers
@ -17,14 +17,20 @@ draw_pointer:
; see if over lemming
ldy #0
see_if_over_loop:
lda lemming_out,Y
beq no_lemming_try_again
; see if CURSOR_X==LEMMING_X
lda CURSOR_X
cmp lemming_x
cmp lemming_x,Y
beq check_pointer_y
clc
adc #1
cmp lemming_x
bne just_crosshair
cmp lemming_x,Y
bne no_lemming_try_again
check_pointer_y:
; see if CURSOR_Y+7 > lemming_y && CURSOR_Y+7 < lemming_y+9
@ -32,19 +38,30 @@ check_pointer_y:
lda CURSOR_Y
clc
adc #7
cmp lemming_y
bcc just_crosshair
cmp lemming_y,Y
bcc no_lemming_try_again
lda CURSOR_Y ; if cursor_y+7 > lemming_y+9
sec
sbc #2
cmp lemming_y
bcs just_crosshair
cmp lemming_y,Y
bcs no_lemming_try_again
yes_over_lemming:
sty OVER_LEMMING
jmp yes_yes_lemming
no_lemming_try_again:
iny
cpy #MAX_LEMMINGS
bne see_if_over_loop
yes_yes_lemming:
lda OVER_LEMMING
bmi just_crosshair
just_select:
lda #$80
sta OVER_LEMMING
lda #<select_sprite_l
sta INL

View File

@ -215,7 +215,9 @@ return_pressed:
; next check if over lemming
return_check_lemming:
lda OVER_LEMMING
bpl not_over_lemming
bmi not_over_lemming
tay
; check if digging selected
@ -228,7 +230,7 @@ return_check_lemming:
jsr click_speaker
lda #LEMMING_DIGGING
sta lemming_status
sta lemming_status,Y
jmp done_keypress
@ -297,24 +299,56 @@ job_button:
jsr update_menu
jmp done_menu
;============================
;============================
; plus/minus button
;============================
;============================
plus_minus_buttons:
; TODO
jmp done_menu
;============================
;============================
; nuke
;============================
;============================
; TODO: offset them a bit so it's not simultaneous
; FIXME: also stop more from coming out the door
nuke_button:
lda #1
sta lemming_exploding
ldy #0
nuke_loop:
sta lemming_exploding,Y
iny
cpy #MAX_LEMMINGS
bne nuke_loop
jmp done_menu
;============================
;============================
; map grid
;============================
;============================
map_grid_button:
; TODO
jmp done_menu
;============================
;============================
; pause
;============================
;============================
; FIXME: should stop clock too
pause_button:
bit KEYRESET
jsr wait_until_keypress
done_menu:
rts

View File

@ -143,7 +143,7 @@ do_level1:
; Setup cursor
;=======================
lda #0
lda #$FF
sta OVER_LEMMING
lda #10
sta CURSOR_X

View File

@ -144,7 +144,7 @@ do_level2:
; Setup cursor
;=======================
lda #0
lda #$FF
sta OVER_LEMMING
lda #10
sta CURSOR_X

View File

@ -145,7 +145,7 @@ do_level3:
; Setup cursor
;=======================
lda #0
lda #$FF
sta OVER_LEMMING
lda #10
sta CURSOR_X

View File

@ -145,7 +145,7 @@ do_level4:
; Setup cursor
;=======================
lda #0
lda #$FF
sta OVER_LEMMING
lda #10
sta CURSOR_X

View File

@ -126,7 +126,7 @@ do_level5:
; Setup cursor
;=======================
lda #0
lda #$FF
sta OVER_LEMMING
lda #10
sta CURSOR_X

View File

@ -212,12 +212,7 @@ remove_lemming:
bcc didnt_exit
sed ; decrement BCD value
lda LEMMINGS_OUT
sec
sbc #1
sta LEMMINGS_OUT
sed
lda PERCENT_RESCUED_L
clc
adc PERCENT_ADD
@ -226,12 +221,19 @@ remove_lemming:
inc PERCENT_RESCUED_H
no_percent_oflo:
cld
no_percent_oflo:
didnt_exit:
sed ; decrement BCD value
lda LEMMINGS_OUT
sec
sbc #1
sta LEMMINGS_OUT
cld
jsr click_speaker
lda #0
@ -281,7 +283,7 @@ ground_walking:
ldy CURRENT_LEMMING
lda lemming_fall_distance,Y
cmp #16
cmp #32
bcs lemming_goes_splat
lda #0