mist: stoney: hook up a few switches

This commit is contained in:
Vince Weaver 2020-04-21 19:08:31 -04:00
parent 6bc8eec4d4
commit 9313d72c31
9 changed files with 234 additions and 6 deletions

View File

@ -22,15 +22,16 @@ mist.dsk: HELLO LOADER MIST_TITLE MIST OCTAGON VIEWER \
# $(DOS33) -y mist.dsk BSAVE -a 0x1400 MECHE
# $(DOS33) -y mist.dsk BSAVE -a 0x1400 SELENA
# $(DOS33) -y mist.dsk BSAVE -a 0x1400 CHANNEL
$(DOS33) -y mist.dsk BSAVE -a 0x1400 VIEWER
# $(DOS33) -y mist.dsk BSAVE -a 0x1400 VIEWER
$(DOS33) -y mist.dsk BSAVE -a 0x1400 STONEY
$(DOS33) -y mist.dsk BSAVE -a 0x9000 ./audio/link_noise.btc LINK_NOISE.BTC
mist_side2.dsk: MECHE SELENA CHANNEL
mist_side2.dsk: MECHE SELENA CHANNEL VIEWER
cp empty.dsk mist_side2.dsk
$(DOS33) -y mist_side2.dsk BSAVE -a 0x1400 MECHE
$(DOS33) -y mist_side2.dsk BSAVE -a 0x1400 SELENA
$(DOS33) -y mist_side2.dsk BSAVE -a 0x1400 CHANNEL
$(DOS33) -y mist_side2.dsk BSAVE -a 0x1400 VIEWER
$(DOS33) -y mist_side2.dsk BSAVE -a 0x9000 ./audio/link_noise.btc LINK_NOISE.BTC
###

View File

@ -55,8 +55,8 @@ Stoneship age:
+ Implement raising/lowering water
+ Implement spinning generator/battery level
+ Implement telescope
+ Enable linking back to Myst
+ Implement book pages
+ Hook up the blue room
+ Animate mist book rising from table
Ending:
+ Turning

Binary file not shown.

Before

Width:  |  Height:  |  Size: 993 B

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 962 B

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -55,6 +55,11 @@ init_state:
sta SHIP_RAISED
sta PUMP_STATE
sta BATTERY_CHARGE
sta COMPASS_ANGLE
sta CRANK_ANGLE
lda #$ff ; for debugging
sta MARKER_SWITCHES

View File

@ -195,7 +195,11 @@ location9:
.word umbrella_e_lzsa ; east bg
.word umbrella_w_lzsa ; west bg
.byte BG_EAST|BG_WEST
.byte $ff
.byte DIRECTION_W ; special exit
.byte 13,26 ; special x
.byte 18,24 ; special y
.word umbrella_buttons-1
; STONEY_LIGHTHOUSE_PATH -- lighthouse path
location10:
@ -263,7 +267,11 @@ location13:
.word lighthouse_upstairs_e_lzsa ; east bg
.word lighthouse_upstairs_w_lzsa ; west bg
.byte BG_EAST|BG_WEST
.byte $ff
.byte DIRECTION_W ; special exit
.byte 15,24 ; special x
.byte 27,42 ; special y
.word handle_crank-1
; STONEY_LIGHTHOUSE_BATTERY -- lighthouse battery
location14:

View File

