diff --git a/monkey/graphics/bar_inside3.png b/monkey/graphics/bar_inside3.png index c7671d8e..ccd002b8 100644 Binary files a/monkey/graphics/bar_inside3.png and b/monkey/graphics/bar_inside3.png differ diff --git a/monkey/graphics/voodoo1.png b/monkey/graphics/voodoo1.png index 072fd65a..6ad6e6fb 100644 Binary files a/monkey/graphics/voodoo1.png and b/monkey/graphics/voodoo1.png differ diff --git a/monkey/hello.bas b/monkey/hello.bas index 539f5096..c2aac551 100644 --- a/monkey/hello.bas +++ b/monkey/hello.bas @@ -1,5 +1,5 @@ 5 HOME -10 PRINT "LOADING MONKEY V0.04" +10 PRINT "LOADING MONKEY V0.05" 20 PRINT:PRINT 40 PRINT "CONTROLS: " 42 PRINT " MOVE CURSOR : ARROWS OR WASD" diff --git a/monkey/leveldata_monkey.inc b/monkey/leveldata_monkey.inc index 7c52fcc4..cf4ba141 100644 --- a/monkey/leveldata_monkey.inc +++ b/monkey/leveldata_monkey.inc @@ -414,16 +414,15 @@ location12: .word chalice_string ; name .word chalice_action-1 ; action - .byte 31,33 ; x - .byte 30,36 ; y - .word chicken_string ; name - .word chicken_pulley_action-1 ; action - .byte 29,39 ; x .byte 36,40 ; y .word trunk_string ; name .word trunk_action-1 ; action + .byte 31,33 ; x + .byte 30,36 ; y + .word chicken_string ; name + .word chicken_pulley_action-1 ; action ; MONKEY_VOODOO2 -- voodoo lady location13: @@ -503,6 +502,8 @@ bones_string: .byte "BONES",0 chalice_string: .byte "CHALICE",0 trunk_string: .byte "TRUNK",0 voodoo_knicknacks_string:.byte "VOODOO KNICKNACKS",0 +chicken_pulley_string: .byte "CHICKEN PULLEY",0 +null_string: .byte "NULL",0 ; voodoo2 strings voodoo_lady_string: .byte "VOODOO LADY",0 diff --git a/monkey/monkey.s b/monkey/monkey.s index 10d8591d..fe6b7754 100644 --- a/monkey/monkey.s +++ b/monkey/monkey.s @@ -42,6 +42,15 @@ monkey_start: sta DISPLAY_MESSAGE sta BAR_DOOR_OPEN sta VALID_NOUN + sta ITEMS_PICKED_UP + sta INVENTORY_NEXT_SLOT + sta INVENTORY + sta INVENTORY2 + sta INVENTORY3 + sta INVENTORY4 + sta INVENTORY5 + + ; init cursor @@ -51,8 +60,8 @@ monkey_start: ; set up initial location -; lda #MONKEY_BAR - lda #MONKEY_LOOKOUT + lda #MONKEY_BAR +; lda #MONKEY_LOOKOUT ; lda #MONKEY_VOODOO1 sta LOCATION @@ -100,6 +109,8 @@ game_loop: beq do_draw_sign cmp #MONKEY_VOODOO2 beq do_draw_smoke + cmp #MONKEY_BAR_INSIDE3 + beq do_draw_meat jmp nothing_special @@ -119,6 +130,10 @@ do_draw_smoke: jsr draw_smoke jmp nothing_special +do_draw_meat: + jsr draw_meat + jmp nothing_special + nothing_special: diff --git a/monkey/monkey_bar_inside3.s b/monkey/monkey_bar_inside3.s index cbf62aec..7ec12e11 100644 --- a/monkey/monkey_bar_inside3.s +++ b/monkey/monkey_bar_inside3.s @@ -64,23 +64,35 @@ bar_inside3_check_bounds: rts -;draw_house: -; lda #wall_sprite -; sta INH + ;================================ + ;================================ + ; draw meat + ;================================ + ;================================ +draw_meat: + lda ITEMS_PICKED_UP + and #IPU_ITEM_MEAT + bne done_draw_meat -; lda #18 -; sta XPOS -; lda #22 -; sta YPOS + lda #meat_sprite + sta INH -; jsr put_sprite_crop + lda #9 + sta XPOS + lda #26 + sta YPOS -; rts + jsr put_sprite_crop +done_draw_meat: + rts -;house_sprite: +meat_sprite: + .byte 3,2 + .byte $3A,$8A,$AA + .byte $A3,$A8,$Af ;=================================== @@ -172,6 +184,31 @@ table_actions: ;============================= meat_action: lda CURRENT_VERB + cmp #VERB_PICK_UP + bne meat_not_pickup + + ; pick up the meat + lda ITEMS_PICKED_UP + ora #IPU_ITEM_MEAT + sta ITEMS_PICKED_UP + + ; add to inventory + lda #INV_ITEM_MEAT + ldx INVENTORY_NEXT_SLOT + sta INVENTORY,X + inc INVENTORY_NEXT_SLOT + + ; decrement object count in room + + ldy #LOCATION_NUM_AREAS + lda location14,Y + sec + sbc #1 + sta location14,Y + + rts + +meat_not_pickup: asl tay diff --git a/monkey/monkey_voodoo1.s b/monkey/monkey_voodoo1.s index 46df54a3..98cdbb09 100644 --- a/monkey/monkey_voodoo1.s +++ b/monkey/monkey_voodoo1.s @@ -90,14 +90,37 @@ voodoo1_draw_foreground: sta XPOS lda #30 sta YPOS - jmp put_sprite_crop + jsr put_sprite_crop + + lda ITEMS_PICKED_UP + and #IPU_ITEM_PULLEY_CHICKEN + bne done_voodoo1_draw_foreground + + lda #chicken_pulley_sprite + sta INH + + lda #30 + sta XPOS + lda #30 + sta YPOS + + jsr put_sprite_crop + + +done_voodoo1_draw_foreground: + rts voodoo1_fg_sprite: - .byte 20,2 - .byte $AA,$8A,$88,$88,$8A,$AA,$AA,$AA,$AA,$AA - .byte $8A,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$77,$AA - .byte $8A,$08,$08,$80,$80,$88,$8A,$AA,$AA,$08 - .byte $08,$08,$AA,$AA,$AA,$AA,$AA,$AA,$87,$57 + .byte 12,2 + .byte $AA,$8A,$88,$88,$8A,$AA,$AA,$AA,$AA,$AA,$8A,$AA + .byte $8A,$08,$08,$80,$80,$88,$8A,$AA,$AA,$08,$08,$08 + +chicken_pulley_sprite: + .byte 2,2 + .byte $77,$AA + .byte $87,$57 ;========================== @@ -431,6 +454,32 @@ trunk_look: .byte 8,21,"PROBABLY HAS A BODY IN IT",0 ;============================= chicken_pulley_action: lda CURRENT_VERB + + cmp #VERB_PICK_UP + bne chicken_pulley_not_pickup + + ; pick up the chicken_pulley + lda ITEMS_PICKED_UP + ora #IPU_ITEM_PULLEY_CHICKEN + sta ITEMS_PICKED_UP + + ; add to inventory + lda #INV_ITEM_PULLEY_CHICKEN + ldx INVENTORY_NEXT_SLOT + sta INVENTORY,X + inc INVENTORY_NEXT_SLOT + + ; decrement object count in room + ldy #LOCATION_NUM_AREAS + lda location12,Y + sec + sbc #1 + sta location12,Y + + rts + +chicken_pulley_not_pickup: + asl tay diff --git a/monkey/update_bottom.s b/monkey/update_bottom.s index 390d9626..1398b774 100644 --- a/monkey/update_bottom.s +++ b/monkey/update_bottom.s @@ -104,9 +104,9 @@ no_message: no_noun: ; stick zero at end - lda #0 - tay - sta (OUTL),Y +; lda #0 +; tay +; sta (OUTL),Y ; center it lda #<(temp_line+2) @@ -154,13 +154,108 @@ bottom_loop: cpx #18 bne bottom_loop + ;====================================== + ; draw inventory + + ; draw /\ + ; draw :: + ; draw \/ + + lda #inv_up + sta OUTH + jsr move_and_print + jsr move_and_print + + jsr normal_text + + jsr move_and_print + + ;============================== + ; print inventory, if any + + lda INVENTORY + beq done_inventory + + asl + tay + lda inventory_names,Y + sta INL + lda inventory_names+1,Y + sta INH + + lda #<(temp_inv+2) + sta OUTL + lda #>(temp_inv+2) + sta OUTH + + jsr strcat + + + lda #<(temp_inv) + sta OUTL + lda #>(temp_inv) + sta OUTH + + lda #21 + sta temp_inv+1 + + jsr move_and_print + + + lda INVENTORY2 + beq done_inventory + + asl + tay + lda inventory_names,Y + sta INL + lda inventory_names+1,Y + sta INH + + lda #<(temp_inv+2) + sta OUTL + lda #>(temp_inv+2) + sta OUTH + + jsr strcat + + + lda #<(temp_inv) + sta OUTL + lda #>(temp_inv) + sta OUTH + + lda #22 + sta temp_inv+1 + + jsr move_and_print + + +done_inventory: rts + +inventory_names: + .word null_string ; NULL + .word meat_string ; HUNK OF MEAT + .word chicken_pulley_string ; CHICKEN PULLEY + + +inv_up: .byte 22,21,"/\",0 +inv_down: .byte 22,23,"\/",0 +inv_middle: .byte 22,22,"::",0 + +temp_inv: + .byte 25,0," ",0 + + ;0123456789012345678901234567890123456789 ; -;GIVE PICK UP USE -;OPEN LOOK AT PUSH -;CLOSE TALK TO PULL +;GIVE PICK UP USE /\ HUNK O' MEAT +;OPEN LOOK AT PUSH :: CHICKEN PULLEY +;CLOSE TALK TO PULL \/ bottom_strings: .word bottom_give @@ -230,6 +325,9 @@ strcat_done: lda #0 adc OUTH sta OUTH + lda #0 + tay + sta (OUTL),Y ; NUL terminate rts ;==================================== diff --git a/monkey/zp.inc b/monkey/zp.inc index 0f76af58..d23823a0 100644 --- a/monkey/zp.inc +++ b/monkey/zp.inc @@ -116,6 +116,22 @@ GUYBRUSH_SIZE = $98 GUYBRUSH_SMALL = 2 GUYBRUSH_TINY = 3 GUYBRUSH_FEET = $99 +ITEMS_PICKED_UP = $9A + IPU_ITEM_MEAT = $01 + IPU_ITEM_PULLEY_CHICKEN = $02 + + INV_ITEM_MEAT = $1 + INV_ITEM_PULLEY_CHICKEN = $2 + +INVENTORY = $9B +INVENTORY2 = $9C +INVENTORY3 = $9D +INVENTORY4 = $9E +INVENTORY5 = $9F + +INVENTORY_NEXT_SLOT = $A0 + + ; done game puzzle state