diff --git a/mist/common_defines.inc b/mist/common_defines.inc index 9cdecde3..00c76b59 100644 --- a/mist/common_defines.inc +++ b/mist/common_defines.inc @@ -406,8 +406,9 @@ NIBEL_RED_PATH1 = 9 NIBEL_RED_DOOR_CLOSED = 10 NIBEL_RED_DOOR_OPEN = 11 NIBEL_RED_ROOM = 12 -NIBEL_RED_BED = 13 -NIBEL_RED_BED_OPEN = 14 -NIBEL_RED_TABLE = 15 -NIBEL_RED_TABLE_OPEN = 16 +NIBEL_RED_TABLE = 13 +NIBEL_RED_TABLE_OPEN = 14 +NIBEL_RED_BED = 15 +NIBEL_RED_BED_OPEN = 16 + diff --git a/mist/graphics_nibel/Makefile b/mist/graphics_nibel/Makefile index 2f9cfabe..3baf178b 100644 --- a/mist/graphics_nibel/Makefile +++ b/mist/graphics_nibel/Makefile @@ -15,7 +15,11 @@ nibel_graphics.inc: \ blue_path2_n.lzsa blue_path2_s.lzsa \ blue_path3_n.lzsa blue_path3_s.lzsa \ blue_house_n.lzsa blue_house_s.lzsa blue_house_e.lzsa blue_house_w.lzsa \ - projector_e.lzsa + projector_e.lzsa \ + red_path1_e.lzsa red_path1_w.lzsa \ + red_room_n.lzsa red_room_s.lzsa red_room_e.lzsa red_room_w.lzsa \ + red_door_e.lzsa red_door_closed_w.lzsa red_door_open_w.lzsa \ + red_room_table_s.lzsa red_room_table_open_s.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 @@ -32,9 +36,17 @@ nibel_graphics.inc: \ echo "blue_house_e_lzsa: .incbin \"blue_house_e.lzsa\"" >> nibel_graphics.inc echo "blue_house_w_lzsa: .incbin \"blue_house_w.lzsa\"" >> nibel_graphics.inc echo "projector_e_lzsa: .incbin \"projector_e.lzsa\"" >> nibel_graphics.inc - - - + echo "red_path1_e_lzsa: .incbin \"red_path1_e.lzsa\"" >> nibel_graphics.inc + echo "red_path1_w_lzsa: .incbin \"red_path1_w.lzsa\"" >> nibel_graphics.inc + echo "red_room_n_lzsa: .incbin \"red_room_n.lzsa\"" >> nibel_graphics.inc + echo "red_room_s_lzsa: .incbin \"red_room_s.lzsa\"" >> nibel_graphics.inc + echo "red_room_e_lzsa: .incbin \"red_room_e.lzsa\"" >> nibel_graphics.inc + echo "red_room_w_lzsa: .incbin \"red_room_w.lzsa\"" >> nibel_graphics.inc + echo "red_door_e_lzsa: .incbin \"red_door_e.lzsa\"" >> nibel_graphics.inc + echo "red_door_open_w_lzsa: .incbin \"red_door_open_w.lzsa\"" >> nibel_graphics.inc + echo "red_door_closed_w_lzsa: .incbin \"red_door_closed_w.lzsa\"" >> nibel_graphics.inc + echo "red_room_table_s_lzsa: .incbin \"red_room_table_s.lzsa\"" >> nibel_graphics.inc + echo "red_room_table_open_s_lzsa: .incbin \"red_room_table_open_s.lzsa\"" >> nibel_graphics.inc %.gr: %.png diff --git a/mist/graphics_nibel/red_door_closed_w.png b/mist/graphics_nibel/red_door_closed_w.png new file mode 100644 index 00000000..16813c00 Binary files /dev/null and b/mist/graphics_nibel/red_door_closed_w.png differ diff --git a/mist/graphics_nibel/red_door_e.png b/mist/graphics_nibel/red_door_e.png new file mode 100644 index 00000000..aac649f8 Binary files /dev/null and b/mist/graphics_nibel/red_door_e.png differ diff --git a/mist/graphics_nibel/red_door_open_w.png b/mist/graphics_nibel/red_door_open_w.png new file mode 100644 index 00000000..84961dd1 Binary files /dev/null and b/mist/graphics_nibel/red_door_open_w.png differ diff --git a/mist/graphics_nibel/red_path1_e.png b/mist/graphics_nibel/red_path1_e.png new file mode 100644 index 00000000..f125a018 Binary files /dev/null and b/mist/graphics_nibel/red_path1_e.png differ diff --git a/mist/graphics_nibel/red_path1_w.png b/mist/graphics_nibel/red_path1_w.png new file mode 100644 index 00000000..78904bb0 Binary files /dev/null and b/mist/graphics_nibel/red_path1_w.png differ diff --git a/mist/graphics_nibel/red_room_e.png b/mist/graphics_nibel/red_room_e.png new file mode 100644 index 00000000..041bc879 Binary files /dev/null and b/mist/graphics_nibel/red_room_e.png differ diff --git a/mist/graphics_nibel/red_room_n.png b/mist/graphics_nibel/red_room_n.png new file mode 100644 index 00000000..b39d6c17 Binary files /dev/null and b/mist/graphics_nibel/red_room_n.png differ diff --git a/mist/graphics_nibel/red_room_s.png b/mist/graphics_nibel/red_room_s.png new file mode 100644 index 00000000..5b7edae2 Binary files /dev/null and b/mist/graphics_nibel/red_room_s.png differ diff --git a/mist/graphics_nibel/red_room_table_open_s.png b/mist/graphics_nibel/red_room_table_open_s.png new file mode 100644 index 00000000..1852dd69 Binary files /dev/null and b/mist/graphics_nibel/red_room_table_open_s.png differ diff --git a/mist/graphics_nibel/red_room_table_s.png b/mist/graphics_nibel/red_room_table_s.png new file mode 100644 index 00000000..29ac2c51 Binary files /dev/null and b/mist/graphics_nibel/red_room_table_s.png differ diff --git a/mist/graphics_nibel/red_room_w.png b/mist/graphics_nibel/red_room_w.png new file mode 100644 index 00000000..c597f513 Binary files /dev/null and b/mist/graphics_nibel/red_room_w.png differ diff --git a/mist/leveldata_nibel.inc b/mist/leveldata_nibel.inc index 8a028d6e..23a3ae97 100644 --- a/mist/leveldata_nibel.inc +++ b/mist/leveldata_nibel.inc @@ -5,7 +5,8 @@ locations: .word location0, location1, location2, location3 .word location4, location5, location6, location7 - .word location8 + .word location8, location9, location10,location11 + .word location12,location13,location14 ; NIBEL_IN_ELEV2_TOP_CLOSED -- inside elevator2 at top, door closed location0: @@ -52,24 +53,28 @@ location2: .byte $ff ; north exit .byte $ff ; south exit .byte NIBEL_BLUE_PATH1 ; east exit - .byte NIBEL_IN_ELEV2_TOP_OPEN ; west exit + .byte NIBEL_RED_PATH1 ; west exit .byte $ff ; north exit_dir .byte $ff ; south exit_dir .byte DIRECTION_S ; east exit_dir - .byte DIRECTION_E ; west 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_open_w_lzsa ; west bg .byte BG_EAST|BG_WEST - .byte $ff + .byte DIRECTION_W ; special exit + .byte 5,15 ; special x + .byte 8,34 ; special y + .word nibel_getin_elevator-1 ; special function + ; NIBEL_OUTSIDE_ELEV2_CLOSED -- outside of elevator2 at top, door closed location3: .byte $ff ; north exit .byte $ff ; south exit .byte NIBEL_BLUE_PATH1 ; east exit - .byte NIBEL_OUTSIDE_ELEV2_OPEN ; west exit + .byte NIBEL_RED_PATH1 ; west exit .byte $ff ; north exit_dir .byte $ff ; south exit_dir .byte DIRECTION_S ; east exit_dir @@ -79,7 +84,10 @@ location3: .word outside_elevator2_e_lzsa ; east bg .word outside_elevator2_closed_w_lzsa ; west bg .byte BG_EAST|BG_WEST - .byte $ff + .byte DIRECTION_W ; special exit + .byte 5,15 ; special x + .byte 8,34 ; special y + .word nibel_open_elevator-1 ; special function ; NIBEL_BLUE_PATH1 -- path 1 to blue house location4: @@ -152,8 +160,6 @@ location7: .byte 40,46 ; special y .word nibel_take_blue_page-1 ; special function - - ; NIBEL_BLUE_HOUSE_VIEWER -- blue house viewer machine location8: .byte $ff ; north exit @@ -174,3 +180,111 @@ location8: .byte 34,40 ; special y .word projector_button-1 ; special function +; NIBEL_RED_PATH1 -- path 1 to red house +location9: + .byte $ff ; north exit + .byte $ff ; south exit + .byte NIBEL_OUTSIDE_ELEV2_CLOSED ; east exit + .byte NIBEL_RED_DOOR_CLOSED ; 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 red_path1_e_lzsa ; east bg + .word red_path1_w_lzsa ; west bg + .byte BG_EAST|BG_WEST + .byte $ff + +; NIBEL_RED_DOOR_CLOSED -- outside red house +location10: + .byte $ff ; north exit + .byte $ff ; south exit + .byte NIBEL_RED_PATH1 ; east exit + .byte NIBEL_RED_DOOR_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 red_door_e_lzsa ; east bg + .word red_door_closed_w_lzsa ; west bg + .byte BG_EAST|BG_WEST + .byte $ff + +; NIBEL_RED_DOOR_OPEN -- outside red house, door open +location11: + .byte $ff ; north exit + .byte $ff ; south exit + .byte NIBEL_RED_PATH1 ; east exit + .byte NIBEL_RED_ROOM ; 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 red_door_e_lzsa ; east bg + .word red_door_open_w_lzsa ; west bg + .byte BG_EAST|BG_WEST + .byte $ff + +; NIBEL_RED_ROOM -- inside red room +location12: + .byte $ff ; north exit + .byte NIBEL_RED_TABLE ; south exit + .byte NIBEL_RED_DOOR_CLOSED ; east exit + .byte $ff ; west exit + .byte $ff ; north exit_dir + .byte DIRECTION_S ; south exit_dir + .byte DIRECTION_E ; east exit_dir + .byte $ff ; west exit_dir + .word red_room_n_lzsa ; north bg + .word red_room_s_lzsa ; south bg + .word red_room_e_lzsa ; east bg + .word red_room_w_lzsa ; west bg + .byte BG_NORTH|BG_SOUTH|BG_EAST|BG_WEST + .byte $ff + +; NIBEL_RED_TABLE -- windmill table closeup +location13: + .byte $ff ; north exit + .byte NIBEL_RED_ROOM ; south exit + .byte $ff ; east exit + .byte $ff ; west exit + .byte $ff ; north exit_dir + .byte DIRECTION_S ; south exit_dir + .byte $ff ; east exit_dir + .byte $ff ; west exit_dir + .word $0000 ; north bg + .word red_room_table_s_lzsa ; south bg + .word $0000 ; east bg + .word $0000 ; west bg + .byte BG_SOUTH + .byte DIRECTION_S ; special exit + .byte 10,30 ; special x + .byte 34,44 ; special y + .word nibel_open_drawer-1 ; special function + + +; NIBEL_RED_TABLE_OPEN -- windmill table closeup, open with red page +location14: + .byte $ff ; north exit + .byte NIBEL_RED_ROOM ; south exit + .byte $ff ; east exit + .byte $ff ; west exit + .byte $ff ; north exit_dir + .byte DIRECTION_S ; south exit_dir + .byte $ff ; east exit_dir + .byte $ff ; west exit_dir + .word $0000 ; north bg + .word red_room_table_open_s_lzsa ; south bg + .word $0000 ; east bg + .word $0000 ; west bg + .byte BG_SOUTH + .byte DIRECTION_S ; special exit + .byte 12,20 ; special x + .byte 36,46 ; special y + .word nibel_take_red_page-1 ; special function diff --git a/mist/nibel.s b/mist/nibel.s index bda4ba4d..bfb4ea26 100644 --- a/mist/nibel.s +++ b/mist/nibel.s @@ -75,6 +75,8 @@ game_loop: lda LOCATION cmp #NIBEL_BLUE_ROOM beq fg_draw_blue_page + cmp #NIBEL_RED_TABLE_OPEN + beq fg_draw_red_page cmp #NIBEL_BLUE_HOUSE_VIEWER beq animate_viewer @@ -84,6 +86,11 @@ fg_draw_blue_page: jsr draw_blue_page jmp nothing_special +fg_draw_red_page: + jsr draw_red_page + jmp nothing_special + + animate_viewer: lda ANIMATE_FRAME beq nothing_special diff --git a/mist/nibel_switches.s b/mist/nibel_switches.s index 84b6d996..29d2ca40 100644 --- a/mist/nibel_switches.s +++ b/mist/nibel_switches.s @@ -75,6 +75,29 @@ no_draw_page: rts + +draw_red_page: + lda DIRECTION + cmp #DIRECTION_S + bne no_draw_page + + lda RED_PAGES_TAKEN + and #CHANNEL_PAGE + bne no_draw_page + + lda #13 + sta XPOS + lda #36 + sta YPOS + + lda #red_page_sprite + sta INH + + jmp put_sprite_crop ; tail call + + projector_button: lda DRAW_PAGE @@ -179,6 +202,41 @@ done_buttons: rts + ;============================= + ; open the elevator door + ;============================= +nibel_open_elevator: + + lda #NIBEL_OUTSIDE_ELEV2_OPEN + sta LOCATION + + jmp change_location + + ;============================= + ; get into the elevator + ;============================= +nibel_getin_elevator: + + lda #NIBEL_IN_ELEV2_TOP_OPEN + sta LOCATION + + lda #DIRECTION_E + sta DIRECTION + + jmp change_location + + + + ;============================= + ; open the drawer in red room + ;============================= +nibel_open_drawer: + + lda #NIBEL_RED_TABLE_OPEN + sta LOCATION + + jmp change_location + ; viewer