mist: cabin: now properly hooks up tree

temporarily you can't get to Channelwood
This commit is contained in:
Vince Weaver 2020-07-15 19:12:23 -04:00
parent f4638d82da
commit 0e00cf94ca
7 changed files with 123 additions and 9 deletions

View File

@ -42,6 +42,8 @@ cabin_start:
; set up initial location ; set up initial location
jsr cabin_update_state
jsr change_location jsr change_location
lda #1 lda #1

View File

@ -5,7 +5,8 @@
; the match will flicker and burn out if you go outside ; the match will flicker and burn out if you go outside
; light the pilot, it will turn red ; light the pilot, it will turn red
; PSI starts at zero
; boiler PSI starts at zero
; turn once clockwise, fire starts, nothing else? ; turn once clockwise, fire starts, nothing else?
; turn once counter-clockwise fire turns off ; turn once counter-clockwise fire turns off
; turn twice CW -> ? ; turn twice CW -> ?
@ -32,6 +33,10 @@
; button does nothing in basement ; button does nothing in basement
; dial in basement does same as one upstairs ; dial in basement does same as one upstairs
; \ \ \ \ \ : / / / / /
; P S I
; \
tree_base_backgrounds: tree_base_backgrounds:
.word tree_base_n_lzsa ; 0 basement .word tree_base_n_lzsa ; 0 basement
@ -60,17 +65,81 @@ tree_elevator_backgrounds:
.word tree_base_n_lzsa ; 5 L10 .word tree_base_n_lzsa ; 5 L10
.word tree_base_n_lzsa ; 6 TOP .word tree_base_n_lzsa ; 6 TOP
tree_elevator_exits:
.byte CABIN_TREE_BASEMENT ; 0 basement
.byte $ff ; 1 underground
.byte CABIN_BIG_TREE ; 2 ground
.byte $ff ; 3 L6
.byte $ff ; 4 L8
.byte $ff ; 5 L10
.byte CABIN_TREE_LOOK_DOWN ; 6 TOP
tree_entrance:
.byte CABIN_TREE_LOOK_UP ; 0 basement
.byte CABIN_TREE_LOOK_UP ; 1 underground
.byte CABIN_TREE_ELEVATOR ; 2 ground
.byte CABIN_TREE_LOOK_UP ; 3 L6
.byte CABIN_TREE_LOOK_UP ; 4 L8
.byte CABIN_TREE_LOOK_UP ; 5 L10
.byte CABIN_TREE_LOOK_UP ; 6 TOP
tree_entrance_dir:
.byte DIRECTION_N ; 0 basement
.byte DIRECTION_N ; 1 underground
.byte DIRECTION_S ; 2 ground
.byte DIRECTION_N ; 3 L6
.byte DIRECTION_N ; 4 L8
.byte DIRECTION_N ; 5 L10
.byte DIRECTION_N ; 6 TOP
; \ \ \ \ \ : / / / / /
; P S I
; \
;=================================== ;===================================
; update backgrounds based on state ; update backgrounds based on state
;=================================== ;===================================
cabin_update_state: cabin_update_state:
; update tree base background
ldy #LOCATION_NORTH_BG
lda TREE_LEVEL
asl
tax
lda tree_base_backgrounds,X
sta location7,Y ; CABIN_BIG_TREE
lda tree_base_backgrounds+1,X
sta location7+1,Y ; CABIN_BIG_TREE
; update tree up background
lda tree_base_up_backgrounds,X
sta location14,Y ; CABIN_TREE_LOOK_UP
lda tree_base_up_backgrounds+1,X
sta location14+1,Y ; CABIN_TREE_LOOK_UP
; update tree elevator background
ldy #LOCATION_SOUTH_BG
lda tree_elevator_backgrounds,X
sta location8,Y ; CABIN_TREE_ELEVATOR
lda tree_elevator_backgrounds+1,X
sta location8+1,Y ; CABIN_TREE_ELEVATOR
; update if you can get into tree
lda TREE_LEVEL
tax
ldy #LOCATION_NORTH_EXIT
lda tree_entrance,X
sta location7,Y ; CABIN_BIG_TREE
ldy #LOCATION_NORTH_EXIT_DIR
lda tree_entrance_dir,X
sta location7,Y ; CABIN_BIG_TREE
; update elevator exit
ldy #LOCATION_SOUTH_EXIT
lda tree_elevator_exits,X
sta location8,Y ; CABIN_TREE_ELEVATOR
rts rts

View File

