mist: channel: adjust elevator1 and steps based on status

This commit is contained in:
Vince Weaver 2020-06-25 17:17:46 -04:00
parent 5bea6f7741
commit e42fd090ab
10 changed files with 176 additions and 16 deletions

View File

@ -24,6 +24,11 @@ elev1_handle:
lda #$ff
sta LEVEL_OVER
lda CHANNEL_SWITCHES ; make elevator down
and #~CHANNEL_ELEVATOR1_UP
sta CHANNEL_SWITCHES
rts

View File

@ -1,6 +1,8 @@
;===========================
;===========================
; pick up myst linking book
;===========================
;===========================
book_room_grab_book:
lda #CHANNEL_BOOK_CLOSED
@ -9,8 +11,11 @@ book_room_grab_book:
rts
;=============================
;=============================
; book elevator handle pulled
;=============================
;=============================
; FIXME: check for water power
; FIXME: animate
@ -67,8 +72,12 @@ book_elevator_handle_done:
rts
;=============================
;=============================
;=============================
; elevator1 handle pulled
;=============================
;=============================
; FIXME: check for water power
; FIXME: animate
@ -90,14 +99,49 @@ elev1_handle:
lda #LOAD_ARBOR
sta WHICH_LOAD
lda CHANNEL_SWITCHES ; make elevator up
ora #CHANNEL_ELEVATOR1_UP
sta CHANNEL_SWITCHES
lda #$ff
sta LEVEL_OVER
rts
;=========================
; close book elevator door
;=============================
;=============================
;=============================
; climb steps
;=============================
;=============================
climb_steps:
; enter steps, which is in ARBOR level
lda #ARBOR_STEPS_BOTTOM
sta LOCATION
lda #DIRECTION_E
sta DIRECTION
lda #LOAD_ARBOR
sta WHICH_LOAD
lda #$ff
sta LEVEL_OVER
rts
;=========================
;=========================
; close book elevator door
;=========================
;=========================
book_elevator_close_door:
lda #CHANNEL_BOOK_E_IN_CLOSED
@ -114,8 +158,11 @@ elev1_close_door:
;=======================
;=======================
; raise bridge
;=======================
;=======================
; if CHANNEL_SWITCHES CHANNEL_SW_WINDMILL and CHANNEL_SW_FAUCET
; TODO: also if various valves in correct pattern
@ -150,8 +197,11 @@ no_raise_bridge:
;=======================
;=======================
; extend_pipe
;=======================
;=======================
; verified: can open/shut even if water is flowing
@ -174,9 +224,11 @@ no_extend_pipe:
;======================================
; adjust after changes
;======================================
;======================================
;======================================
; adjust after changes
;======================================
;======================================
; should call this when entering level
adjust_after_changes:
@ -247,7 +299,7 @@ pipe_extended:
lda #>pipe_bridge2_up_w_lzsa
sta location10+1,Y ; CHANNEL_PIPE_BRIDGE2
jmp done_adjust_changes
jmp hide_elevator1
pipe_stowed:
@ -268,6 +320,102 @@ pipe_stowed:
lda #>pipe_bridge2_w_lzsa
sta location10+1,Y ; CHANNEL_PIPE_BRIDGE2
hide_elevator1:
lda CHANNEL_SWITCHES
and #CHANNEL_ELEVATOR1_UP
beq elevator1_down
elevator1_up:
; change bgs so elevator up, can't board
ldy #LOCATION_WEST_BG
lda #<before_elev1_gone_w_lzsa
sta location8,Y ; CHANNEL_BEFORE_ELEV1
lda #>before_elev1_gone_w_lzsa
sta location8+1,Y ; CHANNEL_BEFORE_ELEV1
lda #<fork_gone_w_lzsa
sta location7,Y ; CHANNEL_FORK
lda #>fork_gone_w_lzsa
sta location7+1,Y ; CHANNEL_FORK
; make so can't board
ldy #LOCATION_WEST_EXIT
lda #$ff
sta location8,Y ; CHANNEL_BEFORE_ELEV1
jmp open_gate
elevator1_down:
; change bgs so elevator down
ldy #LOCATION_WEST_BG
lda #<before_elev1_w_lzsa
sta location8,Y ; CHANNEL_BEFORE_ELEV1
lda #>before_elev1_w_lzsa
sta location8+1,Y ; CHANNEL_BEFORE_ELEV1
lda #<fork_w_lzsa
sta location7,Y ; CHANNEL_FORK
lda #>fork_w_lzsa
sta location7+1,Y ; CHANNEL_FORK
; make so can board
ldy #LOCATION_WEST_EXIT
lda #CHANNEL_ELEV1_OPEN
sta location8,Y ; CHANNEL_BEFORE_ELEV1
open_gate:
lda CHANNEL_SWITCHES
and #CHANNEL_SW_GATE_BOTTOM
beq gate_closed
gate_open:
; change bgs so gate open
ldy #LOCATION_WEST_BG
lda #<steps_path_open_w_lzsa
sta location12,Y ; CHANNEL_STEPS_PATH
lda #>steps_path_open_w_lzsa
sta location12+1,Y ; CHANNEL_STEPS_PATH
lda #<steps_door_open_w_lzsa
sta location13,Y ; CHANNEL_STEPS_DOOR
lda #>steps_door_open_w_lzsa
sta location13+1,Y ; CHANNEL_STEPS_DOOR
; make so can climb steps
ldy #LOCATION_SPECIAL_EXIT
lda #DIRECTION_W
sta location13,Y ; CHANNEL_STEPS_DOOR
jmp done_adjust_changes
gate_closed:
; change bgs so gate closed
ldy #LOCATION_WEST_BG
lda #<steps_path_w_lzsa
sta location12,Y ; CHANNEL_STEPS_PATH
lda #>steps_path_w_lzsa
sta location12+1,Y ; CHANNEL_STEPS_PATH
lda #<steps_door_w_lzsa
sta location13,Y ; CHANNEL_STEPS_DOOR
lda #>steps_door_w_lzsa
sta location13+1,Y ; CHANNEL_STEPS_DOOR
; make so can't climb steps
ldy #LOCATION_SPECIAL_EXIT
lda #$ff
sta location13,Y ; CHANNEL_STEPS_DOOR
done_adjust_changes:
rts