@ -23,6 +23,9 @@ stoney_start:
sta DRAW_PAGE
sta LEVEL_OVER
; resets if you leave
sta BATTERY_CHARGE
; init cursor
lda #20
@ -71,6 +74,13 @@ game_loop:
beq fg_draw_red_page
cmp #STONEY_BLUE_ROOM_BED
beq fg_draw_blue_page
cmp #STONEY_UMBRELLA
beq draw_umbrella_light
cmp #STONEY_LIGHTHOUSE_UPSTAIRS
beq draw_crank_handle
cmp #STONEY_LIGHTHOUSE_BATTERY
beq draw_battery_level
jmp nothing_special
@ -146,6 +156,19 @@ fg_draw_blue_page:
jsr draw_blue_page
jmp nothing_special
draw_umbrella_light:
jsr do_draw_umbrella_light
jmp nothing_special
draw_crank_handle:
jsr do_draw_crank_handle
jmp nothing_special
draw_battery_level:
jsr do_draw_battery_level
jmp nothing_special
nothing_special:
;====================================
@ -255,6 +278,190 @@ no_draw_page:
rts
;======================
; handle umbrella pump buttons
umbrella_buttons:
lda CURSOR_X
cmp #15
bcc left_button_pressed
cmp #19
bcc center_button_pressed
right_button_pressed:
; drain lighthouse
lda #2
bne done_umbrella
left_button_pressed:
; drain mist tunnel
lda #0
beq done_umbrella
center_button_pressed:
; drain room tunnels
lda #1
done_umbrella:
sta PUMP_STATE
rts
;========================
; handle generator crank
handle_crank:
inc CRANK_ANGLE
lda CRANK_ANGLE
and #$3
sta CRANK_ANGLE
lda BATTERY_CHARGE
cmp #7
beq skip_charge
inc BATTERY_CHARGE
skip_charge:
rts
do_draw_umbrella_light:
lda DIRECTION
cmp #DIRECTION_W
bne done_draw_umbrella
lda PUMP_STATE
asl
asl ; *4
tay
lda #$99 ; orange
sta $528+15,Y ; page 0
sta $928+15,Y ; page 1
; 15,20
; 19,20
; 23,20
done_draw_umbrella:
rts
do_draw_crank_handle:
lda DIRECTION
cmp #DIRECTION_W
bne done_draw_it
lda CRANK_ANGLE
asl
tay
lda crank_sprites,Y
sta INL
lda crank_sprites+1,Y
sta INH
lda #17
sta XPOS
lda #32
bne draw_it
do_draw_battery_level:
lda BATTERY_CHARGE
and #7
asl
tay
lda battery_sprites,Y
sta INL
lda battery_sprites+1,Y
sta INH
lda #16
sta XPOS
lda #22
; bne draw_it
draw_it:
sta YPOS
jsr put_sprite_crop
done_draw_it:
rts
crank_sprites:
.word crank_sprite0,crank_sprite1,crank_sprite2,crank_sprite3
battery_sprites:
.word battery_sprite0,battery_sprite1,battery_sprite2,battery_sprite3
.word battery_sprite4,battery_sprite5,battery_sprite6,battery_sprite7
crank_sprite0:
.byte 5,5
.byte $AA,$AA,$AA,$AA,$AA
.byte $AA,$AA,$AA,$AA,$AA
.byte $AA,$AA,$dd,$AA,$AA
.byte $AA,$AA,$dd,$AA,$AA
.byte $AA,$11,$AA,$AA,$AA
crank_sprite1:
.byte 5,5
.byte $1A,$AA,$AA,$AA,$AA
.byte $A1,$dA,$dA,$AA,$AA
.byte $AA,$AA,$ad,$AA,$AA
.byte $AA,$AA,$AA,$AA,$AA
.byte $AA,$AA,$AA,$AA,$AA
crank_sprite2:
.byte 5,5
.byte $AA,$AA,$AA,$dA,$11
.byte $AA,$AA,$dA,$AA,$AA
.byte $AA,$AA,$Ad,$AA,$AA
.byte $AA,$AA,$AA,$AA,$AA
.byte $AA,$AA,$AA,$AA,$AA
crank_sprite3:
.byte 5,5
.byte $AA,$AA,$AA,$AA,$AA
.byte $AA,$AA,$AA,$AA,$AA
.byte $AA,$AA,$Ad,$AA,$AA
.byte $AA,$AA,$AA,$dA,$1d
.byte $AA,$AA,$AA,$A1,$AA
battery_sprite0:
.byte 1,7
.byte $AA,$AA,$AA,$AA,$AA,$AA,$AA
battery_sprite1:
.byte 1,7
.byte $AA,$AA,$AA,$AA,$AA,$AA,$FF
battery_sprite2:
.byte 1,7
.byte $AA,$AA,$AA,$AA,$AA,$FF,$FF
battery_sprite3:
.byte 1,7
.byte $AA,$AA,$AA,$AA,$FF,$FF,$FF
battery_sprite4:
.byte 1,7
.byte $AA,$AA,$AA,$FF,$FF,$FF,$FF
battery_sprite5:
.byte 1,7
.byte $AA,$AA,$FF,$FF,$FF,$FF,$FF
battery_sprite6:
.byte 1,7
.byte $AA,$FF,$FF,$FF,$FF,$FF,$FF
battery_sprite7:
.byte 1,7
.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF
;==========================

View File

@ -63,6 +63,7 @@ RED_PAGES_TAKEN = $80
SELENA_PAGE = 4
STONEY_PAGE = 8
CHANNEL_PAGE = 16
FINAL_PAGE = 32
BLUE_PAGES_TAKEN= $81
CLOCK_BRIDGE = $82
GEAR_OPEN = $83
@ -126,6 +127,12 @@ TOWER_ROTATION = $AB
ROTATION_TREE = 4
ROTATION_SPACESHIP = 8
SHIP_RAISED = $AC
; stoneship
PUMP_STATE = $AD
BATTERY_CHARGE = $AE
COMPASS_ANGLE = $AF
CRANK_ANGLE = $B0
; done game puzzle state