;=================================== ; where do we point? ;=================================== ; check to see if cursor is in any of zones where_do_we_point: ldy #LOCATION_NUM_AREAS lda (LOCATION_STRUCT_L),Y tax ; num areas in X ldy #LOCATION_AREAS where_loop: lda CURSOR_X clc adc #3 ; center of cursor is 3 over cmp (LOCATION_STRUCT_L),Y bcc where_notxlow ; too far left iny cmp (LOCATION_STRUCT_L),Y bcs where_notxhigh ; too far right iny lda CURSOR_Y clc adc #4 ; center of cursor 4 down? cmp (LOCATION_STRUCT_L),Y bcc where_notylow ; too far up iny ; cmp CURSOR_Y cmp (LOCATION_STRUCT_L),Y bcs where_notyhigh ; too far right iny ; we got this far, was a match lda (LOCATION_STRUCT_L),Y sta NOUN_L iny lda (LOCATION_STRUCT_L),Y sta NOUN_H iny lda (LOCATION_STRUCT_L),Y sta NOUN_VECTOR_L iny lda (LOCATION_STRUCT_L),Y sta NOUN_VECTOR_H lda #1 sta VALID_NOUN rts ; update area pointer where_notxlow: iny where_notxhigh: iny where_notylow: iny where_notyhigh: iny iny iny iny iny dex bne where_loop point_nowhere: lda #0 sta VALID_NOUN rts lookout_action: lda CURRENT_VERB asl tay lda lookout_actions,Y cmp #$ff beq lookout_nothing sta MESSAGE_L lda lookout_actions+1,Y sta MESSAGE_H jmp do_display_message lookout_nothing: lda #VERB_WALK sta CURRENT_VERB rts lookout_actions: .word $FFFF ; give .word doesnt_open ; open .word doesnt_work ; close .word $FFFF ; pick_up .word lookout_look ; look_at .word lookout_talk ; talk_to .word doesnt_work ; use .word icant_move ; push .word icant_move ; pull ;0123456789012345678901234567890123456789 lookout_look: .byte 7,21,"I THINK HE MIGHT BE ASLEEP.",0 lookout_talk: .byte 16,21,"YIKES!!",0 doesnt_open: .byte 9,21,"IT DOESN'T SEEM TO OPEN.",0 doesnt_work: .byte 12,21,"THAT DOESN'T WORK.",0 icant_move: .byte 12,21,"I CAN'T MOVE IT.",0 cant_pick_up: .byte 10,21,"I CAN'T PICK THAT UP.",0 not_special: .byte 1,21,"I DON'T SEE ANYTHING SPECIAL ABOUT IT.",0 for_what: .byte 15,21,"FOR WHAT?",0 ;============================= ; can't do anything with path ; real game they all make you walk there path_action: path_nothing: lda #VERB_WALK sta CURRENT_VERB rts ;============================= ; can't do anything with stairs ; real game they all make you walk there stairs_action: stairs_nothing: lda #VERB_WALK sta CURRENT_VERB rts ;====================== ; door door_action: lda CURRENT_VERB cmp #VERB_OPEN bne check_door_close lda #1 sta BAR_DOOR_OPEN jmp door_nothing check_door_close: cmp #VERB_CLOSE bne door_common lda #0 sta BAR_DOOR_OPEN jmp door_nothing door_common: asl tay lda door_actions,Y cmp #$ff beq door_nothing sta MESSAGE_L lda door_actions+1,Y sta MESSAGE_H jmp do_display_message door_nothing: lda #VERB_WALK sta CURRENT_VERB rts door_actions: .word $FFFF ; give .word $FFFF ; open .word $FFFF ; close .word cant_pick_up ; pick_up .word not_special ; look_at .word $FFFF ; talk_to .word doesnt_work ; use .word icant_move ; push .word icant_move ; pull rts moon_action: moon_nothing: lda #VERB_WALK sta CURRENT_VERB rts ;============================= ; can't do anything with cliffside ; real game they all make you walk there cliffside_action: cliffside_nothing: lda #VERB_WALK sta CURRENT_VERB rts poster_action: lda CURRENT_VERB asl tay lda poster_actions,Y cmp #$ff beq poster_nothing sta MESSAGE_L lda poster_actions+1,Y sta MESSAGE_H jmp do_display_message poster_nothing: lda #VERB_WALK sta CURRENT_VERB rts poster_actions: .word $FFFF ; give .word doesnt_open ; open .word doesnt_work ; close .word cant_pick_up ; pick_up .word poster_look ; look_at .word $FFFF ; talk_to .word doesnt_work ; use .word icant_move ; push .word icant_move ; pull poster_look: .byte 8,21,"RE-ELECT GOVERNOR MARLEY.",0 ;============================= map_action: map_nothing: lda #VERB_WALK sta CURRENT_VERB rts do_display_message: lda #1 sta DISPLAY_MESSAGE lda #0 sta CURSOR_VISIBLE lda #VERB_WALK sta CURRENT_VERB rts