lemm: jump table for assigning jobs

This commit is contained in:
Vince Weaver 2022-03-27 14:21:19 -04:00
parent 37b11038c9
commit 6e1acc7e87

View File

@ -224,46 +224,31 @@ return_check_lemming:
jsr click_speaker jsr click_speaker
lda BUTTON_LOCATION lda BUTTON_LOCATION
cmp #1 tax
beq make_climber
cmp #2
beq make_floater
cmp #3
beq make_exploding
cmp #4
beq make_stopper
cmp #5
beq make_builder
cmp #6
beq make_basher
cmp #7
beq make_miner
cmp #8
beq make_digger
bne done_keypress
make_climber: lda button_jump_h,X
jsr make_climber_routine pha
jmp done_keypress lda button_jump_l,X
make_floater: pha
jsr make_floater_routine rts ; jump to it
jmp done_keypress
make_exploding:
jsr make_exploding_routine
jmp done_keypress
make_stopper:
jsr make_stopper_routine
jmp done_keypress
make_builder:
jmp done_keypress
make_basher:
jmp done_keypress
make_miner:
jmp done_keypress
make_digger:
jsr make_digger_routine
jmp done_keypress
; cmp #1
; beq make_climber
; cmp #2
; beq make_floater
; cmp #3
; beq make_exploding
; cmp #4
; beq make_stopper
; cmp #5
; beq make_builder
; cmp #6
; beq make_basher
; cmp #7
; beq make_miner
; cmp #8
; beq make_digger
; bne done_keypress
not_over_lemming: not_over_lemming:
@ -278,56 +263,63 @@ no_keypress:
;======================== button_jump_l:
; make digger .byte $0
;======================== .byte <(make_climber-1)
make_digger_routine: .byte <(make_floater-1)
.byte <(make_exploding-1)
.byte <(make_stopper-1)
.byte <(make_builder-1)
.byte <(make_basher-1)
.byte <(make_miner-1)
.byte <(make_digger-1)
; only do it if walking button_jump_h:
lda lemming_status,Y .byte $0
cmp #LEMMING_WALKING .byte >(make_climber-1)
bne done_make_digger .byte >(make_floater-1)
.byte >(make_exploding-1)
.byte >(make_stopper-1)
.byte >(make_builder-1)
.byte >(make_basher-1)
.byte >(make_miner-1)
.byte >(make_digger-1)
lda #LEMMING_DIGGING
sta lemming_status,Y
; FIXME: decrement digger_count
done_make_digger:
rts
;========================
; make exploding
;========================
make_exploding_routine:
lda #1
sta lemming_exploding,Y
rts
;======================== ;========================
; make climber ; make climber
;======================== ;========================
make_climber_routine: make_climber:
lda #LEMMING_CLIMBER lda #LEMMING_CLIMBER
ora lemming_attribute,Y ora lemming_attribute,Y
sta lemming_attribute,Y sta lemming_attribute,Y
rts jmp done_keypress
;======================== ;========================
; make floater ; make floater
;======================== ;========================
make_floater_routine: make_floater:
lda #LEMMING_FLOATER lda #LEMMING_FLOATER
ora lemming_attribute,Y ora lemming_attribute,Y
sta lemming_attribute,Y sta lemming_attribute,Y
rts jmp done_keypress
;========================
; make exploding
;========================
make_exploding:
lda #1
sta lemming_exploding,Y
jmp done_keypress
;======================== ;========================
; make stopper ; make stopper
;======================== ;========================
make_stopper_routine: make_stopper:
lda lemming_status,Y lda lemming_status,Y
cmp #LEMMING_FLOATER ; can't stop if floating cmp #LEMMING_FLOATER ; can't stop if floating
beq cant_stop beq cant_stop
@ -361,7 +353,84 @@ make_stopper_routine:
jsr hgr_vlin_page_toggle jsr hgr_vlin_page_toggle
cant_stop: cant_stop:
rts jmp done_keypress
;========================
; make builder
;========================
make_builder:
; only do it if walking
lda lemming_status,Y
cmp #LEMMING_WALKING
bne done_make_builder
lda #LEMMING_BUILDING
sta lemming_status,Y
; FIXME: decrement count
done_make_builder:
jmp done_keypress
;========================
; make basher
;========================
make_basher:
; only do it if walking
lda lemming_status,Y
cmp #LEMMING_WALKING
bne done_make_basher
lda #LEMMING_BASHING
sta lemming_status,Y
; FIXME: decrement count
done_make_basher:
jmp done_keypress
;========================
; make miner
;========================
make_miner:
; only do it if walking
lda lemming_status,Y
cmp #LEMMING_WALKING
bne done_make_miner
lda #LEMMING_MINING
sta lemming_status,Y
; FIXME: decrement count
done_make_miner:
jmp done_keypress
;========================
; make digger
;========================
make_digger:
; only do it if walking
lda lemming_status,Y
cmp #LEMMING_WALKING
bne done_make_digger
lda #LEMMING_DIGGING
sta lemming_status,Y
; FIXME: decrement digger_count
done_make_digger:
jmp done_keypress