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
jsr cabin_update_state
jsr change_location
lda #1

View File

@ -5,7 +5,8 @@
; the match will flicker and burn out if you go outside
; 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 counter-clockwise fire turns off
; turn twice CW -> ?
@ -32,6 +33,10 @@
; button does nothing in basement
; dial in basement does same as one upstairs
; \ \ \ \ \ : / / / / /
; P S I
; \
tree_base_backgrounds:
.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 ; 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
;===================================
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

View File

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

View File

@ -78,3 +78,5 @@
.byte $00 ; SAFE_TENS = $C4
.byte $00 ; SAFE_ONES = $C5
.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 location4, location5, location6, location7
.word location8, location9, location10,location11
.word location12,location13
.word location12,location13,location14,location15
; CABIN_OUTSIDE -- outside in clearing
location0:
@ -172,7 +172,7 @@ location8:
.byte $ff ; east exit
.byte $ff ; west exit
.byte $ff ; north exit_dir
.byte DIRECTION_S ; south exit_dir
.byte DIRECTION_N ; south exit_dir
.byte $ff ; east exit_dir
.byte $ff ; west exit_dir
.word $0000 ; north bg
@ -272,3 +272,39 @@ location13:
.byte 14,34 ; special x
.byte 0,44 ; special y
.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_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_GRID1 = $8C
FIREPLACE_GRID2 = $8D
@ -202,13 +204,14 @@ SAFE_ONES = $C5 ; safe combination, ones
TREE_LEVEL = $C6 ; how high is the tree hole
HOLDING_ITEM = $C7
HOLDING_KEY = $04
HOLDING_LIT_MATCH = $02
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