diff --git a/monkey/Makefile b/monkey/Makefile index 4c03119f..286605e1 100644 --- a/monkey/Makefile +++ b/monkey/Makefile @@ -60,7 +60,9 @@ monkey.o: monkey.s zp.inc hardware.inc common_defines.inc \ monkey_lookout.s monkey_poster.s monkey_dock.s monkey_bar.s \ monkey_town.s monkey_map.s monkey_church.s monkey_mansion_path.s \ monkey_mansion.s monkey_zipline.s \ - monkey_bar_inside1.s monkey_bar_inside2.s + monkey_bar_inside1.s monkey_bar_inside2.s \ + monkey_voodoo1.s monkey_voodoo2.s \ + cutscene_lechuck.s chapter1.s ca65 -o monkey.o monkey.s -l monkey.lst graphics/graphics.inc: diff --git a/monkey/chapter1.s b/monkey/chapter1.s new file mode 100644 index 00000000..baebd523 --- /dev/null +++ b/monkey/chapter1.s @@ -0,0 +1,5 @@ +; +; + +chapter1_transition: + rts diff --git a/monkey/common_defines.inc b/monkey/common_defines.inc index d5199671..e37b0d74 100644 --- a/monkey/common_defines.inc +++ b/monkey/common_defines.inc @@ -50,3 +50,6 @@ MONKEY_CHURCH = 8 MONKEY_MANSION_PATH = 9 MONKEY_MANSION = 10 MONKEY_ZIPLINE = 11 +MONKEY_VOODOO1 = 12 +MONKEY_VOODOO2 = 13 + diff --git a/monkey/cutscene_lechuck.s b/monkey/cutscene_lechuck.s new file mode 100644 index 00000000..c5d1b1d5 --- /dev/null +++ b/monkey/cutscene_lechuck.s @@ -0,0 +1,15 @@ +; +; + +; Meanwhile... + + +; Deep beneath Monkey Island, +; the ghost pirate LeChuck's +; ship lies anchored in a river +; of lava. + +; Captain LeChuck... sir... I... sir + +lechuck_cutscene: + rts diff --git a/monkey/graphics/Makefile b/monkey/graphics/Makefile index 2b4b5bf6..5145432d 100644 --- a/monkey/graphics/Makefile +++ b/monkey/graphics/Makefile @@ -11,7 +11,9 @@ all: graphics.inc graphics.inc: \ lookout.lzsa poster.lzsa dock.lzsa bar.lzsa town.lzsa map.lzsa \ bar_inside1.lzsa bar_inside2.lzsa zipline.lzsa \ - church.lzsa mansion.lzsa mansion_path.lzsa + church.lzsa mansion.lzsa mansion_path.lzsa \ + voodoo1.lzsa voodoo2.lzsa \ + part1.lzsa lechuck_ship.lzsa lechuck_cabin.lzsa echo "lookout_lzsa: .incbin \"lookout.lzsa\"" > graphics.inc echo "poster_lzsa: .incbin \"poster.lzsa\"" >> graphics.inc echo "dock_lzsa: .incbin \"dock.lzsa\"" >> graphics.inc @@ -24,6 +26,11 @@ graphics.inc: \ echo "church_lzsa: .incbin \"church.lzsa\"" >> graphics.inc echo "mansion_lzsa: .incbin \"mansion.lzsa\"" >> graphics.inc echo "mansion_path_lzsa: .incbin \"mansion_path.lzsa\"" >> graphics.inc + echo "voodoo1_lzsa: .incbin \"voodoo1.lzsa\"" >> graphics.inc + echo "voodoo2_lzsa: .incbin \"voodoo2.lzsa\"" >> graphics.inc + echo "part1_lzsa: .incbin \"part1.lzsa\"" >> graphics.inc + echo "lechuck_ship_lzsa: .incbin \"lechuck_ship.lzsa\"" >> graphics.inc + echo "lechuck_cabin_lzsa: .incbin \"lechuck_cabin.lzsa\"" >> graphics.inc %.gr: %.png $(PNG2GR) $< $@ diff --git a/monkey/graphics/lechuck_cabin.png b/monkey/graphics/lechuck_cabin.png new file mode 100644 index 00000000..e0b88a18 Binary files /dev/null and b/monkey/graphics/lechuck_cabin.png differ diff --git a/monkey/graphics/lechuck_ship.png b/monkey/graphics/lechuck_ship.png new file mode 100644 index 00000000..e21323c7 Binary files /dev/null and b/monkey/graphics/lechuck_ship.png differ diff --git a/monkey/graphics/part1.png b/monkey/graphics/part1.png new file mode 100644 index 00000000..6d67ddfa Binary files /dev/null and b/monkey/graphics/part1.png differ diff --git a/monkey/graphics/voodoo1.png b/monkey/graphics/voodoo1.png new file mode 100644 index 00000000..072fd65a Binary files /dev/null and b/monkey/graphics/voodoo1.png differ diff --git a/monkey/graphics/voodoo2.png b/monkey/graphics/voodoo2.png new file mode 100644 index 00000000..a33e4278 Binary files /dev/null and b/monkey/graphics/voodoo2.png differ diff --git a/monkey/leveldata_monkey.inc b/monkey/leveldata_monkey.inc index 8eb68052..052f15d4 100644 --- a/monkey/leveldata_monkey.inc +++ b/monkey/leveldata_monkey.inc @@ -6,7 +6,7 @@ locations: .word location0,location1,location2,location3 .word location4,location5,location6,location7 .word location8,location9,location10,location11 - + .word location12,location13 ; MONKEY_LOOKOUT -- lookout tower location0: @@ -37,7 +37,7 @@ location1: .word poster_lzsa ; background .word poster_adjust_destination ; destination .word poster_check_exit ; exit - .word lookout_check_bounds ; bounds check + .word poster_check_bounds ; bounds check .byte GUYBRUSH_BIG ; size .byte 2 ; num areas @@ -56,7 +56,7 @@ location2: .word dock_lzsa ; background .word dock_adjust_destination ; destination .word dock_check_exit ; exit - .word lookout_check_bounds ; bounds check + .word dock_check_bounds ; bounds check .byte GUYBRUSH_BIG ; size .byte 1 ; num areas @@ -90,7 +90,7 @@ location4: .word town_lzsa ; background .word town_adjust_destination ; destination .word town_check_exit ; exit - .word lookout_check_bounds ; bounds check + .word town_check_bounds ; bounds check .byte GUYBRUSH_BIG ; size .byte 8 ; num areas @@ -140,7 +140,7 @@ location5: .word map_lzsa ; background .word map_adjust_destination ; destination .word map_check_exit ; exit - .word lookout_check_bounds ; bounds check + .word map_check_bounds ; bounds check .byte GUYBRUSH_TINY ; size .byte 7 ; num areas @@ -185,7 +185,7 @@ location6: .word bar_inside1_lzsa ; background .word bar_inside1_adjust_destination ; destination .word bar_inside1_check_exit ; exit - .word lookout_check_bounds ; bounds check + .word bar_inside1_check_bounds ; bounds check .byte GUYBRUSH_BIG ; size .byte 7 ; num areas @@ -261,7 +261,7 @@ location8: .word church_lzsa ; background .word church_adjust_destination ; destination .word church_check_exit ; exit - .word lookout_check_bounds ; bounds check + .word church_check_bounds ; bounds check .byte GUYBRUSH_BIG ; size .byte 1 ; num areas @@ -275,7 +275,7 @@ location9: .word mansion_path_lzsa ; background .word mansion_path_adjust_destination ; destination .word mansion_path_check_exit ; exit - .word lookout_check_bounds ; bounds check + .word mansion_path_check_bounds ; bounds check .byte GUYBRUSH_BIG ; size .byte 1 ; num areas @@ -289,7 +289,7 @@ location10: .word mansion_lzsa ; background .word mansion_adjust_destination ; destination .word mansion_check_exit ; exit - .word lookout_check_bounds ; bounds check + .word mansion_check_bounds ; bounds check .byte GUYBRUSH_BIG ; size .byte 1 ; num areas @@ -298,12 +298,13 @@ location10: .word door_string ; name .word door_action-1 ; action + ; MONKEY_ZIPLINE -- hook's zipline location11: .word zipline_lzsa ; background .word zipline_adjust_destination ; destination .word zipline_check_exit ; exit - .word lookout_check_bounds ; bounds check + .word zipline_check_bounds ; bounds check .byte GUYBRUSH_BIG ; size .byte 3 ; num areas @@ -322,6 +323,34 @@ location11: .word sign_string ; name .word sign_action-1 ; action +; MONKEY_VOODOO1 -- voodoo shop +location12: + .word voodoo1_lzsa ; background + .word voodoo1_adjust_destination ; destination + .word voodoo1_check_exit ; exit + .word voodoo1_check_bounds ; bounds check + .byte GUYBRUSH_BIG ; size + .byte 1 ; num areas + + .byte 30,36 ; x + .byte 10,36 ; y + .word pole_string ; name + .word pole_action-1 ; action + +; MONKEY_VOODOO2 -- voodoo lady +location13: + .word voodoo2_lzsa ; background + .word voodoo2_adjust_destination ; destination + .word voodoo2_check_exit ; exit + .word voodoo2_check_bounds ; bounds check + .byte GUYBRUSH_BIG ; size + .byte 1 ; num areas + + .byte 30,36 ; x + .byte 10,36 ; y + .word pole_string ; name + .word pole_action-1 ; action + ; common strings door_string: .byte 20,20,"DOOR",0 diff --git a/monkey/monkey.s b/monkey/monkey.s index 21aaba68..75f41014 100644 --- a/monkey/monkey.s +++ b/monkey/monkey.s @@ -50,8 +50,8 @@ monkey_start: ; set up initial location -; lda #MONKEY_BAR_INSIDE2 - lda #MONKEY_LOOKOUT + lda #MONKEY_BAR +; lda #MONKEY_LOOKOUT sta LOCATION jsr change_location @@ -344,6 +344,13 @@ really_exit: .include "monkey_mansion_path.s" .include "monkey_bar_inside1.s" .include "monkey_bar_inside2.s" + .include "monkey_voodoo1.s" + .include "monkey_voodoo2.s" + + + ; cutscenes + .include "chapter1.s" + .include "cutscene_lechuck.s" .include "monkey_actions.s" .include "update_bottom.s" diff --git a/monkey/monkey_bar_inside1.s b/monkey/monkey_bar_inside1.s index 30acc83c..ac93b966 100644 --- a/monkey/monkey_bar_inside1.s +++ b/monkey/monkey_bar_inside1.s @@ -50,14 +50,14 @@ bar_inside1_no_exit: ;================================= ;================================= bar_inside1_adjust_destination: - ; just make Y always 20 + ; just make Y always 22 mb1_check_y: ; if x < 28, Y must be between 16 and 18 ; if x < 35, Y must be between 8 and 28 mb1_y_too_small: - lda #20 + lda #24 sta DESTINATION_Y done_mb1_adjust: @@ -110,3 +110,5 @@ bar1_dog_action: rts +bar_inside1_check_bounds: + rts diff --git a/monkey/monkey_bar_inside2.s b/monkey/monkey_bar_inside2.s index a1c03aa6..390459b6 100644 --- a/monkey/monkey_bar_inside2.s +++ b/monkey/monkey_bar_inside2.s @@ -1,6 +1,6 @@ ; stuff regarding 2nd room of scumm bar - ; if x<4 goto MONKEY_BAR_INSIDE1 at 34,20 + ; if x<4 goto MONKEY_BAR_INSIDE1 at 34,24 bar_inside2_check_exit: @@ -22,7 +22,7 @@ bar_inside2_to_bar_inside1: lda #34 sta GUYBRUSH_X sta DESTINATION_X - lda #20 + lda #24 sta GUYBRUSH_Y sta DESTINATION_Y jsr change_location diff --git a/monkey/monkey_church.s b/monkey/monkey_church.s index 0a11126b..dc4c8a9e 100644 --- a/monkey/monkey_church.s +++ b/monkey/monkey_church.s @@ -82,3 +82,5 @@ done_ch_adjust: ;house_sprite: +church_check_bounds: + rts diff --git a/monkey/monkey_dock.s b/monkey/monkey_dock.s index e4363f28..b354bb90 100644 --- a/monkey/monkey_dock.s +++ b/monkey/monkey_dock.s @@ -75,3 +75,5 @@ done_dk_adjust: ;house_sprite: +dock_check_bounds: + rts diff --git a/monkey/monkey_mansion.s b/monkey/monkey_mansion.s index 908fe5dc..5513a27b 100644 --- a/monkey/monkey_mansion.s +++ b/monkey/monkey_mansion.s @@ -66,3 +66,5 @@ done_mn_adjust: ;house_sprite: +mansion_check_bounds: + rts diff --git a/monkey/monkey_mansion_path.s b/monkey/monkey_mansion_path.s index b795d829..616285ec 100644 --- a/monkey/monkey_mansion_path.s +++ b/monkey/monkey_mansion_path.s @@ -82,3 +82,5 @@ done_mh_adjust: ;house_sprite: +mansion_path_check_bounds: + rts diff --git a/monkey/monkey_map.s b/monkey/monkey_map.s index 0cd6a58a..8182c1eb 100644 --- a/monkey/monkey_map.s +++ b/monkey/monkey_map.s @@ -133,3 +133,5 @@ done_mp_adjust: ;done_draw_map_door: ; rts +map_check_bounds: + rts diff --git a/monkey/monkey_poster.s b/monkey/monkey_poster.s index 728724b2..ab5ce655 100644 --- a/monkey/monkey_poster.s +++ b/monkey/monkey_poster.s @@ -97,3 +97,5 @@ house_sprite: .byte $77,$AA,$77,$AA,$77,$AA,$AA,$AA +poster_check_bounds: + rts diff --git a/monkey/monkey_voodoo1.s b/monkey/monkey_voodoo1.s new file mode 100644 index 00000000..17576048 --- /dev/null +++ b/monkey/monkey_voodoo1.s @@ -0,0 +1,87 @@ +; voodoo shop 1 + + ; if x<10 goto MONKEY_TOWN + ; if x>30 goto MONKEY_VOODOO2 + +voodoo1_check_exit: + + lda GUYBRUSH_X + cmp #35 + bcs voodoo1_to_voodoo2 + + cmp #10 + bcc voodoo1_to_town + + bcs voodoo1_no_exit + +voodoo1_to_voodoo2: + lda #MONKEY_VOODOO2 + sta LOCATION + lda #10 + sta GUYBRUSH_X + sta DESTINATION_X + lda #20 + sta GUYBRUSH_Y + sta DESTINATION_Y + jsr change_location + jmp voodoo1_no_exit + +voodoo1_to_town: + lda #MONKEY_TOWN + sta LOCATION + lda #10 + sta GUYBRUSH_X + sta DESTINATION_X + lda #20 + sta GUYBRUSH_Y + sta DESTINATION_Y + jsr change_location + jmp voodoo1_no_exit + +voodoo1_no_exit: + rts + + + + ;========================== + ;========================== + ; voodoo1 adjust destination + ;========================== + ;========================== +voodoo1_adjust_destination: + ; just make Y always 20 + +v1_check_y: + ; if x < 28, Y must be between 16 and 18 + ; if x < 35, Y must be between 8 and 28 + +v1_y_too_small: + lda #20 + sta DESTINATION_Y + +done_v1_adjust: + rts + + + + +;draw_house: + +; lda #wall_sprite +; sta INH + +; lda #18 +; sta XPOS +; lda #22 +; sta YPOS + +; jsr put_sprite_crop + +; rts + +;house_sprite: + +voodoo1_check_bounds: + rts diff --git a/monkey/monkey_voodoo2.s b/monkey/monkey_voodoo2.s new file mode 100644 index 00000000..4031d460 --- /dev/null +++ b/monkey/monkey_voodoo2.s @@ -0,0 +1,70 @@ +; voodoo lady + + ; if x<10 goto MONKEY_VOODOO1 + +voodoo2_check_exit: + + lda GUYBRUSH_X + cmp #10 + bcc voodoo2_to_voodoo1 + bcs voodoo2_no_exit + +voodoo2_to_voodoo1: + lda #MONKEY_VOODOO1 + sta LOCATION + lda #30 + sta GUYBRUSH_X + sta DESTINATION_X + lda #20 + sta GUYBRUSH_Y + sta DESTINATION_Y + jsr change_location + jmp voodoo2_no_exit + +voodoo2_no_exit: + rts + + + + ;========================== + ;========================== + ; voodoo2 adjust destination + ;========================== + ;========================== +voodoo2_adjust_destination: + ; just make Y always 20 + +v2_check_y: + ; if x < 28, Y must be between 16 and 18 + ; if x < 35, Y must be between 8 and 28 + +v2_y_too_small: + lda #20 + sta DESTINATION_Y + +done_v2_adjust: + rts + + + + +;draw_house: + +; lda #wall_sprite +; sta INH + +; lda #18 +; sta XPOS +; lda #22 +; sta YPOS + +; jsr put_sprite_crop + +; rts + +;house_sprite: + +voodoo2_check_bounds: + rts diff --git a/monkey/monkey_zipline.s b/monkey/monkey_zipline.s index 675ffa5c..322da350 100644 --- a/monkey/monkey_zipline.s +++ b/monkey/monkey_zipline.s @@ -187,3 +187,7 @@ pole_actions: pole_look: .byte 6,21,"IT'S JUST LIKE THE OTHER ONE",0 + + +zipline_check_bounds: + rts