From 66fa2d16dd3049053d2bdf9806af48fa54ebe406 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Sun, 28 Jun 2020 00:07:58 -0400 Subject: [PATCH] mist: split off top level of channelwood to NIBEL --- mist/Makefile | 18 ++- mist/arbor_switches.s | 41 ++---- mist/common_defines.inc | 21 +-- mist/common_routines.inc | 38 ++--- mist/graphics_arbor/Makefile | 9 +- mist/graphics_nibel/Makefile | 29 ++++ .../elevator2_closed_top.png | Bin .../elevator2_open_top.png | Bin .../outside_elevator2_closed_w.png | Bin .../outside_elevator2_e.png | Bin .../outside_elevator2_open_w.png | Bin mist/leveldata_arbor.inc | 87 +---------- mist/leveldata_nibel.inc | 81 +++++++++++ mist/loader.s | 5 +- mist/nibel.s | 135 ++++++++++++++++++ mist/nibel_switches.s | 44 ++++++ 16 files changed, 359 insertions(+), 149 deletions(-) create mode 100644 mist/graphics_nibel/Makefile rename mist/{graphics_arbor => graphics_nibel}/elevator2_closed_top.png (100%) rename mist/{graphics_arbor => graphics_nibel}/elevator2_open_top.png (100%) rename mist/{graphics_arbor => graphics_nibel}/outside_elevator2_closed_w.png (100%) rename mist/{graphics_arbor => graphics_nibel}/outside_elevator2_e.png (100%) rename mist/{graphics_arbor => graphics_nibel}/outside_elevator2_open_w.png (100%) create mode 100644 mist/leveldata_nibel.inc create mode 100644 mist/nibel.s create mode 100644 mist/nibel_switches.s diff --git a/mist/Makefile b/mist/Makefile index 2c453de2..c10b6ad7 100644 --- a/mist/Makefile +++ b/mist/Makefile @@ -27,13 +27,14 @@ mist.dsk: HELLO LOADER MIST_TITLE MIST OCTAGON VIEWER \ $(DOS33) -y mist.dsk BSAVE -a 0xe00 SAVE0 $(DOS33) -y mist.dsk BSAVE -a 0x9000 ./audio/link_noise.btc LINK_NOISE.BTC -mist_side2.dsk: HELLO_DISK2 MECHE SELENA CHANNEL VIEWER ARBOR +mist_side2.dsk: HELLO_DISK2 MECHE SELENA CHANNEL VIEWER ARBOR NIBEL cp empty.dsk mist_side2.dsk $(DOS33) -y mist_side2.dsk SAVE A HELLO_DISK2 HELLO # $(DOS33) -y mist_side2.dsk BSAVE -a 0x2000 MECHE # $(DOS33) -y mist_side2.dsk BSAVE -a 0x2000 SELENA $(DOS33) -y mist_side2.dsk BSAVE -a 0x2000 CHANNEL $(DOS33) -y mist_side2.dsk BSAVE -a 0x2000 ARBOR + $(DOS33) -y mist_side2.dsk BSAVE -a 0x2000 NIBEL $(DOS33) -y mist_side2.dsk BSAVE -a 0x2000 VIEWER # $(DOS33) -y mist_side2.dsk BSAVE -a 0x9000 ./audio/link_noise.btc LINK_NOISE.BTC @@ -271,6 +272,19 @@ arbor.o: arbor.s zp.inc hardware.inc common_defines.inc \ leveldata_arbor.inc \ arbor_switches.s ca65 -o arbor.o arbor.s -l arbor.lst + +#### + +NIBEL: nibel.o + ld65 -o NIBEL nibel.o -C ../linker_scripts/apple2_2000.inc + +nibel.o: nibel.s zp.inc hardware.inc common_defines.inc \ + common_routines.inc \ + graphics_nibel/nibel_graphics.inc \ + leveldata_nibel.inc \ + nibel_switches.s + ca65 -o nibel.o nibel.s -l nibel.lst + #### graphics_island/mist_graphics.inc: @@ -283,4 +297,4 @@ clean: rm -f *~ *.o *.lst HELLO HELLO_DISK2 \ LOADER MIST_TITLE \ MIST OCTAGON \ - MECHE SELENA STONEY CHANNEL ARBOR + MECHE SELENA STONEY CHANNEL ARBOR NIBEL diff --git a/mist/arbor_switches.s b/mist/arbor_switches.s index ddd47921..b448b724 100644 --- a/mist/arbor_switches.s +++ b/mist/arbor_switches.s @@ -76,20 +76,16 @@ elevator2_handle: ; check for water power - lda LOCATION - cmp #ARBOR_INSIDE_ELEV2_CLOSED - beq elev2_goto_top - -elev2_goto_bottom: - lda #ARBOR_INSIDE_ELEV2_CLOSED - bne done_elev2_handle - -elev2_goto_top: - lda #ARBOR_IN_ELEV2_TOP_CLOSED - -done_elev2_handle: + lda #NIBEL_IN_ELEV2_TOP_CLOSED sta LOCATION - jmp change_location + + lda #LOAD_NIBEL + sta WHICH_LOAD + + lda #$ff + sta LEVEL_OVER + + rts ;========================= @@ -100,18 +96,7 @@ done_elev2_handle: elevator2_close_door: - lda LOCATION - cmp #ARBOR_INSIDE_ELEV2_OPEN - bne elev2_close_top - -elev2_close_bottom: lda #ARBOR_INSIDE_ELEV2_CLOSED - bne done_elev2_close_door - -elev2_close_top: - lda #ARBOR_IN_ELEV2_TOP_CLOSED - -done_elev2_close_door: sta LOCATION jmp change_location @@ -306,9 +291,9 @@ bottom_gate_open: ldy #LOCATION_WEST_BG lda #steps_bottom_open_w_lzsa - sta location32+1,Y ; ARBOR_STEPS_BOTTOM + sta location30+1,Y ; ARBOR_STEPS_BOTTOM jmp bottom_gate_done @@ -316,9 +301,9 @@ bottom_gate_closed: ldy #LOCATION_WEST_BG lda #steps_bottom_closed_w_lzsa - sta location32+1,Y ; ARBOR_STEPS_BOTTOM + sta location30+1,Y ; ARBOR_STEPS_BOTTOM bottom_gate_done: diff --git a/mist/common_defines.inc b/mist/common_defines.inc index d0b9bfff..6d4cdd0c 100644 --- a/mist/common_defines.inc +++ b/mist/common_defines.inc @@ -48,7 +48,8 @@ LOAD_CABIN = 8 LOAD_DENTIST = 9 LOAD_ARBOR = 10 LOAD_SHIPUP = 11 -LOAD_ENDING = 12 +LOAD_NIBEL = 12 +LOAD_ENDING = 13 @@ -386,12 +387,14 @@ ARBOR_DOORS = 23 ARBOR_DOORS_ELEV2_OPEN = 24 ARBOR_INSIDE_ELEV2_OPEN = 25 ARBOR_INSIDE_ELEV2_CLOSED= 26 -ARBOR_IN_ELEV2_TOP_CLOSED= 27 -ARBOR_IN_ELEV2_TOP_OPEN= 28 -ARBOR_STEPS_TOP = 29 -ARBOR_STEPS2 = 30 -ARBOR_STEPS1 = 31 -ARBOR_STEPS_BOTTOM = 32 -ARBOR_OUTSIDE_ELEV2_OPEN= 33 -ARBOR_OUTSIDE_ELEV2_CLOSED= 34 +ARBOR_STEPS_TOP = 27 +ARBOR_STEPS2 = 28 +ARBOR_STEPS1 = 29 +ARBOR_STEPS_BOTTOM = 30 + +; NIBEL, up in the clouds +NIBEL_IN_ELEV2_TOP_CLOSED= 0 +NIBEL_IN_ELEV2_TOP_OPEN= 1 +NIBEL_OUTSIDE_ELEV2_OPEN= 2 +NIBEL_OUTSIDE_ELEV2_CLOSED= 3 diff --git a/mist/common_routines.inc b/mist/common_routines.inc index 1438f785..b5fdf062 100644 --- a/mist/common_routines.inc +++ b/mist/common_routines.inc @@ -5,47 +5,47 @@ opendir_filename =$1039 ; audio.c -play_audio =$133e +play_audio =$1346 ; decompress_fast_v2.s -decompress_lzsa2_fast =$144f -getsrc_smc =$1545 +decompress_lzsa2_fast =$1457 +getsrc_smc =$154d ; draw_pointer.s -draw_pointer =$1552 +draw_pointer =$155a ; end_level.s -end_level =$1695 +end_level =$169d ; gr_copy.s -gr_copy_to_current =$16b7 +gr_copy_to_current =$16bf ; gr_fast_clear.s -clear_all =$181b -clear_all_color =$1840 +clear_all =$1823 +clear_all_color =$1848 ; gr_offsets.s -gr_offsets =$185e +gr_offsets =$1866 ; gr_page_flip.s -page_flip =$188e +page_flip =$1896 ; gr_putsprite_crop.s -put_sprite_crop =$18a8 +put_sprite_crop =$18b0 ; keyboard.s -handle_keypress =$19e4 -change_location =$1ac5 +handle_keypress =$19ec +change_location =$1acd ; text_print.s -move_and_print =$1b5d +move_and_print =$1b65 ; page_sprites.inc -blue_page_sprite =$1d2b -red_page_sprite =$1d77 -white_page_sprite =$1d8d -blue_page_small_sprite =$1da3 -red_page_small_sprite =$1dab +blue_page_sprite =$1d33 +red_page_sprite =$1d7f +white_page_sprite =$1d95 +blue_page_small_sprite =$1dab +red_page_small_sprite =$1db3 ; audio files linking_noise = $9000 diff --git a/mist/graphics_arbor/Makefile b/mist/graphics_arbor/Makefile index 863fa1ec..9aac0ce0 100644 --- a/mist/graphics_arbor/Makefile +++ b/mist/graphics_arbor/Makefile @@ -33,8 +33,6 @@ arbor_graphics.inc: \ doors_e.lzsa doors_closed_w.lzsa doors_open_w.lzsa \ doors_elev2_open_w.lzsa doors_open_elev2_closed_w.lzsa \ inside_elevator2_open.lzsa inside_elevator2_closed.lzsa \ - elevator2_open_top.lzsa elevator2_closed_top.lzsa \ - outside_elevator2_e.lzsa outside_elevator2_open_w.lzsa outside_elevator2_closed_w.lzsa \ steps_top_e.lzsa steps_top_w.lzsa \ steps1_e.lzsa steps1_w.lzsa \ steps2_e.lzsa steps2_w.lzsa \ @@ -97,11 +95,6 @@ arbor_graphics.inc: \ echo "doors_open_elev2_closed_w_lzsa: .incbin \"doors_open_elev2_closed_w.lzsa\"" >> arbor_graphics.inc echo "inside_elevator2_open_lzsa: .incbin \"inside_elevator2_open.lzsa\"" >> arbor_graphics.inc echo "inside_elevator2_closed_lzsa: .incbin \"inside_elevator2_closed.lzsa\"" >> arbor_graphics.inc - echo "elevator2_open_top_lzsa: .incbin \"elevator2_open_top.lzsa\"" >> arbor_graphics.inc - echo "elevator2_closed_top_lzsa: .incbin \"elevator2_closed_top.lzsa\"" >> arbor_graphics.inc - echo "outside_elevator2_e_lzsa: .incbin \"outside_elevator2_e.lzsa\"" >> arbor_graphics.inc - echo "outside_elevator2_open_w_lzsa: .incbin \"outside_elevator2_open_w.lzsa\"" >> arbor_graphics.inc - echo "outside_elevator2_closed_w_lzsa: .incbin \"outside_elevator2_closed_w.lzsa\"" >> arbor_graphics.inc echo "steps_top_e_lzsa: .incbin \"steps_top_e.lzsa\"" >> arbor_graphics.inc echo "steps_top_w_lzsa: .incbin \"steps_top_w.lzsa\"" >> arbor_graphics.inc echo "steps1_w_lzsa: .incbin \"steps1_w.lzsa\"" >> arbor_graphics.inc @@ -121,4 +114,4 @@ arbor_graphics.inc: \ #### clean: - rm -f *~ *.o *.lst *.gr *.lzsa channel_graphics.inc + rm -f *~ *.o *.lst *.gr *.lzsa arbor_graphics.inc diff --git a/mist/graphics_nibel/Makefile b/mist/graphics_nibel/Makefile new file mode 100644 index 00000000..e4d924d0 --- /dev/null +++ b/mist/graphics_nibel/Makefile @@ -0,0 +1,29 @@ +#include ../Makefile.inc + +PNG2RLE = ../../gr-utils/png2rle +PNG2GR = ../../gr-utils/png2gr +LZSA = ~/research/lzsa/lzsa/lzsa + +all: nibel_graphics.inc + +#### + +nibel_graphics.inc: \ + elevator2_open_top.lzsa elevator2_closed_top.lzsa \ + outside_elevator2_e.lzsa outside_elevator2_open_w.lzsa outside_elevator2_closed_w.lzsa + echo "elevator2_open_top_lzsa: .incbin \"elevator2_open_top.lzsa\"" > nibel_graphics.inc + echo "elevator2_closed_top_lzsa: .incbin \"elevator2_closed_top.lzsa\"" >> nibel_graphics.inc + echo "outside_elevator2_e_lzsa: .incbin \"outside_elevator2_e.lzsa\"" >> nibel_graphics.inc + echo "outside_elevator2_open_w_lzsa: .incbin \"outside_elevator2_open_w.lzsa\"" >> nibel_graphics.inc + echo "outside_elevator2_closed_w_lzsa: .incbin \"outside_elevator2_closed_w.lzsa\"" >> nibel_graphics.inc + +%.gr: %.png + $(PNG2GR) $< $@ + +%.lzsa: %.gr + $(LZSA) -r -f2 $< $@ + +#### + +clean: + rm -f *~ *.o *.lst *.gr *.lzsa nibel_graphics.inc diff --git a/mist/graphics_arbor/elevator2_closed_top.png b/mist/graphics_nibel/elevator2_closed_top.png similarity index 100% rename from mist/graphics_arbor/elevator2_closed_top.png rename to mist/graphics_nibel/elevator2_closed_top.png diff --git a/mist/graphics_arbor/elevator2_open_top.png b/mist/graphics_nibel/elevator2_open_top.png similarity index 100% rename from mist/graphics_arbor/elevator2_open_top.png rename to mist/graphics_nibel/elevator2_open_top.png diff --git a/mist/graphics_arbor/outside_elevator2_closed_w.png b/mist/graphics_nibel/outside_elevator2_closed_w.png similarity index 100% rename from mist/graphics_arbor/outside_elevator2_closed_w.png rename to mist/graphics_nibel/outside_elevator2_closed_w.png diff --git a/mist/graphics_arbor/outside_elevator2_e.png b/mist/graphics_nibel/outside_elevator2_e.png similarity index 100% rename from mist/graphics_arbor/outside_elevator2_e.png rename to mist/graphics_nibel/outside_elevator2_e.png diff --git a/mist/graphics_arbor/outside_elevator2_open_w.png b/mist/graphics_nibel/outside_elevator2_open_w.png similarity index 100% rename from mist/graphics_arbor/outside_elevator2_open_w.png rename to mist/graphics_nibel/outside_elevator2_open_w.png diff --git a/mist/leveldata_arbor.inc b/mist/leveldata_arbor.inc index 23d0c218..260c1411 100644 --- a/mist/leveldata_arbor.inc +++ b/mist/leveldata_arbor.inc @@ -10,9 +10,7 @@ locations: .word location16,location17,location18,location19 .word location20,location21,location22,location23 .word location24,location25,location26,location27 - .word location28,location29,location30,location31 - .word location32,location33,location34 - + .word location28,location29,location30 ; ARBOR_INSIDE_ELEV1 -- arrival in elevator1 location0: @@ -497,49 +495,8 @@ location26: .byte 28,36 ; special y .word elevator2_handle-1 ; special function - -; ARBOR_IN_ELEV2_TOP_CLOSED -- inside elevator2 at top, door closed -location27: - .byte $ff ; north exit - .byte $ff ; south exit - .byte ARBOR_IN_ELEV2_TOP_OPEN ; east exit - .byte $ff ; west exit - .byte $ff ; north exit_dir - .byte $ff ; south exit_dir - .byte DIRECTION_E ; east exit_dir - .byte $ff ; west exit_dir - .word $0000 ; north bg - .word $0000 ; south bg - .word elevator2_closed_top_lzsa ; east bg - .word $0000 ; west bg - .byte BG_EAST - .byte DIRECTION_E ; special exit - .byte 28,34 ; special x - .byte 28,36 ; special y - .word elevator2_handle-1 ; special function - -; ARBOR_IN_ELEV2_TOP_OPEN -- inside elevator2 at top, door open -location28: - .byte $ff ; north exit - .byte $ff ; south exit - .byte ARBOR_OUTSIDE_ELEV2_CLOSED ; east exit - .byte $ff ; west exit - .byte $ff ; north exit_dir - .byte $ff ; south exit_dir - .byte DIRECTION_E ; east exit_dir - .byte $ff ; west exit_dir - .word $0000 ; north bg - .word $0000 ; south bg - .word elevator2_open_top_lzsa ; east bg - .word $0000 ; west bg - .byte BG_EAST - .byte DIRECTION_E ; special exit - .byte 10,17 ; special x - .byte 6,46 ; special y - .word elevator2_close_door-1 ; special function - ; ARBOR_STEPS_TOP -- top of steps -location29: +location27: .byte $ff ; north exit .byte $ff ; south exit .byte ARBOR_DOORS ; east exit @@ -556,7 +513,7 @@ location29: .byte $ff ; ARBOR_STEPS2 -- down steps -location30: +location28: .byte $ff ; north exit .byte $ff ; south exit .byte ARBOR_STEPS_TOP ; east exit @@ -573,7 +530,7 @@ location30: .byte $ff ; ARBOR_STEPS1 -- down steps further -location31: +location29: .byte $ff ; north exit .byte $ff ; south exit .byte ARBOR_STEPS2 ; east exit @@ -590,7 +547,7 @@ location31: .byte $ff ; ARBOR_STEPS_BOTTOM -- bottom of steps -location32: +location30: .byte $ff ; north exit .byte $ff ; south exit .byte ARBOR_STEPS1 ; east exit @@ -610,37 +567,3 @@ location32: .word stair_gate-1 ; special function -; ARBOR_OUTSIDE_ELEV2_OPEN -- outside of elevator2 at top, door open -location33: - .byte $ff ; north exit - .byte $ff ; south exit - .byte $ff ; east exit - .byte ARBOR_IN_ELEV2_TOP_OPEN ; west exit - .byte $ff ; north exit_dir - .byte $ff ; south exit_dir - .byte DIRECTION_E ; east exit_dir - .byte DIRECTION_E ; west exit_dir - .word $0000 ; north bg - .word $0000 ; south bg - .word outside_elevator2_e_lzsa ; east bg - .word outside_elevator2_open_w_lzsa ; west bg - .byte BG_EAST|BG_WEST - .byte $ff - -; ARBOR_OUTSIDE_ELEV2_CLOSED -- outside of elevator2 at top, door closed -location34: - .byte $ff ; north exit - .byte $ff ; south exit - .byte $ff ; east exit - .byte ARBOR_OUTSIDE_ELEV2_OPEN ; west exit - .byte $ff ; north exit_dir - .byte $ff ; south exit_dir - .byte DIRECTION_E ; east exit_dir - .byte DIRECTION_W ; west exit_dir - .word $0000 ; north bg - .word $0000 ; south bg - .word outside_elevator2_e_lzsa ; east bg - .word outside_elevator2_closed_w_lzsa ; west bg - .byte BG_EAST|BG_WEST - .byte $ff - diff --git a/mist/leveldata_nibel.inc b/mist/leveldata_nibel.inc new file mode 100644 index 00000000..33c88a3d --- /dev/null +++ b/mist/leveldata_nibel.inc @@ -0,0 +1,81 @@ +;=============================================== +; level data for Nibel clouds +;=============================================== + +locations: + .word location0, location1, location2, location3 + +; NIBEL_IN_ELEV2_TOP_CLOSED -- inside elevator2 at top, door closed +location0: + .byte $ff ; north exit + .byte $ff ; south exit + .byte NIBEL_IN_ELEV2_TOP_OPEN ; east exit + .byte $ff ; west exit + .byte $ff ; north exit_dir + .byte $ff ; south exit_dir + .byte DIRECTION_E ; east exit_dir + .byte $ff ; west exit_dir + .word $0000 ; north bg + .word $0000 ; south bg + .word elevator2_closed_top_lzsa ; east bg + .word $0000 ; west bg + .byte BG_EAST + .byte DIRECTION_E ; special exit + .byte 28,34 ; special x + .byte 28,36 ; special y + .word elevator2_handle-1 ; special function + +; NIBEL_IN_ELEV2_TOP_OPEN -- inside elevator2 at top, door open +location1: + .byte $ff ; north exit + .byte $ff ; south exit + .byte NIBEL_OUTSIDE_ELEV2_CLOSED ; east exit + .byte $ff ; west exit + .byte $ff ; north exit_dir + .byte $ff ; south exit_dir + .byte DIRECTION_E ; east exit_dir + .byte $ff ; west exit_dir + .word $0000 ; north bg + .word $0000 ; south bg + .word elevator2_open_top_lzsa ; east bg + .word $0000 ; west bg + .byte BG_EAST + .byte DIRECTION_E ; special exit + .byte 10,17 ; special x + .byte 6,46 ; special y + .word elevator2_close_door-1 ; special function + +; NIBEL_OUTSIDE_ELEV2_OPEN -- outside of elevator2 at top, door open +location2: + .byte $ff ; north exit + .byte $ff ; south exit + .byte $ff ; east exit + .byte NIBEL_IN_ELEV2_TOP_OPEN ; west exit + .byte $ff ; north exit_dir + .byte $ff ; south exit_dir + .byte DIRECTION_E ; east exit_dir + .byte DIRECTION_E ; west exit_dir + .word $0000 ; north bg + .word $0000 ; south bg + .word outside_elevator2_e_lzsa ; east bg + .word outside_elevator2_open_w_lzsa ; west bg + .byte BG_EAST|BG_WEST + .byte $ff + +; NIBEL_OUTSIDE_ELEV2_CLOSED -- outside of elevator2 at top, door closed +location3: + .byte $ff ; north exit + .byte $ff ; south exit + .byte $ff ; east exit + .byte NIBEL_OUTSIDE_ELEV2_OPEN ; west exit + .byte $ff ; north exit_dir + .byte $ff ; south exit_dir + .byte DIRECTION_E ; east exit_dir + .byte DIRECTION_W ; west exit_dir + .word $0000 ; north bg + .word $0000 ; south bg + .word outside_elevator2_e_lzsa ; east bg + .word outside_elevator2_closed_w_lzsa ; west bg + .byte BG_EAST|BG_WEST + .byte $ff + diff --git a/mist/loader.s b/mist/loader.s index 4532449e..c55ec4fd 100644 --- a/mist/loader.s +++ b/mist/loader.s @@ -144,7 +144,8 @@ filenames: .word intro_filename .word mist_filename,meche_filename,selena_filename,octagon_filename .word viewer_filename,stoney_filename,channel_filename,cabin_filename - .word dentist_filename,arbor_filename,shipup_filename,ending_filename + .word dentist_filename,arbor_filename,shipup_filename,nibel_filename + .word ending_filename intro_filename: .byte "MIST_TITLE",0 @@ -170,6 +171,8 @@ arbor_filename: .byte "ARBOR",0 shipup_filename: .byte "SHIPUP",0 +nibel_filename: + .byte "NIBEL",0 ending_filename: .byte "ENDING",0 diff --git a/mist/nibel.s b/mist/nibel.s new file mode 100644 index 00000000..061b93a3 --- /dev/null +++ b/mist/nibel.s @@ -0,0 +1,135 @@ +; The third level of Channely Wood + +; Nibelheim, home in the clouds + +; by deater (Vince Weaver) + +; Zero Page + .include "zp.inc" + .include "hardware.inc" + .include "common_defines.inc" + .include "common_routines.inc" + +nibel_start: + ;=================== + ; init screen + jsr TEXT + jsr HOME + bit KEYRESET + + bit SET_GR + bit PAGE0 + bit LORES + bit FULLGR + + ;================= + ; set up location + ;================= + + lda #locations + sta LOCATIONS_H + + + 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 #CHANNEL_BOOK_OPEN +; beq animate_mist_book + +; jmp nothing_special + +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 + + ;========================== + ; includes + ;========================== + + ; level graphics + .include "graphics_nibel/nibel_graphics.inc" + + ; puzzles + .include "nibel_switches.s" + + ; level data + .include "leveldata_nibel.inc" + + diff --git a/mist/nibel_switches.s b/mist/nibel_switches.s new file mode 100644 index 00000000..51420873 --- /dev/null +++ b/mist/nibel_switches.s @@ -0,0 +1,44 @@ + + +;============================= +;============================= +; elevator2 handle pulled +;============================= +;============================= + + +; FIXME: check for water power +; FIXME: animate +elevator2_handle: + + ; click speaker + bit SPEAKER + + ; check for water power + + lda #ARBOR_INSIDE_ELEV2_CLOSED + sta LOCATION + + lda #LOAD_ARBOR + sta WHICH_LOAD + + lda #$ff + sta LEVEL_OVER + + rts + + +;========================= +;========================= +; close elevator2 door +;========================= +;========================= + +elevator2_close_door: + + lda #NIBEL_IN_ELEV2_TOP_CLOSED + sta LOCATION + jmp change_location + + +