mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-27 02:31:00 +00:00
monkey: can be tiny, hooked up a few more rooms
This commit is contained in:
parent
17114b6ae7
commit
5efac55d7b
12
monkey/TODO
12
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:
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user