monkey: can be tiny, hooked up a few more rooms

This commit is contained in:
Vince Weaver 2020-10-01 18:34:15 -04:00
parent 17114b6ae7
commit 5efac55d7b
10 changed files with 292 additions and 49 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -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
sta INL
lda #>guybrush_medium_sprite
jmp really_draw_guybrush
map_guybrush:
lda #<guybrush_map_sprite
sta INL
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

View File

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

View File

@ -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 #<wall_sprite
@ -66,5 +62,73 @@ done_mn_adjust:
;house_sprite:
; can't be too far left (poodles)
mansion_check_bounds:
lda GUYBRUSH_X
cmp #20
bcs done_mansion_check_bounds
lda #20
sta GUYBRUSH_X
sta DESTINATION_X
lda #<near_them
sta MESSAGE_L
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

View File

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

View File

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

View File

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