From 46dc8b5e4d350bd7122574c4d72182b6adceb730 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Wed, 25 Mar 2020 01:17:59 -0400 Subject: [PATCH] mist: add viewer room --- mist/Makefile | 19 ++- mist/common_defines.inc | 16 ++- mist/graphics_mist/Makefile | 3 +- mist/graphics_mist/dock_w_open.png | Bin 0 -> 13418 bytes mist/graphics_mist/mist_graphics.inc | 1 + mist/graphics_viewer/Makefile | 28 +++++ mist/graphics_viewer/viewer_e.png | Bin 0 -> 934 bytes mist/graphics_viewer/viewer_stairs_e.png | Bin 0 -> 839 bytes mist/graphics_viewer/viewer_stairs_w.png | Bin 0 -> 1122 bytes mist/graphics_viewer/viewer_w.png | Bin 0 -> 1073 bytes mist/leveldata_mist.inc | 25 +++- mist/leveldata_viewer.inc | 49 ++++++++ mist/loader.s | 11 +- mist/mist.s | 14 +++ mist/viewer.s | 151 +++++++++++++++++++++++ 15 files changed, 305 insertions(+), 12 deletions(-) create mode 100644 mist/graphics_mist/dock_w_open.png create mode 100644 mist/graphics_viewer/Makefile create mode 100644 mist/graphics_viewer/viewer_e.png create mode 100644 mist/graphics_viewer/viewer_stairs_e.png create mode 100644 mist/graphics_viewer/viewer_stairs_w.png create mode 100644 mist/graphics_viewer/viewer_w.png create mode 100644 mist/leveldata_viewer.inc create mode 100644 mist/viewer.s diff --git a/mist/Makefile b/mist/Makefile index afcb6d6e..08a1ea4f 100644 --- a/mist/Makefile +++ b/mist/Makefile @@ -8,7 +8,7 @@ B2D = ../bmp2dhr/b2d all: mist.dsk -mist.dsk: HELLO LOADER MIST_TITLE MIST OCTAGON MECHE SELENA +mist.dsk: HELLO LOADER MIST_TITLE MIST OCTAGON MECHE SELENA VIEWER cp empty.dsk mist.dsk $(DOS33) -y mist.dsk SAVE A HELLO $(DOS33) -y mist.dsk BSAVE -a 0x1000 LOADER @@ -17,6 +17,7 @@ mist.dsk: HELLO LOADER MIST_TITLE MIST OCTAGON MECHE SELENA $(DOS33) -y mist.dsk BSAVE -a 0x1400 OCTAGON $(DOS33) -y mist.dsk BSAVE -a 0x1400 MECHE $(DOS33) -y mist.dsk BSAVE -a 0x1400 SELENA + $(DOS33) -y mist.dsk BSAVE -a 0x1400 VIEWER $(DOS33) -y mist.dsk BSAVE -a 0x9000 ./audio/link_noise.btc LINK_NOISE.BTC ### @@ -121,6 +122,22 @@ selena.o: selena.s zp.inc hardware.inc common_defines.inc \ ca65 -o selena.o selena.s -l selena.lst +#### + +VIEWER: viewer.o + ld65 -o VIEWER viewer.o -C ../linker_scripts/apple2_1400.inc + +viewer.o: viewer.s zp.inc hardware.inc common_defines.inc \ + graphics_viewer/viewer_graphics.inc \ + common_sprites.inc \ + page_sprites.inc \ + leveldata_viewer.inc \ + keyboard.s \ + draw_pointer.s \ + gr_copy.s audio.s text_print.s decompress_fast_v2.s + ca65 -o viewer.o viewer.s -l viewer.lst + + #### graphics_island/mist_graphics.inc: diff --git a/mist/common_defines.inc b/mist/common_defines.inc index f71942e4..b8d0eb13 100644 --- a/mist/common_defines.inc +++ b/mist/common_defines.inc @@ -51,9 +51,10 @@ LOAD_MIST = $1 LOAD_MECHE = $2 LOAD_SELENA = $3 LOAD_OCTAGON = $4 -LOAD_STONEDSHIP = $5 -LOAD_CHANNEL = $6 -LOAD_ENDING = $7 +LOAD_VIEWER = $5 +LOAD_STONEDSHIP = $6 +LOAD_CHANNEL = $7 +LOAD_ENDING = $8 @@ -106,7 +107,7 @@ MIST_TOWER1_TRAIL = 36 MIST_TOWER1_TRAIL2 = 37 MIST_TOWER1_BOTTOM = 38 MIST_TOWER1_TOP = 39 - +MIST_VIEWER_DOOR = 40 ; Mist Octagon Building @@ -178,3 +179,10 @@ SELENA_SUB_ROOM = 7 SELENA_BOOK_ROOM = 8 SELENA_BOOK_CLOSED = 9 SELENA_BOOK_OPEN = 10 + + +; Viewer Room + +VIEWER_STEPS = 0 +VIEWER_POOL = 1 + diff --git a/mist/graphics_mist/Makefile b/mist/graphics_mist/Makefile index 73ffd408..3e80bd60 100644 --- a/mist/graphics_mist/Makefile +++ b/mist/graphics_mist/Makefile @@ -10,7 +10,7 @@ all: mist_graphics.inc #### mist_graphics.inc: \ - dock_n.lzsa dock_s.lzsa dock_e.lzsa dock_w.lzsa \ + dock_n.lzsa dock_s.lzsa dock_e.lzsa dock_w.lzsa dock_w_open.lzsa \ dock_switch_n.lzsa dock_switch_s.lzsa \ dock_steps_w.lzsa \ above_dock_e.lzsa above_dock_n.lzsa above_dock_s.lzsa \ @@ -53,6 +53,7 @@ mist_graphics.inc: \ echo "dock_s_lzsa: .incbin \"dock_s.lzsa\"" >> mist_graphics.inc echo "dock_e_lzsa: .incbin \"dock_e.lzsa\"" >> mist_graphics.inc echo "dock_w_lzsa: .incbin \"dock_w.lzsa\"" >> mist_graphics.inc + echo "dock_w_open_lzsa: .incbin \"dock_w_open.lzsa\"" >> mist_graphics.inc echo "dock_switch_n_lzsa: .incbin \"dock_switch_n.lzsa\"" >> mist_graphics.inc echo "dock_switch_s_lzsa: .incbin \"dock_switch_s.lzsa\"" >> mist_graphics.inc echo "dock_steps_w_lzsa: .incbin \"dock_steps_w.lzsa\"" >> mist_graphics.inc diff --git a/mist/graphics_mist/dock_w_open.png b/mist/graphics_mist/dock_w_open.png new file mode 100644 index 0000000000000000000000000000000000000000..8ccda540aa5618662779dd435e258f4c48430147 GIT binary patch literal 13418 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 viewer_graphics.inc + echo "viewer_w_lzsa: .incbin \"viewer_w.lzsa\"" >> viewer_graphics.inc + echo "viewer_stairs_e_lzsa: .incbin \"viewer_stairs_e.lzsa\"" >> viewer_graphics.inc + echo "viewer_stairs_w_lzsa: .incbin \"viewer_stairs_w.lzsa\"" >> viewer_graphics.inc + +%.gr: %.png + $(PNG2GR) $< $@ + +%.lzsa: %.gr + $(LZSA) -r -f2 $< $@ + +#### + +clean: + rm -f *~ *.o *.lst *.gr *.lzsa viewer_graphics.inc diff --git a/mist/graphics_viewer/viewer_e.png b/mist/graphics_viewer/viewer_e.png new file mode 100644 index 0000000000000000000000000000000000000000..1c63bf99aac1977c62fbdc324bf54709c73dbc1b GIT binary patch literal 934 zcmV;X16lluP)EX>4Tx04R}tkv&MmKpe$iQ>7vmK|2(2$WS|35EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfa&%I3krMxx6k5c1aNLh~_a1le0HIN3n$)S(glehxvqHp#<}FOz%wIeHZw;YAr?y=taLCdn;P*XaZJ^8$`^7T ztDLtuYtq2d^-JVZ$W;L& z$2>NmL3aJ%fAG6ot2i<4C54kf_lx6vi~ylspjmgE?_mpef8$&gLim4Y;dVi9;hqi@OsgSSBMs@GdoSYQT z{m{ezU~&WhYCN5to&TWF6!kpN-Hmep(EtDc0001;kA{E%000SaNLh0L02Fip02N>X zmRIYN00007bV*G`2jl}802U#8K{R*(000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2H zM@dakSAh-}0003|Nklb}m3aZtap0Y0wKAg}4EAWnl{SB$}5=bylKEX>4Tx04R}tkv&MmKpe$iQ>7vmK|2(2$WS|35EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfa&%I3krMxx6k5c1aNLh~_a1le0HIN3n$)S(glehxvqHp#<}FOz%wIeHZw;YAr?y=taLCdn;P*XaZJ^8$`^7T ztDLtuYtq2d^-JVZ$W;L& z$2>NmL3aJ%fAG6ot2i<4C54kf_lx6vi~ylspjmgE?_mpef8$&gLim4Y;dVi9;hqi@OsgSSBMs@GdoSYQT z{m{ezU~&WhYCN5to&TWF6!kpN-Hmep(EtDc0001;kA{E%000SaNLh0L02Fip02N>X zmRIYN00007bV*G`2jl}77AF8vVw*Dn000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2H zM@dakSAh-}0002;Nkl7lf*RnQ`HPly6Hyc@1v}Zx+@!Ye^Wo9ib}ZheBvo zWenQFa=SiMg>?<9aQlrz;b`HhkPGoX<2}xp?UlsqjR|`;aFLg)AH@tP`dk5VCTpkcC8&kQ*-*_A)LW7M8+&T`QEQ`~d-m5EX>4Tx04R}tkv&MmKpe$iQ>7vmK|2(2$WS|35EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfa&%I3krMxx6k5c1aNLh~_a1le0HIN3n$)S(glehxvqHp#<}FOz%wIeHZw;YAr?y=taLCdn;P*XaZJ^8$`^7T ztDLtuYtq2d^-JVZ$W;L& z$2>NmL3aJ%fAG6ot2i<4C54kf_lx6vi~ylspjmgE?_mpef8$&gLim4Y;dVi9;hqi@OsgSSBMs@GdoSYQT z{m{ezU~&WhYCN5to&TWF6!kpN-Hmep(EtDc0001;kA{E%000SaNLh0L02Fip02N>X zmRIYN00007bV*G`2jl}779R;eA)jmj000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2H zM@dakSAh-}0006FNkl^U@E6D!4e%~9#sPQ_Nyf5-Ww{URxEJs)QsZ7B-$Qm7D8b%d zMRx0E?^n2nw3epIT<5vTd7y>4wgGem=De;UtZUA0*M0^HQh;0Wm8>g(@^=KrcnFLU zK#fdI+^#h{bhgbRumplO!GclkKTjsW_QsfRg)&?fK0uH>Fss{sQ1g)Kn6{q_D`;F1HF$&U3eO(y*veUL$U#L z*24^qJpv~adjty3itLtgFbqI@DrgTqkVEwXFeS_t4qJ=kaFh4Y-94oCfcUKyVM0o& zmE+<7xGZ}>cvOl7mI5yc6zz{d8TA5`|11Qghy8p)^E6OQQnCR9S!+soOL0I{jgO#0 z0~;`d)*2qz4r>iWVD$501X=7cSfD!nI}nOA%7f^|fEb%7 literal 0 HcmV?d00001 diff --git a/mist/graphics_viewer/viewer_w.png b/mist/graphics_viewer/viewer_w.png new file mode 100644 index 0000000000000000000000000000000000000000..1ed354700d7b65122ef5547327e6360ccd63af20 GIT binary patch literal 1073 zcmV-11kU@3P)EX>4Tx04R}tkv&MmKpe$iQ>7vmK|2(2$WS|35EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfa&%I3krMxx6k5c1aNLh~_a1le0HIN3n$)S(glehxvqHp#<}FOz%wIeHZw;YAr?y=taLCdn;P*XaZJ^8$`^7T ztDLtuYtq2d^-JVZ$W;L& z$2>NmL3aJ%fAG6ot2i<4C54kf_lx6vi~ylspjmgE?_mpef8$&gLim4Y;dVi9;hqi@OsgSSBMs@GdoSYQT z{m{ezU~&WhYCN5to&TWF6!kpN-Hmep(EtDc0001;kA{E%000SaNLh0L02Fip02N>X zmRIYN00007bV*G`2jl}8016jUjQqR+000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2H zM@dakSAh-}0005pNkl)Wif2pq>V$(HsZP!TtP(=?9LW)WyJ zxUy>XNCdR@17LO5^LhZd^;<{eTI(%fJbGUM=eKf{>U?;%77#f^`Vd&1`CW={MFcyZ!#Oy$n8N$hM50f@V$Dj&Ccz&wVg_i!y$56*zH&jr=yf*If#tfVOTe(k$b!cXy3sqz(6|OvNfeDqT-+x zlY!mRHw?9EnTWSWEWoAIN~1b?w7~w`%lBH~hEz5M?;}K~6kQQb_A-=g + +; Zero Page + .include "zp.inc" + .include "hardware.inc" + .include "common_defines.inc" + +viewer_start: + ;=================== + ; init screen + jsr TEXT + jsr HOME + bit KEYRESET + + bit SET_GR + bit PAGE0 + bit LORES + bit FULLGR + + lda #0 + sta DRAW_PAGE + sta LEVEL_OVER + + ; init cursor + + lda #20 + sta CURSOR_X + sta CURSOR_Y + + ; set up initial location + + jsr change_location + + lda #1 + sta CURSOR_VISIBLE ; visible at first + + lda #0 + sta ANIMATE_FRAME + +game_loop: + ;================= + ; reset things + ;================= + + lda #0 + sta IN_SPECIAL + sta IN_RIGHT + sta IN_LEFT + + ;==================================== + ; copy background to current page + ;==================================== + + jsr gr_copy_to_current + + ;==================================== + ; handle special-case forground logic + ;==================================== + + lda LOCATION +; cmp #MECHE_OPEN_BOOK + +nothing_special: + + ;==================================== + ; draw pointer + ;==================================== + + jsr draw_pointer + + ;==================================== + ; page flip + ;==================================== + + jsr page_flip + + ;==================================== + ; handle keypress/joystick + ;==================================== + + jsr handle_keypress + + + ;==================================== + ; inc frame count + ;==================================== + + inc FRAMEL + bne room_frame_no_oflo + inc FRAMEH +room_frame_no_oflo: + + ;==================================== + ; check level over + ;==================================== + + lda LEVEL_OVER + bne really_exit + jmp game_loop + +really_exit: + jmp end_level + + + +back_to_mist: + + lda #$ff + sta LEVEL_OVER + + lda #MIST_ARRIVAL_DOCK ; the dock + sta LOCATION + lda #DIRECTION_E + sta DIRECTION + + lda #LOAD_MIST + sta WHICH_LOAD + + rts + + + rts + + + ;========================== + ; includes + ;========================== + + .include "gr_copy.s" + .include "gr_offsets.s" + .include "gr_pageflip.s" + .include "gr_putsprite_crop.s" + .include "text_print.s" + .include "gr_fast_clear.s" + .include "decompress_fast_v2.s" + .include "keyboard.s" + .include "draw_pointer.s" + .include "end_level.s" + + .include "graphics_viewer/viewer_graphics.inc" + + + ; puzzles + + .include "common_sprites.inc" + + .include "page_sprites.inc" + + .include "leveldata_viewer.inc"