mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-10-10 08:23:49 +00:00
ootw: c2: more elevator code
This commit is contained in:
parent
6b2ae05aaa
commit
5af4f268d0
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
21
ootw/zp.inc
21
ootw/zp.inc
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user