@ -373,6 +373,8 @@ CABIN_TREE_BOOK = 10
CABIN_TREE_BOOK_CLOSED = 11 CABIN_TREE_BOOK_CLOSED = 11
CABIN_TREE_BOOK_OPEN = 12 CABIN_TREE_BOOK_OPEN = 12
CABIN_OPEN_SAFE = 13 CABIN_OPEN_SAFE = 13
CABIN_TREE_LOOK_UP = 14
CABIN_TREE_LOOK_DOWN = 15
; Arbor, up in the trees ; Arbor, up in the trees
ARBOR_INSIDE_ELEV1 = 0 ARBOR_INSIDE_ELEV1 = 0

View File

@ -78,3 +78,5 @@
.byte $00 ; SAFE_TENS = $C4 .byte $00 ; SAFE_TENS = $C4
.byte $00 ; SAFE_ONES = $C5 .byte $00 ; SAFE_ONES = $C5
.byte $00 ; TREE_LEVEL = $C6 .byte $00 ; TREE_LEVEL = $C6
.byte $00 ; HOLDING_ITEM = $C7
.byte $00 ; BOILER_VALVE = $C8

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -6,7 +6,7 @@ locations:
.word location0, location1, location2, location3 .word location0, location1, location2, location3
.word location4, location5, location6, location7 .word location4, location5, location6, location7
.word location8, location9, location10,location11 .word location8, location9, location10,location11
.word location12,location13 .word location12,location13,location14,location15
; CABIN_OUTSIDE -- outside in clearing ; CABIN_OUTSIDE -- outside in clearing
location0: location0:
@ -172,7 +172,7 @@ location8:
.byte $ff ; east exit .byte $ff ; east exit
.byte $ff ; west exit .byte $ff ; west exit
.byte $ff ; north exit_dir .byte $ff ; north exit_dir
.byte DIRECTION_S ; south exit_dir .byte DIRECTION_N ; south exit_dir
.byte $ff ; east exit_dir .byte $ff ; east exit_dir
.byte $ff ; west exit_dir .byte $ff ; west exit_dir
.word $0000 ; north bg .word $0000 ; north bg
@ -272,3 +272,39 @@ location13:
.byte 14,34 ; special x .byte 14,34 ; special x
.byte 0,44 ; special y .byte 0,44 ; special y
.word touch_open_safe-1 .word touch_open_safe-1
; CABIN_TREE_LOOK_UP -- looking up from base of tree
location14:
.byte CABIN_BIG_TREE ; north exit
.byte $ff ; south exit
.byte $ff ; east exit
.byte $ff ; west exit
.byte DIRECTION_N ; north exit_dir
.byte $ff ; south exit_dir
.byte $ff ; east exit_dir
.byte $ff ; west exit_dir
.word tree_base_up_lzsa ; north bg
.word $0000 ; south bg
.word $0000 ; east bg
.word $0000 ; west bg
.byte BG_NORTH
.byte $ff ; special exit
; CABIN_TREE_LOOK_DOWN -- looking down from top of tree
location15:
.byte $ff ; north exit
.byte CABIN_TREE_ELEVATOR ; south exit
.byte $ff ; east exit
.byte $ff ; west exit
.byte $ff ; north exit_dir
.byte DIRECTION_S ; south exit_dir
.byte $ff ; east exit_dir
.byte $ff ; west exit_dir
.word $0000 ; north bg
.word tree_elevator_top_down_lzsa ; south bg
.word $0000 ; east bg
.word $0000 ; west bg
.byte BG_SOUTH
.byte $ff ; special exit

View File

@ -82,7 +82,9 @@ MARKER_SWITCHES = $87 ; state of the marker switches
CLOCK_HOUR = $88 ; hour on the mist clock CLOCK_HOUR = $88 ; hour on the mist clock
CLOCK_MINUTE = $89 ; minute on the mist clock CLOCK_MINUTE = $89 ; minute on the mist clock
TREE_FURNACE_ON = $8A ; furnace in the cabin on
BOILER_LEVEL = $8A ; furnace in the cabin level
FIREPLACE_GRID0 = $8B ; fireplace grid puzzle state FIREPLACE_GRID0 = $8B ; fireplace grid puzzle state
FIREPLACE_GRID1 = $8C FIREPLACE_GRID1 = $8C
FIREPLACE_GRID2 = $8D FIREPLACE_GRID2 = $8D
@ -202,13 +204,14 @@ SAFE_ONES = $C5 ; safe combination, ones
TREE_LEVEL = $C6 ; how high is the tree hole TREE_LEVEL = $C6 ; how high is the tree hole
HOLDING_ITEM = $C7 HOLDING_ITEM = $C7
HOLDING_KEY = $04 HOLDING_KEY = $04
HOLDING_LIT_MATCH = $02 HOLDING_LIT_MATCH = $02
HOLDING_MATCH = $01 HOLDING_MATCH = $01
END_OF_SAVE = $C8 BOILER_VALVE = $C8 ; how many turns of the boiler valve
END_OF_SAVE = $C9
; done game puzzle state ; done game puzzle state