mist: nibel: can get the red page

This commit is contained in:
Vince Weaver 2020-07-01 17:30:57 -04:00
parent c369209b1b
commit cadf5fc8a8
16 changed files with 208 additions and 16 deletions

View File

@ -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

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -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

View File

@ -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

View File

@ -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 INL
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