ootw: c2: more elevator code

This commit is contained in:
Vince Weaver 2019-07-11 12:30:34 -04:00
parent 6b2ae05aaa
commit 5af4f268d0
4 changed files with 166 additions and 16 deletions

View File

@ -5,8 +5,8 @@
; A or <- : start moving left
; D or -> : start moving right
; W or up : jump
; S or down : crouch or pickup
; W or up : jump or elevator/transporter up
; S or down : crouch or pickup or elevator/transporter down
; space : action
; escape : quit
@ -205,9 +205,21 @@ check_up:
bne check_down
up:
;========================
; Jump -- Up Pressed
; UP -- Jump
;========================
lda ON_ELEVATOR
beq up_not_elevator
up_on_elevator:
lda #P_ELEVATING_UP
sta PHYSICIST_STATE
lda #0
sta GAIT
jmp done_keypress
up_not_elevator:
lda #P_JUMPING
sta PHYSICIST_STATE
lda #0
@ -222,9 +234,21 @@ check_down:
bne check_space
;======================
; Crouch
; DOWN -- Crouch
;======================
down:
lda ON_ELEVATOR
beq down_not_elevator
down_on_elevator:
lda #P_ELEVATING_DOWN
sta PHYSICIST_STATE
lda #0
sta GAIT
jmp done_keypress
down_not_elevator:
lda #P_CROUCHING
sta PHYSICIST_STATE
lda #0

View File

@ -45,6 +45,15 @@ elevator4:
lda #3
sta eel_smc+1
; set up exit
lda #7
sta going_up_smc+1
; set down exit
lda #5
sta going_down_smc+1
jmp elevator_setup_done
elevator5:
@ -53,10 +62,60 @@ elevator5:
lda #(-4+128)
sta LEFT_LIMIT
lda #(21+128)
sta RIGHT_LIMIT
; set left exit
lda #9
sta eel_smc+1
; set up exit
lda #4
sta going_up_smc+1
; set down exit
lda #6
sta going_down_smc+1
jmp elevator_setup_done
elevator6:
cmp #6
bne elevator7
lda #(-4+128)
sta LEFT_LIMIT
lda #(21+128)
sta RIGHT_LIMIT
; set left exit
lda #8
sta eel_smc+1
; set up exit
lda #5
sta going_up_smc+1
; no down exit
jmp elevator_setup_done
elevator7:
lda #(10+128)
sta LEFT_LIMIT
lda #(30+128)
sta RIGHT_LIMIT
elevator6:
; set up exit
; no up exit
; set down exit
lda #4
sta going_down_smc+1
; fallthrough
elevator_setup_done:
@ -153,7 +212,66 @@ draw_elevator:
elevator_frame_no_oflo:
; check if done this level
;==========================
; handle elevator
;==========================
lda PHYSICIST_X
cmp #17
bcc not_on_elevator ; blt
lda #1
bne update_elevator ; balways
not_on_elevator:
lda #0
update_elevator:
sta ON_ELEVATOR
;==========================
; handle elevating
;==========================
lda PHYSICIST_STATE
elevator_check_up:
cmp #P_ELEVATING_UP
bne elevator_check_down
going_up:
going_up_smc:
lda #7
sta WHICH_JAIL
lda #0
sta PHYSICIST_STATE
jmp done_elevator
elevator_check_down:
cmp #P_ELEVATING_DOWN
bne going_nowhere
going_down:
going_down_smc:
lda #4
sta WHICH_JAIL
lda #0
sta PHYSICIST_STATE
jmp done_elevator
going_nowhere:
;==========================
; check if done this room
;==========================
lda GAME_OVER
beq still_in_elevator

View File

@ -70,6 +70,10 @@ pstate_table_lo:
.byte <physicist_jumping ; 05
.byte <physicist_collapsing ; 06
.byte <physicist_falling ; 07
.byte <physicist_standing ; 08 swinging
.byte <physicist_standing ; 09 elevator up
.byte <physicist_standing ; 0A elevator down
pstate_table_hi:
.byte >physicist_standing
.byte >physicist_walking
@ -79,6 +83,9 @@ pstate_table_hi:
.byte >physicist_jumping
.byte >physicist_collapsing
.byte >physicist_falling
.byte >physicist_standing ; 08 swinging
.byte >physicist_standing ; 09 elevator up
.byte >physicist_standing ; 0A elevator down
; Urgh, make sure this doesn't end up at $FF or you hit the
; NMOS 6502 bug

View File

@ -147,16 +147,17 @@ BOULDER_X = $E8 ; C1
BOULDER_Y = $E9 ; C1
PHYSICIST_STATE = $EA
P_STANDING = $00
P_WALKING = $01
P_RUNNING = $02
P_CROUCHING = $03
P_KICKING = $04
P_JUMPING = $05 ; no keypress
P_COLLAPSING = $06 ; no keypress
P_FALLING = $07 ; no keypress
P_SWINGING = $08 ; no keypress
P_STANDING = $00
P_WALKING = $01
P_RUNNING = $02
P_CROUCHING = $03
P_KICKING = $04
P_JUMPING = $05 ; no keypress
P_COLLAPSING = $06 ; no keypress
P_FALLING = $07 ; no keypress
P_SWINGING = $08 ; no keypress
P_ELEVATING_UP = $09
P_ELEVATING_DOWN = $0A
BEFORE_SWING = $EB
CUTFRAME = $EC