diff --git a/monkey/TODO b/monkey/TODO index 78686dab..5c103d28 100644 --- a/monkey/TODO +++ b/monkey/TODO @@ -1,20 +1,24 @@ overall: - + have big/small/tiny guybrush + better bounds checking on paths hook up actions: + scumm bar1 +foreground: + + church + + voodoo chicken + + bar1 + animations: + fire in scumm bar + impt pirate drinking + guy on chandelier + dog? + + poodle dogs + + voodoo smoke hookup rooms: - + church - + path to mansion - + mansion + + voodoo shop + voodoo lady cutscenes: diff --git a/monkey/guy.brush b/monkey/guy.brush index 8006e954..0a08c02c 100644 --- a/monkey/guy.brush +++ b/monkey/guy.brush @@ -84,6 +84,10 @@ guybrush_left2_sprite: .byte $f0,$ff,$AA .byte $0f,$A0,$AA +guybrush_medium_sprite: +.byte 1,2 +.byte $fd +.byte $0f guybrush_map_sprite: .byte 1,1 diff --git a/monkey/keyboard.s b/monkey/keyboard.s index c6a7b161..4ea29e2a 100644 --- a/monkey/keyboard.s +++ b/monkey/keyboard.s @@ -493,7 +493,6 @@ change_location: lda (LOCATION_STRUCT_L),Y sta keep_in_bounds_smc+2 - ldy #LOCATION_SIZE lda (LOCATION_STRUCT_L),Y sta GUYBRUSH_SIZE diff --git a/monkey/leveldata_monkey.inc b/monkey/leveldata_monkey.inc index 052f15d4..c176e0bf 100644 --- a/monkey/leveldata_monkey.inc +++ b/monkey/leveldata_monkey.inc @@ -262,13 +262,29 @@ location8: .word church_adjust_destination ; destination .word church_check_exit ; exit .word church_check_bounds ; bounds check - .byte GUYBRUSH_BIG ; size - .byte 1 ; num areas + .byte GUYBRUSH_SMALL ; size + .byte 4 ; num areas - .byte 9,14 ; x - .byte 20,32 ; y + .byte 6,10 ; x + .byte 20,28 ; y .word door_string ; name - .word door_action-1 ; action + .word church_door_action-1 ; action + + .byte 14,18 ; x + .byte 20,30 ; y + .word alley_string ; name + .word alley_action-1 ; action + + .byte 22,25 ; x + .byte 26,34 ; y + .word door_string ; name + .word church_door_action-1 ; action + + .byte 34,38 ; x + .byte 16,34 ; y + .word archway_string ; name + .word archway_action-1 ; action + ; MONKEY_MANSION_PATH -- path to the mansion location9: @@ -276,13 +292,24 @@ location9: .word mansion_path_adjust_destination ; destination .word mansion_path_check_exit ; exit .word mansion_path_check_bounds ; bounds check - .byte GUYBRUSH_BIG ; size - .byte 1 ; num areas + .byte GUYBRUSH_SMALL ; size + .byte 3 ; num areas + + .byte 0,11 ; x + .byte 0,12 ; y + .word mansion_string ; name + .word mansion_action-1 ; action + + .byte 9,11 ; x + .byte 12,13 ; y + .word poodles_string ; name + .word poodles_action-1 ; action + + .byte 32,40 ; x + .byte 12,40 ; y + .word town_string ; name + .word town_action-1 ; action - .byte 9,14 ; x - .byte 20,32 ; y - .word door_string ; name - .word door_action-1 ; action ; MONKEY_MANSION -- governor's mansion location10: @@ -291,12 +318,17 @@ location10: .word mansion_check_exit ; exit .word mansion_check_bounds ; bounds check .byte GUYBRUSH_BIG ; size - .byte 1 ; num areas + .byte 2 ; num areas - .byte 9,14 ; x - .byte 20,32 ; y - .word door_string ; name - .word door_action-1 ; action + .byte 37,40 ; x + .byte 10,38 ; y + .word trail_string ; name + .word trail_action-1 ; action + + .byte 5,15 ; x + .byte 30,38 ; y + .word poodles_string ; name + .word poodles_action-1 ; action ; MONKEY_ZIPLINE -- hook's zipline @@ -357,6 +389,17 @@ door_string: .byte 20,20,"DOOR",0 pirate_string: .byte 20,20,"PIRATE",0 pirates_string: .byte 20,20,"PIRATES",0 +; church strings +alley_string: .byte 20,20,"ALLEY",0 + +; mansion path strings +mansion_string: .byte 20,20,"GOVERNOR'S MANSION",0 +town_string: .byte 20,20,"TOWN",0 + +; mansion strings +poodles_string: .byte 20,20,"PIRANHA POODLES",0 +trail_string: .byte 20,20,"TRAIL",0 + ; zipline strings pole_string: .byte 20,20,"POLE",0 cable_string: .byte 20,20,"CABLE",0 diff --git a/monkey/monkey.s b/monkey/monkey.s index 75f41014..d8dffb26 100644 --- a/monkey/monkey.s +++ b/monkey/monkey.s @@ -50,8 +50,9 @@ monkey_start: ; set up initial location - lda #MONKEY_BAR +; lda #MONKEY_BAR ; lda #MONKEY_LOOKOUT + lda #MONKEY_VOODOO1 sta LOCATION jsr change_location @@ -182,14 +183,24 @@ done_move_guybrush: lda GUYBRUSH_Y sta YPOS - lda LOCATION - cmp #MONKEY_MAP - bne big_guybrush + lda GUYBRUSH_SIZE + cmp #GUYBRUSH_BIG + beq big_guybrush + + lda GUYBRUSH_SIZE + cmp #GUYBRUSH_TINY + beq map_guybrush + +small_guybrush: + lda #guybrush_medium_sprite + jmp really_draw_guybrush + map_guybrush: lda #guybrush_map_sprite - sta INH jmp really_draw_guybrush big_guybrush: @@ -204,8 +215,9 @@ big_guybrush: lda guybrush_sprites,Y sta INL lda guybrush_sprites+1,Y - sta INH + really_draw_guybrush: + sta INH jsr put_sprite_crop diff --git a/monkey/monkey_church.s b/monkey/monkey_church.s index dc4c8a9e..510d666b 100644 --- a/monkey/monkey_church.s +++ b/monkey/monkey_church.s @@ -16,10 +16,10 @@ church_check_exit: church_to_mansion_path: lda #MONKEY_MANSION_PATH sta LOCATION - lda #34 + lda #26 sta GUYBRUSH_X sta DESTINATION_X - lda #20 + lda #24 sta GUYBRUSH_Y sta DESTINATION_Y jsr change_location @@ -48,14 +48,14 @@ church_no_exit: ;========================== ;========================== church_adjust_destination: - ; just make Y always 20 + ; just make Y always 32 ch_check_y: ; if x < 28, Y must be between 16 and 18 ; if x < 35, Y must be between 8 and 28 ch_y_too_small: - lda #20 + lda #32 sta DESTINATION_Y done_ch_adjust: @@ -84,3 +84,22 @@ done_ch_adjust: church_check_bounds: rts + + + + + +;============================= +alley_action: +alley_nothing: + lda #VERB_WALK + sta CURRENT_VERB + rts + +church_door_action: +church_door_nothing: + lda #VERB_WALK + sta CURRENT_VERB + rts + + diff --git a/monkey/monkey_mansion.s b/monkey/monkey_mansion.s index 5513a27b..cd3720cd 100644 --- a/monkey/monkey_mansion.s +++ b/monkey/monkey_mansion.s @@ -12,10 +12,10 @@ mansion_check_exit: mansion_to_mansion_path: lda #MONKEY_MANSION_PATH sta LOCATION - lda #5 + lda #11 sta GUYBRUSH_X sta DESTINATION_X - lda #20 + lda #10 sta GUYBRUSH_Y sta DESTINATION_Y jsr change_location @@ -26,28 +26,24 @@ mansion_no_exit: - ;========================== - ;========================== + ;============================ + ;============================ ; mansion adjust destination - ;========================== - ;========================== + ;============================ + ;============================ mansion_adjust_destination: - ; just make Y always 20 + ; just make Y always 24 mn_check_y: - ; if x < 28, Y must be between 16 and 18 - ; if x < 35, Y must be between 8 and 28 mn_y_too_small: - lda #20 + lda #24 sta DESTINATION_Y done_mn_adjust: rts - - ;draw_house: ; lda #near_them + sta MESSAGE_H + + jmp do_display_message + + +done_mansion_check_bounds: rts + + +;============================= +trail_action: +trail_nothing: + lda #VERB_WALK + sta CURRENT_VERB + rts + +;============================= +poodles_action: + lda CURRENT_VERB + asl + tay + + lda poodles_actions,Y + cmp #$ff + beq poodles_nothing + + sta MESSAGE_L + lda poodles_actions+1,Y + sta MESSAGE_H + + jmp do_display_message + +poodles_nothing: + lda #VERB_WALK + sta CURRENT_VERB + rts + +poodles_actions: + .word $FFFF ; give + .word doesnt_open ; open + .word doesnt_work ; close + .word cant_pick_up ; pick_up + .word poodles_look ; look_at + .word poodles_talk ; talk_to + .word for_what ; use + .word icant_move ; push + .word icant_move ; pull + +poodles_look: +.byte 3,21,"I DON'T THINK I CAN GET PAST THEM",0 + +poodles_talk: +.byte 18,21,"WOOF",0 + +near_them: +.byte 8,21,"I'M NOT GOING NEAR THEM",0 diff --git a/monkey/monkey_mansion_path.s b/monkey/monkey_mansion_path.s index 616285ec..f8bf7d81 100644 --- a/monkey/monkey_mansion_path.s +++ b/monkey/monkey_mansion_path.s @@ -2,14 +2,14 @@ ; if x<4 goto MONKEY_MANSION - ; if x>35 goto MONKEY_CHURCH + ; if x>29 goto MONKEY_CHURCH mansion_path_check_exit: lda GUYBRUSH_X - cmp #4 + cmp #10 bcc mansion_path_to_mansion - cmp #35 + cmp #29 bcs mansion_path_to_church bcc mansion_path_no_exit @@ -31,7 +31,7 @@ mansion_path_to_church: lda #5 sta GUYBRUSH_X sta DESTINATION_X - lda #20 + lda #32 sta GUYBRUSH_Y sta DESTINATION_Y jsr change_location @@ -55,7 +55,7 @@ mh_check_y: ; if x < 35, Y must be between 8 and 28 mh_y_too_small: - lda #20 + lda GUYBRUSH_Y sta DESTINATION_Y done_mh_adjust: @@ -82,5 +82,91 @@ done_mh_adjust: ;house_sprite: +;========================= mansion_path_check_bounds: +;========================= + + ; 11 < x < 12, Y=10 + ; 12 < x < 13, Y=12 + ; 13 < x < 17, Y=14 + ; x==17 Y=18 + ; x==18 Y=20 + ; x==19 Y=22 + ; else Y=24 + + + lda GUYBRUSH_X + cmp #13 + bcc mp_set_12 + cmp #17 + bcc mp_set_14 + beq mp_set_18 + cmp #18 + beq mp_set_20 + cmp #19 + beq mp_set_22 + + lda #24 + bcs done_mansion_path_check_bounds + +mp_set_12: + lda #12 + bne done_mansion_path_check_bounds +mp_set_14: + lda #14 + bne done_mansion_path_check_bounds +mp_set_18: + lda #18 + bne done_mansion_path_check_bounds +mp_set_20: + lda #20 + bne done_mansion_path_check_bounds +mp_set_22: + lda #22 + bne done_mansion_path_check_bounds + +done_mansion_path_check_bounds: + sta GUYBRUSH_Y + sta DESTINATION_Y + rts + +;============================= +town_action: +town_nothing: + lda #VERB_WALK + sta CURRENT_VERB + rts + +;============================= +mansion_action: + lda CURRENT_VERB + asl + tay + + lda mansion_actions,Y + cmp #$ff + beq mansion_nothing + + sta MESSAGE_L + lda mansion_actions+1,Y + sta MESSAGE_H + + jmp do_display_message + +mansion_nothing: + lda #VERB_WALK + sta CURRENT_VERB + rts + +mansion_actions: + .word $FFFF ; give + .word doesnt_open ; open + .word doesnt_work ; close + .word cant_pick_up ; pick_up + .word not_special ; look_at + .word $FFFF ; talk_to + .word for_what ; use + .word icant_move ; push + .word icant_move ; pull + diff --git a/monkey/monkey_town.s b/monkey/monkey_town.s index 1ee73075..8db1c4d5 100644 --- a/monkey/monkey_town.s +++ b/monkey/monkey_town.s @@ -43,7 +43,7 @@ town_to_church: lda #34 sta GUYBRUSH_X sta DESTINATION_X - lda #20 + lda #30 sta GUYBRUSH_Y sta DESTINATION_Y diff --git a/tfv/TODO b/tfv/TODO index 56ce1a36..ca0646c7 100644 --- a/tfv/TODO +++ b/tfv/TODO @@ -1,3 +1,15 @@ +split title and flying off from map play + +new or load game + +char selector + male/female + hair color + skin color + name + + + mode7 speed fixes: + Skip key parsing if no key read