mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-27 17:29:49 +00:00
mist: inside clock puzzle
This commit is contained in:
parent
6d0211f1bb
commit
4a4b0b0255
34
mist/TODO
34
mist/TODO
@ -3,20 +3,42 @@
|
||||
|
||||
+ allow turning around
|
||||
+ adjust grab window on letter
|
||||
+ only grab when facing object
|
||||
+ add missing red book step
|
||||
|
||||
+ LOADING screen
|
||||
|
||||
Make game winnable:
|
||||
+ Allow access to all marker switches
|
||||
+ Track state of marker switches (draw them properly?)
|
||||
+ Allow looking at green book on shelf
|
||||
+ allow getting in the fireplace
|
||||
+ Allow grabbing white page
|
||||
+ allow entering code
|
||||
|
||||
|
||||
Ending:
|
||||
+ Turning
|
||||
+ Allow looking at green book on shelf
|
||||
+ Atrus at end -- hires?
|
||||
|
||||
|
||||
Add one of the other ages/puzzles:
|
||||
+ ??
|
||||
MIST island:
|
||||
+ Tunnel to generator
|
||||
+ Generator puzzle
|
||||
+ Dentist chair
|
||||
+ Raise ship
|
||||
|
||||
MECHE age:
|
||||
+ Linking book animation
|
||||
+ Implement
|
||||
|
||||
SPACESHIP age:
|
||||
+ Keyboard
|
||||
+ Linking book
|
||||
|
||||
Tree age:
|
||||
+ Tree puzzle
|
||||
|
||||
Stoneship age:
|
||||
+ ?
|
||||
|
||||
Move sound to language card (meaning no sound on II+ w/o language card)
|
||||
|
||||
@ -35,8 +57,6 @@ Marker Switches (8):
|
||||
Fireplace:
|
||||
+ 8x6 grid
|
||||
|
||||
|
||||
|
||||
more pictures?
|
||||
+ open gear
|
||||
+ gear linking book
|
||||
|
@ -1,8 +1,161 @@
|
||||
;======================
|
||||
; reset the puzzle inside the clock
|
||||
|
||||
clock_inside_reset:
|
||||
|
||||
lda #0
|
||||
sta CLOCK_TOP
|
||||
sta CLOCK_MIDDLE
|
||||
sta CLOCK_BOTTOM
|
||||
sta CLOCK_COUNT
|
||||
rts
|
||||
|
||||
|
||||
;======================
|
||||
; handle the clock iside puzzle
|
||||
|
||||
clock_inside_puzzle:
|
||||
|
||||
lda XPOS
|
||||
cmp #25
|
||||
bcc inside_not_reset
|
||||
|
||||
inside_reset:
|
||||
jsr clock_inside_reset
|
||||
rts
|
||||
|
||||
inside_not_reset:
|
||||
lda CLOCK_COUNT
|
||||
cmp #9
|
||||
beq inside_done
|
||||
|
||||
lda XPOS
|
||||
cmp #18
|
||||
bcc inside_left
|
||||
bcs inside_right
|
||||
|
||||
inside_left:
|
||||
inc CLOCK_MIDDLE
|
||||
inc CLOCK_BOTTOM
|
||||
inc CLOCK_COUNT
|
||||
jmp wrap_wheels
|
||||
|
||||
inside_right:
|
||||
inc CLOCK_MIDDLE
|
||||
inc CLOCK_TOP
|
||||
inc CLOCK_COUNT
|
||||
|
||||
wrap_wheels:
|
||||
|
||||
ldx #0
|
||||
wrap_wheels_loop:
|
||||
lda CLOCK_TOP,X
|
||||
cmp #3
|
||||
bne no_wrap
|
||||
lda #0
|
||||
sta CLOCK_TOP,X
|
||||
no_wrap:
|
||||
inx
|
||||
cpx #3
|
||||
bne wrap_wheels_loop
|
||||
|
||||
inside_done:
|
||||
rts
|
||||
|
||||
|
||||
|
||||
;======================
|
||||
; draw the clock inside
|
||||
|
||||
draw_clock_inside:
|
||||
|
||||
; draw weight
|
||||
|
||||
lda #<clock_weight_sprite
|
||||
sta INL
|
||||
lda #>clock_weight_sprite
|
||||
sta INH
|
||||
|
||||
lda #9
|
||||
sta XPOS
|
||||
|
||||
lda CLOCK_COUNT
|
||||
asl
|
||||
asl
|
||||
clc
|
||||
adc #6
|
||||
sta YPOS
|
||||
jsr put_sprite_crop
|
||||
|
||||
lda CLOCK_TOP
|
||||
asl
|
||||
tay
|
||||
lda clock_gear_sprites,Y
|
||||
sta INL
|
||||
lda clock_gear_sprites+1,Y
|
||||
sta INH
|
||||
|
||||
lda #17
|
||||
sta XPOS
|
||||
lda #8
|
||||
sta YPOS
|
||||
jsr put_sprite_crop
|
||||
|
||||
lda CLOCK_MIDDLE
|
||||
asl
|
||||
tay
|
||||
lda clock_gear_sprites,Y
|
||||
sta INL
|
||||
lda clock_gear_sprites+1,Y
|
||||
sta INH
|
||||
|
||||
lda #17
|
||||
sta XPOS
|
||||
lda #12
|
||||
sta YPOS
|
||||
jsr put_sprite_crop
|
||||
|
||||
lda CLOCK_BOTTOM
|
||||
asl
|
||||
tay
|
||||
lda clock_gear_sprites,Y
|
||||
sta INL
|
||||
lda clock_gear_sprites+1,Y
|
||||
sta INH
|
||||
|
||||
lda #17
|
||||
sta XPOS
|
||||
lda #16
|
||||
sta YPOS
|
||||
jsr put_sprite_crop
|
||||
|
||||
rts
|
||||
|
||||
|
||||
;======================
|
||||
; open the gear
|
||||
|
||||
open_the_gear:
|
||||
|
||||
; FIXME
|
||||
|
||||
; replace gear bg 1
|
||||
; re-route click to MECHE age
|
||||
; replace gear bg 2
|
||||
; replace gear sprite inside clock
|
||||
|
||||
rts
|
||||
|
||||
|
||||
|
||||
;======================
|
||||
; raise bridge
|
||||
|
||||
raise_bridge:
|
||||
|
||||
lda CLOCK_BRIDGE
|
||||
beq lower_bridge
|
||||
|
||||
ldy #LOCATION_SOUTH_EXIT
|
||||
lda #26
|
||||
sta location25,Y
|
||||
@ -17,6 +170,26 @@ raise_bridge:
|
||||
lda #>clock_puzzle_bridge_lzsa
|
||||
sta location25+1,Y
|
||||
|
||||
jmp done_clock_bridge
|
||||
|
||||
lower_bridge:
|
||||
|
||||
ldy #LOCATION_SOUTH_EXIT
|
||||
lda #18
|
||||
sta location25,Y
|
||||
|
||||
ldy #LOCATION_SOUTH_EXIT_DIR
|
||||
lda #DIRECTION_N
|
||||
sta location25,Y
|
||||
|
||||
ldy #LOCATION_SOUTH_BG
|
||||
lda #<clock_puzzle_s_lzsa
|
||||
sta location25,Y
|
||||
lda #>clock_puzzle_s_lzsa
|
||||
sta location25+1,Y
|
||||
|
||||
|
||||
done_clock_bridge:
|
||||
jsr change_location
|
||||
|
||||
rts
|
||||
|
@ -1,3 +1,28 @@
|
||||
clock_gear_sprites:
|
||||
.word clock_gear_3_sprite,clock_gear_1_sprite,clock_gear_2_sprite
|
||||
|
||||
clock_gear_3_sprite:
|
||||
.byte 5,2
|
||||
.byte $11,$22,$11,$22,$11
|
||||
.byte $A1,$A2,$A1,$A2,$A1
|
||||
|
||||
clock_gear_2_sprite:
|
||||
.byte 5,2
|
||||
.byte $22,$11,$22,$11,$22
|
||||
.byte $A2,$A1,$A2,$A1,$A2
|
||||
|
||||
clock_gear_1_sprite:
|
||||
.byte 5,2
|
||||
.byte $22,$22,$11,$22,$22
|
||||
.byte $A2,$A2,$A1,$A2,$A2
|
||||
|
||||
clock_weight_sprite:
|
||||
.byte 1,3
|
||||
.byte $22
|
||||
.byte $22
|
||||
.byte $22
|
||||
|
||||
|
||||
|
||||
clock_hour_sprites:
|
||||
.word hour12_sprite, hour1_sprite, hour2_sprite
|
||||
@ -100,8 +125,8 @@ minute10_sprite:
|
||||
|
||||
minute11_sprite:
|
||||
.byte 3,5
|
||||
.byte $00,$aa,$aa
|
||||
.byte $aa,$0a,$aa
|
||||
.byte $0a,$aa,$aa
|
||||
.byte $a0,$0a,$aa
|
||||
.byte $aa,$00,$aa
|
||||
.byte $aa,$aa,$aa
|
||||
.byte $aa,$aa,$aa
|
||||
@ -199,8 +224,8 @@ hour10_sprite:
|
||||
|
||||
hour11_sprite:
|
||||
.byte 3,5
|
||||
.byte $5d,$fd,$fd
|
||||
.byte $ff,$5f,$ff
|
||||
.byte $fd,$fd,$fd
|
||||
.byte $f5,$5f,$ff
|
||||
.byte $ff,$55,$ff
|
||||
.byte $ff,$ff,$ff
|
||||
.byte $ff,$ff,$ff
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 523 B After Width: | Height: | Size: 9.0 KiB |
@ -187,7 +187,7 @@ location7:
|
||||
.word step_land2_e_lzsa ; east bg
|
||||
.word step_land2_w_lzsa ; west bg
|
||||
.byte BG_WEST | BG_EAST
|
||||
.byte DIRECTION_N ; special exit
|
||||
.byte DIRECTION_W ; special exit (letter)
|
||||
.byte 29,32 ; special x
|
||||
.byte 38,45 ; special y
|
||||
.word read_letter-1
|
||||
@ -412,11 +412,11 @@ location19:
|
||||
location20:
|
||||
.byte 19 ; north exit
|
||||
.byte $ff ; south exit
|
||||
.byte 3 ; east exit
|
||||
.byte 2 ; east exit
|
||||
.byte $ff ; west exit
|
||||
.byte DIRECTION_N ; north exit_dir
|
||||
.byte $ff ; south exit_dir
|
||||
.byte DIRECTION_E ; east exit_dir
|
||||
.byte DIRECTION_S ; east exit_dir
|
||||
.byte $ff ; west exit_dir
|
||||
.word gear_base_n_lzsa ; north bg
|
||||
.word $0000 ; south bg
|
||||
@ -545,7 +545,10 @@ location27:
|
||||
.word $0000 ; east bg
|
||||
.word $0000 ; west bg
|
||||
.byte BG_SOUTH
|
||||
.byte $ff ; special exit
|
||||
.byte DIRECTION_S ; special exit
|
||||
.byte 12,30 ; special x
|
||||
.byte 8,42 ; special y
|
||||
.word clock_inside_puzzle-1 ; special function
|
||||
|
||||
; fireplace
|
||||
location28:
|
||||
|
@ -49,6 +49,7 @@ mist_start:
|
||||
lda #0
|
||||
sta CLOCK_MINUTE
|
||||
sta CLOCK_HOUR
|
||||
jsr clock_inside_reset
|
||||
|
||||
not_first_time:
|
||||
|
||||
@ -84,10 +85,16 @@ game_loop:
|
||||
|
||||
lda LOCATION
|
||||
cmp #25 ; clock puzzle
|
||||
beq location_clock
|
||||
cmp #27
|
||||
beq location_inside_clock
|
||||
bne nothing_special
|
||||
|
||||
location_clock:
|
||||
jsr draw_clock_face
|
||||
|
||||
jmp nothing_special
|
||||
location_inside_clock:
|
||||
jsr draw_clock_inside
|
||||
|
||||
|
||||
nothing_special:
|
||||
|
33
mist/zp.inc
33
mist/zp.inc
@ -49,21 +49,24 @@ IN_RIGHT = $6D
|
||||
BTC_L = $6E
|
||||
BTC_H = $6F
|
||||
|
||||
HOLDING_PAGE = $70
|
||||
CLOCK_BRIDGE = $71
|
||||
GEAR_OPEN = $72
|
||||
MARKER_SWITCHES = $73
|
||||
CLOCK_HOUR = $74
|
||||
CLOCK_MINUTE = $75
|
||||
GENERATOR_ON = $76
|
||||
TREE_FURNACE_ON = $77
|
||||
FIREPLACE_GRID0 = $78
|
||||
FIREPLACE_GRID1 = $79
|
||||
FIREPLACE_GRID2 = $7A
|
||||
FIREPLACE_GRID3 = $7B
|
||||
FIREPLACE_GRID4 = $7C
|
||||
FIREPLACE_GRID5 = $7D
|
||||
|
||||
HOLDING_PAGE = $80
|
||||
CLOCK_BRIDGE = $81
|
||||
GEAR_OPEN = $82
|
||||
MARKER_SWITCHES = $83
|
||||
CLOCK_HOUR = $84
|
||||
CLOCK_MINUTE = $85
|
||||
GENERATOR_ON = $86
|
||||
TREE_FURNACE_ON = $87
|
||||
FIREPLACE_GRID0 = $88
|
||||
FIREPLACE_GRID1 = $89
|
||||
FIREPLACE_GRID2 = $8A
|
||||
FIREPLACE_GRID3 = $8B
|
||||
FIREPLACE_GRID4 = $8C
|
||||
FIREPLACE_GRID5 = $8D
|
||||
CLOCK_COUNT = $8E
|
||||
CLOCK_TOP = $8F
|
||||
CLOCK_MIDDLE = $90
|
||||
CLOCK_BOTTOM = $91
|
||||
|
||||
|
||||
DISP_PAGE = $ED ; ALL
|
||||
|
Loading…
Reference in New Issue
Block a user