From 5ea2d2139dc407bec33c30605cf9f2a2678f60b3 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Mon, 23 Mar 2020 00:32:40 -0400 Subject: [PATCH] mist: meche: can finally solve the code and return to mist --- mist/common_defines.inc | 7 +- mist/graphics_meche/Makefile | 14 +- mist/graphics_meche/book_closed_n.png | Bin 0 -> 816 bytes mist/graphics_meche/book_open_n.png | Bin 0 -> 777 bytes mist/graphics_meche/book_room_n.png | Bin 0 -> 895 bytes mist/graphics_meche/book_stairs_n.png | Bin 0 -> 1151 bytes mist/graphics_meche/book_stairs_s.png | Bin 0 -> 835 bytes mist/graphics_meche/entrance_open_n.png | Bin 0 -> 14356 bytes mist/graphics_meche/exit_puzzle_n.png | Bin 0 -> 873 bytes mist/graphics_meche/meche_graphics.inc | 7 + mist/leveldata_meche.inc | 100 +++++++- mist/meche.s | 43 ++++ mist/meche_rotation.s | 315 ++++++++++++++++++++++++ 13 files changed, 480 insertions(+), 6 deletions(-) create mode 100644 mist/graphics_meche/book_closed_n.png create mode 100644 mist/graphics_meche/book_open_n.png create mode 100644 mist/graphics_meche/book_room_n.png create mode 100644 mist/graphics_meche/book_stairs_n.png create mode 100644 mist/graphics_meche/book_stairs_s.png create mode 100644 mist/graphics_meche/entrance_open_n.png create mode 100644 mist/graphics_meche/exit_puzzle_n.png diff --git a/mist/common_defines.inc b/mist/common_defines.inc index c3e97803..6e151e80 100644 --- a/mist/common_defines.inc +++ b/mist/common_defines.inc @@ -153,9 +153,10 @@ MECHE_EAST_ARCH = 30 MECHE_EAST_TOP = 31 MECHE_EAST_HINT = 32 MECHE_EXIT_PUZZLE = 33 -MECHE_MIST_BOOK = 34 -MECHE_MIST_CLOSED = 35 -MECHE_MIST_OPEN = 36 +MECHE_BOOK_STAIRS = 34 +MECHE_MIST_BOOK = 35 +MECHE_MIST_CLOSED = 36 +MECHE_MIST_OPEN = 37 diff --git a/mist/graphics_meche/Makefile b/mist/graphics_meche/Makefile index 42f20c9f..bb491321 100644 --- a/mist/graphics_meche/Makefile +++ b/mist/graphics_meche/Makefile @@ -13,6 +13,7 @@ meche_graphics.inc: \ departure_e.lzsa \ arrival_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 \ fort_view_n.lzsa fort_view_s.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_hint_e.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 "arrival_w_lzsa: .incbin \"arrival_w.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_n_lzsa: .incbin \"entrance_n.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_open_lzsa: .incbin \"meche_book_open.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_w_lzsa: .incbin \"fort_exit_w.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 $(PNG2GR) $< $@ diff --git a/mist/graphics_meche/book_closed_n.png b/mist/graphics_meche/book_closed_n.png new file mode 100644 index 0000000000000000000000000000000000000000..84fb5e5abcb5308b9e2c339f026c4cb4190321ea GIT binary patch literal 816 zcmV-01JC@4P)EX>4Tx04R}tkv&MmKpe$iTeU?i4i*t{$WWauh>AFB6^c+H)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfa&%I3krMxx6k5c1aNLh~_a1le0DryARI_6oP&La) zCE`LRyD9`<5x@Yt5JHc{Onpuilkgm0_we!cF2=LG&;2=im7K`{pFljzbi*RvAfDc| zbk6(45muBG;&b9LgDyz?$aUG}H_ioz{X8>bq*L?65n`dx#&R38qM;H`5l0nOqkMnH zWrgz=XSG~q&3p0}hI87=GS_JiBY{OML4*JqRg_SMg&3_GDJD|1ANTMNIew8`GPz1% zoSYQT z{m{ezU~&WhYCN5to&TWF6!kpN-Hmep(EtDc0001;kA{E%000SaNLh0L02Fip02N>X zmRIYN00007bV*G`2jl}611C95>0_CX>@2H zM@dakSAh-}0002nNklLfZyh(^fcyS8Py zs@9d>?^C6NVe&#SNcO-G`R`zWe83017f6p>Pl6nybO{L$cpALtp&+J$h+_~j9W;~F zI^MDoER!vui7ZW)Lotx01z-dM@bN>=4tB|dvw*{lJf8<_lAN=F-Hh8Lh=5gc`{)Fl z8TTncP?7TgdBAE$ngB2Z3R36ufGVTBe>PBdD^PPj@JsHSuIKB6x}Rk%Q8U1whk1(jI@HS{!>P1)JqjKtFzr0NaP2_T|57qtSO-Y0000EX>4Tx04R}tkv&MmKpe$iTeU?i4i*t{$WWauh>AFB6^c+H)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfa&%I3krMxx6k5c1aNLh~_a1le0DryARI_6oP&La) zCE`LRyD9`<5x@Yt5JHc{Onpuilkgm0_we!cF2=LG&;2=im7K`{pFljzbi*RvAfDc| zbk6(45muBG;&b9LgDyz?$aUG}H_ioz{X8>bq*L?65n`dx#&R38qM;H`5l0nOqkMnH zWrgz=XSG~q&3p0}hI87=GS_JiBY{OML4*JqRg_SMg&3_GDJD|1ANTMNIew8`GPz1% zoSYQT z{m{ezU~&WhYCN5to&TWF6!kpN-Hmep(EtDc0001;kA{E%000SaNLh0L02Fip02N>X zmRIYN00007bV*G`2jl}611T-Yu$u({000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2H zM@dakSAh-}0002ANklJl!&+ zwr$N2T@J^XyKrZuGas%5Vg!+t_C2L6#KFhFI$;4&czu2aEX>4Tx04R}tkv&MmKpe$iTeU?i4i*t{$WWauh>AFB6^c+H)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfa&%I3krMxx6k5c1aNLh~_a1le0DryARI_6oP&La) zCE`LRyD9`<5x@Yt5JHc{Onpuilkgm0_we!cF2=LG&;2=im7K`{pFljzbi*RvAfDc| zbk6(45muBG;&b9LgDyz?$aUG}H_ioz{X8>bq*L?65n`dx#&R38qM;H`5l0nOqkMnH zWrgz=XSG~q&3p0}hI87=GS_JiBY{OML4*JqRg_SMg&3_GDJD|1ANTMNIew8`GPz1% zoSYQT z{m{ezU~&WhYCN5to&TWF6!kpN-Hmep(EtDc0001;kA{E%000SaNLh0L02Fip02N>X zmRIYN00007bV*G`2jl}611BEo_CX>@2H zM@dakSAh-}0003hNkllM(Jn|2BKjE z*ol;lut4_Oi4@=(QK1mfhaE^x;zUl z=2;Xl1RvPo@wk4H7?pTsWm_s9c?R1a@~6W|t^*a)`ol@lR|Cd1(0Dxd-wQzhOz=gj z$M`<9xkb^wKiTJ2VD<>BJ}?@c0XNn=K&N?Hfqt&jJmks(sVe2MmedQp!1Vzc`2|!a V91j!WPa^;T002ovPDHLkV1n|#h=c$D literal 0 HcmV?d00001 diff --git a/mist/graphics_meche/book_stairs_n.png b/mist/graphics_meche/book_stairs_n.png new file mode 100644 index 0000000000000000000000000000000000000000..dce1d33da22cbb52d70ffc1b7be06ebafbf540d1 GIT binary patch literal 1151 zcmV-_1c3XAP)EX>4Tx04R}tkv&MmKpe$iTeU?i4i*t{$WWauh>AFB6^c+H)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfa&%I3krMxx6k5c1aNLh~_a1le0DryARI_6oP&La) zCE`LRyD9`<5x@Yt5JHc{Onpuilkgm0_we!cF2=LG&;2=im7K`{pFljzbi*RvAfDc| zbk6(45muBG;&b9LgDyz?$aUG}H_ioz{X8>bq*L?65n`dx#&R38qM;H`5l0nOqkMnH zWrgz=XSG~q&3p0}hI87=GS_JiBY{OML4*JqRg_SMg&3_GDJD|1ANTMNIew8`GPz1% zoSYQT z{m{ezU~&WhYCN5to&TWF6!kpN-Hmep(EtDc0001;kA{E%000SaNLh0L02Fip02N>X zmRIYN00007bV*G`2jl}60|Os#3_CX>@2H zM@dakSAh-}0006iNkl-FqZn*@q zK|RPUFN5g0QInA)&K=;kjX4lCn9}@+Q!pZV8HiG>B5#3pPNm>q526n{uqCId1uY2L z6<+~K#^6zhXCQOhDap}C*+751fHmnLYR#kX!)fY399##PAxo;x@u)EcS$P1J^bEmq z?UW4ta183qsAE}_JOR-d2YvP;!+8d0ORmOa;3AM&D(L-25I_fdS@yF9V9xV1n7cQ& zjU9{%$3gox&sNq3g2X=3QkLxie zfu#VT4}^ojbc`!7rJhreH3-mti3$dv`xbzwJBz2i0$UPj@|mHaaeliNH^C^!0r*T^ zK%dD9_FSpf%me*0$O~RKxgX^d&`x0Is8>UN)}X%d-2&U}hM-Ne2;`BSi^1dNk82<= z_zXnL_L2R2itHJ~3DyyT)q2SK^ChViWZUOA$}j|NHSq@Xl`R6%MQ?)4@dj9T@GVeh z@HH^n0(fteUk~=9{1WuK_X72C?&A_@m*@og3_Si!0_ZQ6JpLHu#3OeH{0AMAT=@@0 R_3Hot002ovPDHLkV1k0_1Csy% literal 0 HcmV?d00001 diff --git a/mist/graphics_meche/book_stairs_s.png b/mist/graphics_meche/book_stairs_s.png new file mode 100644 index 0000000000000000000000000000000000000000..4651eaca35de1d791ba88377ab1a80aeb8251073 GIT binary patch literal 835 zcmV-J1HAl+P)EX>4Tx04R}tkv&MmKpe$iTeU?i4i*t{$WWauh>AFB6^c+H)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfa&%I3krMxx6k5c1aNLh~_a1le0DryARI_6oP&La) zCE`LRyD9`<5x@Yt5JHc{Onpuilkgm0_we!cF2=LG&;2=im7K`{pFljzbi*RvAfDc| zbk6(45muBG;&b9LgDyz?$aUG}H_ioz{X8>bq*L?65n`dx#&R38qM;H`5l0nOqkMnH zWrgz=XSG~q&3p0}hI87=GS_JiBY{OML4*JqRg_SMg&3_GDJD|1ANTMNIew8`GPz1% zoSYQT z{m{ezU~&WhYCN5to&TWF6!kpN-Hmep(EtDc0001;kA{E%000SaNLh0L02Fip02N>X zmRIYN00007bV*G`2jl}610EjdXIdu!000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2H zM@dakSAh-}0002)NklnM}b7^YC$Frj%ZmBr@+94NYaAg9tNi^0F)#Kalf0ulv5xg zYoO!|XrCiGlspGOOWKC$FfM?0!xd1I8Z2=cFp_DIZs9zS89py;m_^KI9 zNhgwWT_8CIy+{dsZ)xbL8_HQJRskbPBpcdU2UZ0G$)8>hn$<-0fhT?rC9r8J-}5HC z#pdT$>et=zzd*Rq!yNBk_whKGTQ@wwuYqWhF9yFjC)!=u_5gncegK8MBsF={-97*S N002ovPDHLkV1lcaW2*oF literal 0 HcmV?d00001 diff --git a/mist/graphics_meche/entrance_open_n.png b/mist/graphics_meche/entrance_open_n.png new file mode 100644 index 0000000000000000000000000000000000000000..63b934daf0fd7a3091bbbdefb49914ba6019d8e8 GIT binary patch literal 14356 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 literal 0 HcmV?d00001 diff --git a/mist/graphics_meche/meche_graphics.inc b/mist/graphics_meche/meche_graphics.inc index 20690486..5e9827a2 100644 --- a/mist/graphics_meche/meche_graphics.inc +++ b/mist/graphics_meche/meche_graphics.inc @@ -4,6 +4,7 @@ entrance_e_lzsa: .incbin "entrance_e.lzsa" entrance_s_lzsa: .incbin "entrance_s.lzsa" entrance_n_lzsa: .incbin "entrance_n.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_open_lzsa: .incbin "meche_book_open.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_w_lzsa: .incbin "fort_exit_w.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" diff --git a/mist/leveldata_meche.inc b/mist/leveldata_meche.inc index a097fb05..d91c235c 100644 --- a/mist/leveldata_meche.inc +++ b/mist/leveldata_meche.inc @@ -12,7 +12,8 @@ locations: .word location20,location21,location22,location23 .word location24,location25,location26,location27 .word location28,location29,location30,location31 - .word location32 + .word location32,location33,location34,location35 + .word location36,location37 ; MECHE_INSIDE_GEAR -- Inside gear on Mist location0: @@ -102,7 +103,11 @@ location4: .word entrance_e_lzsa ; east bg .word entrance_w_lzsa ; west bg .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 location5: @@ -598,4 +603,95 @@ location32: .byte BG_EAST .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 + diff --git a/mist/meche.s b/mist/meche.s index 66c58abc..10cf9384 100644 --- a/mist/meche.s +++ b/mist/meche.s @@ -41,6 +41,8 @@ meche_start: jsr adjust_basement_door + jsr check_puzzle_solved + game_loop: ;================= ; reset things @@ -68,6 +70,10 @@ game_loop: beq animate_elevator_rotate cmp #MECHE_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 animate_meche_book: @@ -109,6 +115,43 @@ animate_elevator_rotate: animate_rotate_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: diff --git a/mist/meche_rotation.s b/mist/meche_rotation.s index 8f8fc778..138accc0 100644 --- a/mist/meche_rotation.s +++ b/mist/meche_rotation.s @@ -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+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+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 @@ -596,3 +818,96 @@ elevator3: .byte 3,2 .byte $f0,$f0,$0f .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 + + + + + + +