View File

@ -387,11 +387,8 @@ ARBOR_INSIDE_ELEV2_OPEN = 24
ARBOR_INSIDE_ELEV2_CLOSED= 25
ARBOR_IN_ELEV2_TOP_CLOSED= 26
ARBOR_IN_ELEV2_TOP_OPEN= 27
ARBOR_STEPS1 = 28
ARBOR_STEPS_TOP = 28
ARBOR_STEPS2 = 29
ARBOR_STEPS3 = 30
ARBOR_STEPS4 = 31
ARBOR_STEPS5 = 32
ARBOR_STEPS_BOTTOM = 32

View File

@ -16,13 +16,14 @@ channel_graphics.inc: \
path4_e.lzsa path4_w.lzsa path4_s.lzsa \
path5_e.lzsa path5_s.lzsa path5_n.lzsa \
path6_s.lzsa path6_w.lzsa path6_n.lzsa \
fork_n.lzsa fork_s.lzsa fork_w.lzsa \
fork_n.lzsa fork_s.lzsa fork_w.lzsa fork_gone_w.lzsa \
before_elev1_e.lzsa before_elev1_w.lzsa before_elev1_open_w.lzsa \
before_elev1_gone_w.lzsa \
pipe_bridge2_up_w.lzsa pipe_bridge2_w.lzsa pipe_bridge2_e.lzsa \
elevator1_open.lzsa elevator1_closed.lzsa \
steps_fork_n.lzsa steps_fork_s.lzsa steps_fork_w.lzsa \
steps_path_e.lzsa steps_path_w.lzsa \
steps_door_e.lzsa steps_door_w.lzsa \
steps_path_e.lzsa steps_path_w.lzsa steps_path_open_w.lzsa \
steps_door_e.lzsa steps_door_w.lzsa steps_door_open_w.lzsa \
wind_path_n.lzsa wind_path_s.lzsa \
wind_path2_n.lzsa wind_path2_s.lzsa \
island1_n.lzsa island1_s.lzsa \
@ -65,8 +66,10 @@ channel_graphics.inc: \
echo "fork_n_lzsa: .incbin \"fork_n.lzsa\"" >> channel_graphics.inc
echo "fork_s_lzsa: .incbin \"fork_s.lzsa\"" >> channel_graphics.inc
echo "fork_w_lzsa: .incbin \"fork_w.lzsa\"" >> channel_graphics.inc
echo "fork_gone_w_lzsa: .incbin \"fork_gone_w.lzsa\"" >> channel_graphics.inc
echo "before_elev1_e_lzsa: .incbin \"before_elev1_e.lzsa\"" >> channel_graphics.inc
echo "before_elev1_w_lzsa: .incbin \"before_elev1_w.lzsa\"" >> channel_graphics.inc
echo "before_elev1_gone_w_lzsa: .incbin \"before_elev1_gone_w.lzsa\"" >> channel_graphics.inc
echo "before_elev1_open_w_lzsa: .incbin \"before_elev1_open_w.lzsa\"" >> channel_graphics.inc
echo "pipe_bridge2_e_lzsa: .incbin \"pipe_bridge2_e.lzsa\"" >> channel_graphics.inc
echo "pipe_bridge2_w_lzsa: .incbin \"pipe_bridge2_w.lzsa\"" >> channel_graphics.inc
@ -78,8 +81,10 @@ channel_graphics.inc: \
echo "steps_fork_w_lzsa: .incbin \"steps_fork_w.lzsa\"" >> channel_graphics.inc
echo "steps_path_e_lzsa: .incbin \"steps_path_e.lzsa\"" >> channel_graphics.inc
echo "steps_path_w_lzsa: .incbin \"steps_path_w.lzsa\"" >> channel_graphics.inc
echo "steps_path_open_w_lzsa: .incbin \"steps_path_open_w.lzsa\"" >> channel_graphics.inc
echo "steps_door_e_lzsa: .incbin \"steps_door_e.lzsa\"" >> channel_graphics.inc
echo "steps_door_w_lzsa: .incbin \"steps_door_w.lzsa\"" >> channel_graphics.inc
echo "steps_door_open_w_lzsa: .incbin \"steps_door_open_w.lzsa\"" >> channel_graphics.inc
echo "wind_path_n_lzsa: .incbin \"wind_path_n.lzsa\"" >> channel_graphics.inc
echo "wind_path_s_lzsa: .incbin \"wind_path_s.lzsa\"" >> channel_graphics.inc
echo "wind_path2_n_lzsa: .incbin \"wind_path2_n.lzsa\"" >> channel_graphics.inc

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@ -257,7 +257,10 @@ location13:
.word steps_door_e_lzsa ; east bg
.word steps_door_w_lzsa ; west bg
.byte BG_EAST|BG_WEST
.byte $ff
.byte DIRECTION_W ; special exit
.byte 13,27 ; special x
.byte 4,42 ; special y
.word climb_steps-1 ; special function
; CHANNEL_WIND_PATH -- path to windmill
location14:

View File

@ -140,6 +140,8 @@ CHANNEL_SWITCHES= $B5
CHANNEL_PIPE_EXTENDED = $02
CHANNEL_BOOK_ELEVATOR_UP= $04
CHANNEL_SW_GATE_TOP = $08
CHANNEL_ELEVATOR1_UP = $10
CHANNEL_SW_GATE_BOTTOM = $20
CHANNEL_SW_WINDMILL = $40
CHANNEL_SW_FAUCET = $80
CHANNEL_VALVES = $B6