mist: meche: can finally solve the code and return to mist
@ -153,9 +153,10 @@ MECHE_EAST_ARCH = 30
|
|||||||
MECHE_EAST_TOP = 31
|
MECHE_EAST_TOP = 31
|
||||||
MECHE_EAST_HINT = 32
|
MECHE_EAST_HINT = 32
|
||||||
MECHE_EXIT_PUZZLE = 33
|
MECHE_EXIT_PUZZLE = 33
|
||||||
MECHE_MIST_BOOK = 34
|
MECHE_BOOK_STAIRS = 34
|
||||||
MECHE_MIST_CLOSED = 35
|
MECHE_MIST_BOOK = 35
|
||||||
MECHE_MIST_OPEN = 36
|
MECHE_MIST_CLOSED = 36
|
||||||
|
MECHE_MIST_OPEN = 37
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ meche_graphics.inc: \
|
|||||||
departure_e.lzsa \
|
departure_e.lzsa \
|
||||||
arrival_w.lzsa \
|
arrival_w.lzsa \
|
||||||
entrance_e.lzsa entrance_s.lzsa entrance_n.lzsa entrance_w.lzsa \
|
entrance_e.lzsa entrance_s.lzsa entrance_n.lzsa entrance_w.lzsa \
|
||||||
|
entrance_open_n.lzsa \
|
||||||
meche_book_closed.lzsa meche_book_open.lzsa \
|
meche_book_closed.lzsa meche_book_open.lzsa \
|
||||||
fort_view_n.lzsa fort_view_s.lzsa \
|
fort_view_n.lzsa fort_view_s.lzsa \
|
||||||
bridge2_n.lzsa bridge2_s.lzsa bridge2_e.lzsa bridge2_w.lzsa \
|
bridge2_n.lzsa bridge2_s.lzsa bridge2_e.lzsa bridge2_w.lzsa \
|
||||||
@ -47,13 +48,18 @@ meche_graphics.inc: \
|
|||||||
east_arch_w.lzsa east_arch_s.lzsa \
|
east_arch_w.lzsa east_arch_s.lzsa \
|
||||||
east_hint_e.lzsa \
|
east_hint_e.lzsa \
|
||||||
east_top_e.lzsa east_top_w.lzsa \
|
east_top_e.lzsa east_top_w.lzsa \
|
||||||
fort_exit_n.lzsa fort_exit_w.lzsa fort_exit_e.lzsa
|
fort_exit_n.lzsa fort_exit_w.lzsa fort_exit_e.lzsa \
|
||||||
|
exit_puzzle_n.lzsa \
|
||||||
|
book_stairs_n.lzsa book_stairs_s.lzsa \
|
||||||
|
book_room_n.lzsa \
|
||||||
|
book_open_n.lzsa book_closed_n.lzsa
|
||||||
echo "departure_e_lzsa: .incbin \"departure_e.lzsa\"" > meche_graphics.inc
|
echo "departure_e_lzsa: .incbin \"departure_e.lzsa\"" > meche_graphics.inc
|
||||||
echo "arrival_w_lzsa: .incbin \"arrival_w.lzsa\"" >> meche_graphics.inc
|
echo "arrival_w_lzsa: .incbin \"arrival_w.lzsa\"" >> meche_graphics.inc
|
||||||
echo "entrance_e_lzsa: .incbin \"entrance_e.lzsa\"" >> meche_graphics.inc
|
echo "entrance_e_lzsa: .incbin \"entrance_e.lzsa\"" >> meche_graphics.inc
|
||||||
echo "entrance_s_lzsa: .incbin \"entrance_s.lzsa\"" >> meche_graphics.inc
|
echo "entrance_s_lzsa: .incbin \"entrance_s.lzsa\"" >> meche_graphics.inc
|
||||||
echo "entrance_n_lzsa: .incbin \"entrance_n.lzsa\"" >> meche_graphics.inc
|
echo "entrance_n_lzsa: .incbin \"entrance_n.lzsa\"" >> meche_graphics.inc
|
||||||
echo "entrance_w_lzsa: .incbin \"entrance_w.lzsa\"" >> meche_graphics.inc
|
echo "entrance_w_lzsa: .incbin \"entrance_w.lzsa\"" >> meche_graphics.inc
|
||||||
|
echo "entrance_open_n_lzsa: .incbin \"entrance_open_n.lzsa\"" >> meche_graphics.inc
|
||||||
echo "meche_book_closed_lzsa: .incbin \"meche_book_closed.lzsa\"" >> meche_graphics.inc
|
echo "meche_book_closed_lzsa: .incbin \"meche_book_closed.lzsa\"" >> meche_graphics.inc
|
||||||
echo "meche_book_open_lzsa: .incbin \"meche_book_open.lzsa\"" >> meche_graphics.inc
|
echo "meche_book_open_lzsa: .incbin \"meche_book_open.lzsa\"" >> meche_graphics.inc
|
||||||
echo "fort_view_n_lzsa: .incbin \"fort_view_n.lzsa\"" >> meche_graphics.inc
|
echo "fort_view_n_lzsa: .incbin \"fort_view_n.lzsa\"" >> meche_graphics.inc
|
||||||
@ -125,6 +131,12 @@ meche_graphics.inc: \
|
|||||||
echo "fort_exit_n_lzsa: .incbin \"fort_exit_n.lzsa\"" >> meche_graphics.inc
|
echo "fort_exit_n_lzsa: .incbin \"fort_exit_n.lzsa\"" >> meche_graphics.inc
|
||||||
echo "fort_exit_w_lzsa: .incbin \"fort_exit_w.lzsa\"" >> meche_graphics.inc
|
echo "fort_exit_w_lzsa: .incbin \"fort_exit_w.lzsa\"" >> meche_graphics.inc
|
||||||
echo "fort_exit_e_lzsa: .incbin \"fort_exit_e.lzsa\"" >> meche_graphics.inc
|
echo "fort_exit_e_lzsa: .incbin \"fort_exit_e.lzsa\"" >> meche_graphics.inc
|
||||||
|
echo "exit_puzzle_n_lzsa: .incbin \"exit_puzzle_n.lzsa\"" >> meche_graphics.inc
|
||||||
|
echo "book_stairs_n_lzsa: .incbin \"book_stairs_n.lzsa\"" >> meche_graphics.inc
|
||||||
|
echo "book_stairs_s_lzsa: .incbin \"book_stairs_s.lzsa\"" >> meche_graphics.inc
|
||||||
|
echo "book_room_n_lzsa: .incbin \"book_room_n.lzsa\"" >> meche_graphics.inc
|
||||||
|
echo "book_open_n_lzsa: .incbin \"book_open_n.lzsa\"" >> meche_graphics.inc
|
||||||
|
echo "book_closed_n_lzsa: .incbin \"book_closed_n.lzsa\"" >> meche_graphics.inc
|
||||||
|
|
||||||
%.gr: %.png
|
%.gr: %.png
|
||||||
$(PNG2GR) $< $@
|
$(PNG2GR) $< $@
|
||||||
|
BIN
mist/graphics_meche/book_closed_n.png
Normal file
After Width: | Height: | Size: 816 B |
BIN
mist/graphics_meche/book_open_n.png
Normal file
After Width: | Height: | Size: 777 B |
BIN
mist/graphics_meche/book_room_n.png
Normal file
After Width: | Height: | Size: 895 B |
BIN
mist/graphics_meche/book_stairs_n.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
mist/graphics_meche/book_stairs_s.png
Normal file
After Width: | Height: | Size: 835 B |
BIN
mist/graphics_meche/entrance_open_n.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
mist/graphics_meche/exit_puzzle_n.png
Normal file
After Width: | Height: | Size: 873 B |
@ -4,6 +4,7 @@ entrance_e_lzsa: .incbin "entrance_e.lzsa"
|
|||||||
entrance_s_lzsa: .incbin "entrance_s.lzsa"
|
entrance_s_lzsa: .incbin "entrance_s.lzsa"
|
||||||
entrance_n_lzsa: .incbin "entrance_n.lzsa"
|
entrance_n_lzsa: .incbin "entrance_n.lzsa"
|
||||||
entrance_w_lzsa: .incbin "entrance_w.lzsa"
|
entrance_w_lzsa: .incbin "entrance_w.lzsa"
|
||||||
|
entrance_open_n_lzsa: .incbin "entrance_open_n.lzsa"
|
||||||
meche_book_closed_lzsa: .incbin "meche_book_closed.lzsa"
|
meche_book_closed_lzsa: .incbin "meche_book_closed.lzsa"
|
||||||
meche_book_open_lzsa: .incbin "meche_book_open.lzsa"
|
meche_book_open_lzsa: .incbin "meche_book_open.lzsa"
|
||||||
fort_view_n_lzsa: .incbin "fort_view_n.lzsa"
|
fort_view_n_lzsa: .incbin "fort_view_n.lzsa"
|
||||||
@ -75,3 +76,9 @@ east_top_w_lzsa: .incbin "east_top_w.lzsa"
|
|||||||
fort_exit_n_lzsa: .incbin "fort_exit_n.lzsa"
|
fort_exit_n_lzsa: .incbin "fort_exit_n.lzsa"
|
||||||
fort_exit_w_lzsa: .incbin "fort_exit_w.lzsa"
|
fort_exit_w_lzsa: .incbin "fort_exit_w.lzsa"
|
||||||
fort_exit_e_lzsa: .incbin "fort_exit_e.lzsa"
|
fort_exit_e_lzsa: .incbin "fort_exit_e.lzsa"
|
||||||
|
exit_puzzle_n_lzsa: .incbin "exit_puzzle_n.lzsa"
|
||||||
|
book_stairs_n_lzsa: .incbin "book_stairs_n.lzsa"
|
||||||
|
book_stairs_s_lzsa: .incbin "book_stairs_s.lzsa"
|
||||||
|
book_room_n_lzsa: .incbin "book_room_n.lzsa"
|
||||||
|
book_open_n_lzsa: .incbin "book_open_n.lzsa"
|
||||||
|
book_closed_n_lzsa: .incbin "book_closed_n.lzsa"
|
||||||
|
@ -12,7 +12,8 @@ locations:
|
|||||||
.word location20,location21,location22,location23
|
.word location20,location21,location22,location23
|
||||||
.word location24,location25,location26,location27
|
.word location24,location25,location26,location27
|
||||||
.word location28,location29,location30,location31
|
.word location28,location29,location30,location31
|
||||||
.word location32
|
.word location32,location33,location34,location35
|
||||||
|
.word location36,location37
|
||||||
|
|
||||||
; MECHE_INSIDE_GEAR -- Inside gear on Mist
|
; MECHE_INSIDE_GEAR -- Inside gear on Mist
|
||||||
location0:
|
location0:
|
||||||
@ -102,7 +103,11 @@ location4:
|
|||||||
.word entrance_e_lzsa ; east bg
|
.word entrance_e_lzsa ; east bg
|
||||||
.word entrance_w_lzsa ; west bg
|
.word entrance_w_lzsa ; west bg
|
||||||
.byte BG_NORTH|BG_SOUTH|BG_EAST|BG_WEST
|
.byte BG_NORTH|BG_SOUTH|BG_EAST|BG_WEST
|
||||||
.byte $ff ; special exit
|
.byte DIRECTION_N ; special exit
|
||||||
|
.byte 6,22 ; special x
|
||||||
|
.byte 30,46 ; special y
|
||||||
|
.word try_exit_puzzle-1 ; special function
|
||||||
|
|
||||||
|
|
||||||
; MECHE_FORT_VIEW -- fort view
|
; MECHE_FORT_VIEW -- fort view
|
||||||
location5:
|
location5:
|
||||||
@ -598,4 +603,95 @@ location32:
|
|||||||
.byte BG_EAST
|
.byte BG_EAST
|
||||||
.byte $ff ; special exit
|
.byte $ff ; special exit
|
||||||
|
|
||||||
|
; MECHE EXIT_PUZZLE -- exit puzzle
|
||||||
|
location33:
|
||||||
|
.byte MECHE_ENTRANCE ; north exit
|
||||||
|
.byte $ff ; south exit
|
||||||
|
.byte MECHE_EAST_TOP ; 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 exit_puzzle_n_lzsa ; north bg
|
||||||
|
.word $0000 ; south bg
|
||||||
|
.word $0000 ; east bg
|
||||||
|
.word $0000 ; west bg
|
||||||
|
.byte BG_NORTH
|
||||||
|
.byte DIRECTION_N ; special exit
|
||||||
|
.byte 2,38 ; special x
|
||||||
|
.byte 26,48 ; special y
|
||||||
|
.word exit_puzzle_button_press-1 ; special function
|
||||||
|
|
||||||
|
; MECHE_BOOK_STAIRS -- stairs down to book
|
||||||
|
location34:
|
||||||
|
.byte MECHE_MIST_BOOK ; north exit
|
||||||
|
.byte MECHE_ENTRANCE ; south exit
|
||||||
|
.byte $ff ; east exit
|
||||||
|
.byte $ff ; west exit
|
||||||
|
.byte DIRECTION_N ; north exit_dir
|
||||||
|
.byte DIRECTION_S ; south exit_dir
|
||||||
|
.byte $ff ; east exit_dir
|
||||||
|
.byte $ff ; west exit_dir
|
||||||
|
.word book_stairs_n_lzsa ; north bg
|
||||||
|
.word book_stairs_s_lzsa ; south bg
|
||||||
|
.word $0000 ; east bg
|
||||||
|
.word $0000 ; west bg
|
||||||
|
.byte BG_NORTH|BG_SOUTH
|
||||||
|
.byte $ff
|
||||||
|
|
||||||
|
; MECHE_MIST_BOOK -- book in room
|
||||||
|
location35:
|
||||||
|
.byte MECHE_MIST_CLOSED ; 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 book_room_n_lzsa ; north bg
|
||||||
|
.word $ff ; south bg
|
||||||
|
.word $0000 ; east bg
|
||||||
|
.word $0000 ; west bg
|
||||||
|
.byte BG_NORTH
|
||||||
|
.byte $ff
|
||||||
|
|
||||||
|
; MECHE_MIST_CLOSED -- book in room
|
||||||
|
location36:
|
||||||
|
.byte MECHE_MIST_OPEN ; 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 book_closed_n_lzsa ; north bg
|
||||||
|
.word $ff ; south bg
|
||||||
|
.word $0000 ; east bg
|
||||||
|
.word $0000 ; west bg
|
||||||
|
.byte BG_NORTH
|
||||||
|
.byte $ff
|
||||||
|
|
||||||
|
; MECHE_MIST_OPEN -- book in room
|
||||||
|
location37:
|
||||||
|
.byte MECHE_BOOK_STAIRS ; north exit
|
||||||
|
.byte $ff ; south exit
|
||||||
|
.byte $ff ; east exit
|
||||||
|
.byte $ff ; west exit
|
||||||
|
.byte DIRECTION_S ; north exit_dir
|
||||||
|
.byte $ff ; south exit_dir
|
||||||
|
.byte $ff ; east exit_dir
|
||||||
|
.byte $ff ; west exit_dir
|
||||||
|
.word book_open_n_lzsa ; north bg
|
||||||
|
.word $ff ; south bg
|
||||||
|
.word $0000 ; east bg
|
||||||
|
.word $0000 ; west bg
|
||||||
|
.byte BG_NORTH
|
||||||
|
.byte DIRECTION_N
|
||||||
|
.byte 24,32 ; special x
|
||||||
|
.byte 12,22 ; special y
|
||||||
|
.word mist_link_book-1 ; special function
|
||||||
|
|
||||||
|
|
||||||
|
43
mist/meche.s
@ -41,6 +41,8 @@ meche_start:
|
|||||||
|
|
||||||
jsr adjust_basement_door
|
jsr adjust_basement_door
|
||||||
|
|
||||||
|
jsr check_puzzle_solved
|
||||||
|
|
||||||
game_loop:
|
game_loop:
|
||||||
;=================
|
;=================
|
||||||
; reset things
|
; reset things
|
||||||
@ -68,6 +70,10 @@ game_loop:
|
|||||||
beq animate_elevator_rotate
|
beq animate_elevator_rotate
|
||||||
cmp #MECHE_ROTATE_CONTROLS
|
cmp #MECHE_ROTATE_CONTROLS
|
||||||
beq animate_rotate_controls
|
beq animate_rotate_controls
|
||||||
|
cmp #MECHE_EXIT_PUZZLE
|
||||||
|
beq animate_meche_puzzle
|
||||||
|
cmp #MECHE_MIST_OPEN
|
||||||
|
beq animate_mist_book
|
||||||
|
|
||||||
jmp nothing_special
|
jmp nothing_special
|
||||||
animate_meche_book:
|
animate_meche_book:
|
||||||
@ -109,6 +115,43 @@ animate_elevator_rotate:
|
|||||||
|
|
||||||
animate_rotate_controls:
|
animate_rotate_controls:
|
||||||
jsr draw_rotation_controls
|
jsr draw_rotation_controls
|
||||||
|
jmp nothing_special
|
||||||
|
|
||||||
|
animate_meche_puzzle:
|
||||||
|
jsr draw_exit_puzzle_sprites
|
||||||
|
jmp nothing_special
|
||||||
|
|
||||||
|
animate_mist_book:
|
||||||
|
lda ANIMATE_FRAME
|
||||||
|
cmp #6
|
||||||
|
bcc mist_book_good ; blt
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta ANIMATE_FRAME
|
||||||
|
|
||||||
|
mist_book_good:
|
||||||
|
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
lda mist_movie,Y
|
||||||
|
sta INL
|
||||||
|
lda mist_movie+1,Y
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
lda #24
|
||||||
|
sta XPOS
|
||||||
|
lda #12
|
||||||
|
sta YPOS
|
||||||
|
|
||||||
|
jsr put_sprite_crop
|
||||||
|
|
||||||
|
lda FRAMEL
|
||||||
|
and #$f
|
||||||
|
bne done_animate_mist_book
|
||||||
|
|
||||||
|
inc ANIMATE_FRAME
|
||||||
|
|
||||||
|
done_animate_mist_book:
|
||||||
|
|
||||||
nothing_special:
|
nothing_special:
|
||||||
|
|
||||||
|
@ -1,3 +1,225 @@
|
|||||||
|
;===============================
|
||||||
|
;===============================
|
||||||
|
; exit puzzle stuff
|
||||||
|
;===============================
|
||||||
|
;===============================
|
||||||
|
|
||||||
|
exit_puzzle_button_press:
|
||||||
|
|
||||||
|
lda CURSOR_Y
|
||||||
|
cmp #40
|
||||||
|
bcs check_valid ; bge
|
||||||
|
|
||||||
|
; handle 4 chars
|
||||||
|
lda CURSOR_X
|
||||||
|
cmp #10
|
||||||
|
bcc handle_char1
|
||||||
|
cmp #20
|
||||||
|
bcc handle_char2
|
||||||
|
cmp #30
|
||||||
|
bcc handle_char3
|
||||||
|
bcs handle_char4
|
||||||
|
|
||||||
|
handle_char1:
|
||||||
|
inc MECHE_LOCK1
|
||||||
|
lda MECHE_LOCK1
|
||||||
|
cmp #10
|
||||||
|
bne wrap_lock1
|
||||||
|
lda #0
|
||||||
|
sta MECHE_LOCK1
|
||||||
|
wrap_lock1:
|
||||||
|
rts
|
||||||
|
|
||||||
|
handle_char2:
|
||||||
|
inc MECHE_LOCK2
|
||||||
|
lda MECHE_LOCK2
|
||||||
|
cmp #10
|
||||||
|
bne wrap_lock2
|
||||||
|
lda #0
|
||||||
|
sta MECHE_LOCK2
|
||||||
|
wrap_lock2:
|
||||||
|
rts
|
||||||
|
|
||||||
|
handle_char3:
|
||||||
|
inc MECHE_LOCK3
|
||||||
|
lda MECHE_LOCK3
|
||||||
|
cmp #10
|
||||||
|
bne wrap_lock3
|
||||||
|
lda #0
|
||||||
|
sta MECHE_LOCK3
|
||||||
|
wrap_lock3:
|
||||||
|
rts
|
||||||
|
|
||||||
|
handle_char4:
|
||||||
|
inc MECHE_LOCK4
|
||||||
|
lda MECHE_LOCK4
|
||||||
|
cmp #10
|
||||||
|
bne wrap_lock4
|
||||||
|
lda #0
|
||||||
|
sta MECHE_LOCK4
|
||||||
|
wrap_lock4:
|
||||||
|
rts
|
||||||
|
|
||||||
|
check_valid:
|
||||||
|
|
||||||
|
jsr check_puzzle_solved
|
||||||
|
bcs proper_code
|
||||||
|
bcc not_valid
|
||||||
|
|
||||||
|
proper_code:
|
||||||
|
|
||||||
|
; move to in front of open door
|
||||||
|
|
||||||
|
lda #MECHE_BOOK_STAIRS
|
||||||
|
sta LOCATION
|
||||||
|
jsr change_location
|
||||||
|
|
||||||
|
not_valid:
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
;=======================
|
||||||
|
; check if puzzle solved
|
||||||
|
;=======================
|
||||||
|
check_puzzle_solved:
|
||||||
|
lda MECHE_LOCK1
|
||||||
|
cmp #2
|
||||||
|
bne keep_door_closed
|
||||||
|
lda MECHE_LOCK2
|
||||||
|
cmp #8
|
||||||
|
bne keep_door_closed
|
||||||
|
lda MECHE_LOCK3
|
||||||
|
cmp #5
|
||||||
|
bne keep_door_closed
|
||||||
|
lda MECHE_LOCK4
|
||||||
|
cmp #1
|
||||||
|
bne keep_door_closed
|
||||||
|
keep_door_open:
|
||||||
|
|
||||||
|
; change to open stairwell
|
||||||
|
ldy #LOCATION_NORTH_BG
|
||||||
|
lda #<entrance_open_n_lzsa
|
||||||
|
sta location4,Y
|
||||||
|
lda #>entrance_open_n_lzsa
|
||||||
|
sta location4+1,Y
|
||||||
|
|
||||||
|
; path to stairs handled elsewhere
|
||||||
|
|
||||||
|
; set carry to indicate open
|
||||||
|
|
||||||
|
sec
|
||||||
|
|
||||||
|
rts
|
||||||
|
keep_door_closed:
|
||||||
|
|
||||||
|
; change to closed stairwell
|
||||||
|
ldy #LOCATION_NORTH_BG
|
||||||
|
lda #<entrance_n_lzsa
|
||||||
|
sta location4,Y
|
||||||
|
lda #>entrance_n_lzsa
|
||||||
|
sta location4+1,Y
|
||||||
|
|
||||||
|
; path to stairs handled elsewhere
|
||||||
|
|
||||||
|
; clear carry to indicate closed
|
||||||
|
|
||||||
|
clc
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
;========================
|
||||||
|
; draw sprites
|
||||||
|
|
||||||
|
draw_exit_puzzle_sprites:
|
||||||
|
|
||||||
|
lda MECHE_LOCK1
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
lda exit_puzzle_sprites,Y
|
||||||
|
sta INL
|
||||||
|
lda exit_puzzle_sprites+1,Y
|
||||||
|
sta INH
|
||||||
|
lda #5
|
||||||
|
sta XPOS
|
||||||
|
lda #8
|
||||||
|
sta YPOS
|
||||||
|
jsr put_sprite_crop
|
||||||
|
|
||||||
|
lda MECHE_LOCK2
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
lda exit_puzzle_sprites,Y
|
||||||
|
sta INL
|
||||||
|
lda exit_puzzle_sprites+1,Y
|
||||||
|
sta INH
|
||||||
|
lda #14
|
||||||
|
sta XPOS
|
||||||
|
lda #8
|
||||||
|
sta YPOS
|
||||||
|
jsr put_sprite_crop
|
||||||
|
|
||||||
|
lda MECHE_LOCK3
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
lda exit_puzzle_sprites,Y
|
||||||
|
sta INL
|
||||||
|
lda exit_puzzle_sprites+1,Y
|
||||||
|
sta INH
|
||||||
|
lda #23
|
||||||
|
sta XPOS
|
||||||
|
lda #8
|
||||||
|
sta YPOS
|
||||||
|
jsr put_sprite_crop
|
||||||
|
|
||||||
|
lda MECHE_LOCK4
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
lda exit_puzzle_sprites,Y
|
||||||
|
sta INL
|
||||||
|
lda exit_puzzle_sprites+1,Y
|
||||||
|
sta INH
|
||||||
|
lda #32
|
||||||
|
sta XPOS
|
||||||
|
lda #8
|
||||||
|
sta YPOS
|
||||||
|
jsr put_sprite_crop
|
||||||
|
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
;=========================================
|
||||||
|
; exit puzzle first
|
||||||
|
; we really have two entrance points but on same node
|
||||||
|
; so can't have both??
|
||||||
|
|
||||||
|
; also handle path to book
|
||||||
|
|
||||||
|
try_exit_puzzle:
|
||||||
|
|
||||||
|
lda CURSOR_X
|
||||||
|
cmp #14
|
||||||
|
bcc do_puzzle
|
||||||
|
|
||||||
|
; not puzzle, instead go down steps if available
|
||||||
|
|
||||||
|
jsr check_puzzle_solved
|
||||||
|
bcc cant_go_there
|
||||||
|
|
||||||
|
lda #MECHE_BOOK_STAIRS
|
||||||
|
sta LOCATION
|
||||||
|
jsr change_location
|
||||||
|
cant_go_there:
|
||||||
|
rts
|
||||||
|
|
||||||
|
do_puzzle:
|
||||||
|
lda #MECHE_EXIT_PUZZLE
|
||||||
|
sta LOCATION
|
||||||
|
jsr change_location
|
||||||
|
rts
|
||||||
|
|
||||||
;=================================
|
;=================================
|
||||||
;=================================
|
;=================================
|
||||||
; rotation stuff
|
; rotation stuff
|
||||||
@ -596,3 +818,96 @@ elevator3:
|
|||||||
.byte 3,2
|
.byte 3,2
|
||||||
.byte $f0,$f0,$0f
|
.byte $f0,$f0,$0f
|
||||||
.byte $0f,$0f,$f0
|
.byte $0f,$0f,$f0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
exit_puzzle_sprites:
|
||||||
|
.word exit_char0,exit_char1,exit_char2,exit_char3,exit_char4
|
||||||
|
.word exit_char5,exit_char6,exit_char7,exit_char8,exit_char9
|
||||||
|
|
||||||
|
exit_char0: ; +
|
||||||
|
.byte 4,5
|
||||||
|
.byte $ff,$4f,$4f,$ff
|
||||||
|
.byte $ff,$44,$44,$ff
|
||||||
|
.byte $44,$44,$44,$44
|
||||||
|
.byte $ff,$44,$44,$ff
|
||||||
|
.byte $ff,$f4,$f4,$ff
|
||||||
|
|
||||||
|
exit_char1: ; half circle
|
||||||
|
.byte 4,5
|
||||||
|
.byte $ff,$4f,$44,$ff
|
||||||
|
.byte $4f,$44,$44,$ff
|
||||||
|
.byte $44,$44,$44,$ff
|
||||||
|
.byte $ff,$44,$44,$ff
|
||||||
|
.byte $ff,$ff,$f4,$ff
|
||||||
|
|
||||||
|
exit_char2: ; Cyan Logo
|
||||||
|
.byte 4,5
|
||||||
|
.byte $4f,$f4,$f4,$4f
|
||||||
|
.byte $44,$ff,$ff,$44
|
||||||
|
.byte $44,$ff,$ff,$44
|
||||||
|
.byte $44,$ff,$ff,$44
|
||||||
|
.byte $f4,$ff,$ff,$f4
|
||||||
|
|
||||||
|
exit_char3: ; Right Triangle
|
||||||
|
.byte 4,5
|
||||||
|
.byte $44,$44,$44,$44
|
||||||
|
.byte $44,$44,$44,$ff
|
||||||
|
.byte $44,$44,$f4,$ff
|
||||||
|
.byte $44,$f4,$ff,$ff
|
||||||
|
.byte $f4,$ff,$ff,$ff
|
||||||
|
|
||||||
|
exit_char4: ; split square
|
||||||
|
.byte 4,5
|
||||||
|
.byte $44,$f4,$ff,$44
|
||||||
|
.byte $44,$ff,$ff,$44
|
||||||
|
.byte $44,$ff,$ff,$44
|
||||||
|
.byte $44,$ff,$ff,$44
|
||||||
|
.byte $f4,$ff,$f4,$f4
|
||||||
|
|
||||||
|
exit_char5: ; spikes with ball
|
||||||
|
.byte 4,5
|
||||||
|
.byte $ff,$44,$44,$ff
|
||||||
|
.byte $ff,$f4,$f4,$ff
|
||||||
|
.byte $44,$ff,$ff,$44
|
||||||
|
.byte $44,$ff,$ff,$44
|
||||||
|
.byte $f4,$ff,$ff,$f4
|
||||||
|
|
||||||
|
exit_char6: ; ping pong
|
||||||
|
.byte 4,5
|
||||||
|
.byte $44,$ff,$44,$44
|
||||||
|
.byte $f4,$4f,$ff,$ff
|
||||||
|
.byte $ff,$f4,$4f,$ff
|
||||||
|
.byte $ff,$ff,$f4,$4f
|
||||||
|
.byte $ff,$ff,$ff,$f4
|
||||||
|
|
||||||
|
exit_char7: ; zig-zag
|
||||||
|
.byte 4,5
|
||||||
|
.byte $f4,$44,$4f,$ff
|
||||||
|
.byte $ff,$4f,$44,$f4
|
||||||
|
.byte $f4,$44,$4f,$ff
|
||||||
|
.byte $ff,$4f,$44,$f4
|
||||||
|
.byte $f4,$f4,$ff,$ff
|
||||||
|
|
||||||
|
exit_char8: ; triangles alternating
|
||||||
|
.byte 4,5
|
||||||
|
.byte $44,$44,$ff,$44
|
||||||
|
.byte $44,$44,$ff,$44
|
||||||
|
.byte $44,$ff,$4f,$44
|
||||||
|
.byte $44,$ff,$44,$44
|
||||||
|
.byte $f4,$ff,$f4,$f4
|
||||||
|
|
||||||
|
exit_char9: ; circle with square
|
||||||
|
.byte 4,5
|
||||||
|
.byte $4f,$f4,$f4,$4f
|
||||||
|
.byte $44,$4f,$4f,$44
|
||||||
|
.byte $44,$44,$44,$44
|
||||||
|
.byte $44,$ff,$ff,$44
|
||||||
|
.byte $ff,$f4,$f4,$ff
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|