diff --git a/games/peasant/NOTES b/games/peasant/NOTES index 92029f54..3c2e50a8 100644 --- a/games/peasant/NOTES +++ b/games/peasant/NOTES @@ -177,12 +177,13 @@ POINTS IMPLEMENTED: (in order of implementation) + 2 (put pebbles in bucket) + 3 (put baby in bucket) + 2 (turn crank [baby in bucket]) ++ 2 (scare gary) ====== - 38 points + 40 points deaths implemented ================== +1 Typing "die" +2 Cutting off arms, legs, and head - ++3 kick/punch/kill old gary diff --git a/games/peasant/TODO b/games/peasant/TODO index 4e122440..8e672147 100644 --- a/games/peasant/TODO +++ b/games/peasant/TODO @@ -1,5 +1,7 @@ TODO: +can get stuck on top of targets at archery range + is the letter K broken? map: fills in as you visit the areas diff --git a/games/peasant/peasant1_actions.s b/games/peasant/peasant1_actions.s index cc194c9b..46ebfa37 100644 --- a/games/peasant/peasant1_actions.s +++ b/games/peasant/peasant1_actions.s @@ -54,7 +54,7 @@ gary_break: jmp parse_common_unknown gary_sit_stump: - jmp gary_look_at_stump + jmp gary_kick_stump ;================ ; climb @@ -69,6 +69,18 @@ gary_climb: jmp parse_common_unknown gary_climb_fence: + lda GAME_STATE_0 + and #GARY_SCARED + beq gary_climb_fence_there + +gary_climb_fence_gone: + + ldx #gary_climb_fence_gone_message + jmp finish_parse_message + +gary_climb_fence_there: + ldx #gary_climb_fence_message jmp finish_parse_message @@ -88,6 +100,12 @@ gary_feed: jmp parse_common_unknown gary_feed_horse: + lda GAME_STATE_0 + and #GARY_SCARED + beq gary_feed_horse_there + jmp parse_common_unknown + +gary_feed_horse_there: ldx #gary_feed_horse_message jmp finish_parse_message @@ -107,6 +125,11 @@ gary_get: jmp parse_common_get gary_get_flies: + lda GAME_STATE_0 + and #GARY_SCARED + beq get_flies_there + jmp parse_common_get +get_flies_there: ldx #gary_get_flies_message jmp finish_parse_message @@ -130,26 +153,44 @@ gary_punch: beq kick_flies cmp #NOUN_STUMP - beq kick_stump + beq gary_kick_stump jmp parse_common_unknown kick_gary: - ; TODO: this kills you + lda GAME_STATE_0 + and #GARY_SCARED + beq kick_gary_there + jmp gary_scare_horse_gone + +kick_gary_there: + ldx #gary_kick_horse_message jsr partial_message_step + ; this kills you + lda #LOAD_GAME_OVER + sta WHICH_LOAD + + lda #NEW_FROM_DISK + sta LEVEL_OVER + ldx #gary_kick_horse_message2 jmp finish_parse_message kick_flies: + lda GAME_STATE_0 + and #GARY_SCARED + beq kick_flies_there + jmp parse_common_unknown +kick_flies_there: ldx #gary_kick_flies_message jmp finish_parse_message -kick_stump: +gary_kick_stump: ldx #gary_kick_stump_message jmp finish_parse_message @@ -160,6 +201,30 @@ kick_stump: gary_look: + lda GAME_STATE_0 + and #GARY_SCARED + beq gary_look_pre_scare + +gary_look_post_scare: + + lda CURRENT_NOUN + cmp #NOUN_FENCE + beq gary_look_at_fence_post + cmp #NOUN_STUMP + beq gary_look_at_stump + cmp #NOUN_NONE ; same + beq gary_look_at + + jmp parse_common_look + +gary_look_at_fence_post: + ldx #gary_look_fence_after_scare_message + jmp finish_parse_message + + ;================= + ; pre scare +gary_look_pre_scare: lda CURRENT_NOUN cmp #NOUN_FENCE @@ -178,11 +243,13 @@ gary_look: jmp parse_common_look + ; look at gary_look_at: ldx #gary_look_message jmp finish_parse_message + ; look at fence gary_look_at_fence: ldx #gary_look_fence_message @@ -204,6 +271,107 @@ gary_look_at_stump: ldy #>gary_look_stump_message jmp finish_parse_message + + ;=================== + ; wear mask + ;=================== + +gary_wear: + + lda CURRENT_NOUN + + cmp #NOUN_MASK + beq wear_mask + + jmp parse_common_unknown + +wear_mask: + ; if no have mask, unknown + ; otherwise, same as if we did "scare gary" + lda INVENTORY_1 + and #INV1_MONSTER_MASK + bne gary_scare_horse + + jmp parse_common_unknown + + + ;================ + ; scare + ;================ +gary_scare: + lda CURRENT_NOUN + + cmp #NOUN_GARY + beq gary_scare_horse + cmp #NOUN_HORSE + beq gary_scare_horse + + jmp parse_common_unknown + + +gary_scare_horse: + lda GAME_STATE_0 + and #GARY_SCARED + bne gary_scare_horse_gone + + lda INVENTORY_1 + and #INV1_MONSTER_MASK + beq gary_scare_horse_nomask + +gary_scare_horse_mask: + + ldx #gary_scare_message + jsr partial_message_step + + ; get points + + lda #2 + jsr score_points + + lda GAME_STATE_0 + ora #GARY_SCARED + sta GAME_STATE_0 + + ; TODO: break fence + + ldx #gary_scare_message2 + jmp finish_parse_message + + +gary_scare_horse_nomask: + + jsr random16 + and #$3 ; 0..4 + beq gary_scare_try2 + cmp #$1 + beq gary_scare_try3 + +gary_scare_try1: + ldx #gary_scare_horse_message1 + jmp finish_parse_message + +gary_scare_try2: + ldx #gary_scare_horse_message2 + jmp finish_parse_message + +gary_scare_try3: + ldx #gary_scare_horse_message3 + jmp finish_parse_message + +gary_scare_horse_gone: + ldx #gary_gone_message + jsr partial_message_step + + ldx #gary_gone_message2 + jmp finish_parse_message + ;================ ; pet ;================ @@ -218,6 +386,11 @@ gary_pet: jmp parse_common_unknown gary_pet_horse: + lda GAME_STATE_0 + and #GARY_SCARED + beq pet_horse_there + jmp parse_common_unknown +pet_horse_there: ldx #gary_pet_horse_message jmp finish_parse_message @@ -237,27 +410,14 @@ gary_ride: jmp parse_common_unknown gary_ride_horse: - ldx #gary_ride_horse_message - jmp finish_parse_message - - ;================ - ; scare - ;================ -gary_scare: - lda CURRENT_NOUN - - cmp #NOUN_GARY - beq gary_scare_horse - cmp #NOUN_HORSE - beq gary_scare_horse - + lda GAME_STATE_0 + and #GARY_SCARED + beq ride_horse_there jmp parse_common_unknown - ; FIXME: randomly pick from 3 choices -gary_scare_horse: - ldx #gary_scare_horse_message1 +ride_horse_there: + ldx #gary_ride_horse_message jmp finish_parse_message @@ -273,33 +433,24 @@ gary_talk: cmp #NOUN_HORSE beq gary_talk_horse cmp #NOUN_STUMP - beq gary_look_at_stump + beq gary_talk_stump cmp #NOUN_NONE beq gary_talk_horse jmp parse_common_talk gary_talk_horse: + lda GAME_STATE_0 + and #GARY_SCARED + beq gary_talk_there + jmp parse_common_talk +gary_talk_there: ldx #gary_talk_message jmp finish_parse_message - - ;=================== - ; wear mask - ;=================== - -gary_wear: - - lda CURRENT_NOUN - - cmp #NOUN_MASK - beq wear_mask - - jmp parse_common_unknown - -wear_mask: - jmp parse_common_unknown +gary_talk_stump: + jmp gary_kick_stump diff --git a/games/peasant/qload.inc b/games/peasant/qload.inc index a89453a0..7c6c8cce 100644 --- a/games/peasant/qload.inc +++ b/games/peasant/qload.inc @@ -23,12 +23,13 @@ invert_smc1 =$0f61 disp_put_string_cursor =$1696 hgr_put_char_cursor =$0f15 vgi_simple_rectangle =$12ec -peasant_text =$1d0f +peasant_text =$1d44 save_menu =$17b0 load_menu =$17a5 location_names_l =$1adc location_names_h =$1af9 wait_until_keypress =$1d06 +random16 =$1d0f hposn_high = $BA00 hposn_low = $BB00 driveoff = $A22 diff --git a/games/peasant/save1.s b/games/peasant/save1.s index c5c4662d..21588e9f 100644 --- a/games/peasant/save1.s +++ b/games/peasant/save1.s @@ -12,7 +12,7 @@ .byte 0 ; MAP_X = $94 .byte 1 ; MAP_Y = $95 .byte LOCATION_HAY_BALE ; MAP_LOCATION = $96 -.byte $ff ; GAME_STATE_0 = $97 +.byte $00 ; GAME_STATE_0 = $97 .byte $00 ; GAME_STATE_1 = $98 .byte $00 ; GAME_STATE_2 = $99 .byte $00 ; NED_STATUS = $9A @@ -21,9 +21,9 @@ .byte $00 ; ARROW_SCORE = $9D .byte $01 ; SCORE_HUNDREDS= $9E .byte $09 ; SCORE_TENSONES= $9F -.byte $FF ; INVENTORY_1 = $A0 -.byte $FF ; INVENTORY_2 = $A1 -.byte $FF ; INVENTORY_3 = $A2 +.byte $00 ; INVENTORY_1 = $A0 +.byte $00 ; INVENTORY_2 = $A1 +.byte $00 ; INVENTORY_3 = $A2 .byte $00 ; INVENTORY_1_GONE = $A3 .byte $00 ; INVENTORY_2_GONE_= $A4 .byte $00 ; INVENTORY_3_GONE = $A5 diff --git a/games/peasant/text/peasant1.inc b/games/peasant/text/peasant1.inc index 207ba61f..a2a9dbad 100644 --- a/games/peasant/text/peasant1.inc +++ b/games/peasant/text/peasant1.inc @@ -15,6 +15,7 @@ gary_look_fence_message: .byte "as toothpicks.",0 ; + look fence (after scaring him) +gary_look_fence_after_scare_message: .byte "It's got a big ol' hole in",13 .byte "it. For walking through.",0 @@ -37,48 +38,7 @@ gary_look_stump_message: .byte "what to do next, and stare",13 .byte "at the stump.",0 -; +2 POINTS -; + wear mask / scare horse -.byte "You slip on the hideous",13 -.byte "monster maskus.",0 - -; TODO: mask on face, gary turns and runs through fence - -.byte "You scared the crap outta",13 -.byte "Poor Gary! He broke on",13 -.byte "through to the other side!",0 - -; + wear mask (after scaring him) -; + kick/kill/punch poor gary (after scaring) -.byte "Gary's gone now. Let go.",13 -.byte "Just let go.",0 - -.byte "Let go!",0 - -; + break/kick stump / sit on stump -gary_kick_stump_message: -.byte "Are you THAT bored? Do some",13 -.byte "questing already!",0 - -; + feed horse (before he's gone) -gary_feed_horse_message: -.byte "There's a good chance that",13 -.byte "horse has NEVER eaten. I",13 -.byte "doubt he'll start now.",0 - -; + ride horse/poor gary (before he's gone) -gary_ride_horse_message: -.byte "Naw, snapping horse spines",13 -.byte "just doesn't seem as cool",13 -.byte "as it did in high school.",0 - -; + pet horse/poor gary (before he's gone) -gary_pet_horse_message: -.byte "Aww, that's sweet. Poor",13 -.byte "Gary tries in vain to bite",13 -.byte "your arm off.",0 - -; + scare horse (before getting the mask) +; + scare gary/horse (before getting the mask) gary_scare_horse_message1: .byte "You tell Gary the THE",13 .byte "CALLS ARE COMING FROM",13 @@ -101,6 +61,45 @@ gary_scare_horse_message3: .byte "these baby spiders come",13 .byte "out. It doesn't phase him.",0 +; +2 POINTS +; + wear mask / scare horse +gary_scare_message: +.byte "You slip on the hideous",13 +.byte "monster maskus.",0 + +; TODO: mask on face, gary turns and runs through fence + +gary_scare_message2: +.byte "You scared the crap outta",13 +.byte "Poor Gary! He broke on",13 +.byte "through to the other side!",0 + +; + wear mask (after scaring him) +; + kick/kill/punch poor gary (after scaring) +gary_gone_message: +.byte "Gary's gone now. Let go.",13 +.byte "Just let go.",0 +gary_gone_message2: +.byte "Let go!",0 + +; + feed horse (before he's gone) +gary_feed_horse_message: +.byte "There's a good chance that",13 +.byte "horse has NEVER eaten. I",13 +.byte "doubt he'll start now.",0 + +; + ride horse/poor gary (before he's gone) +gary_ride_horse_message: +.byte "Naw, snapping horse spines",13 +.byte "just doesn't seem as cool",13 +.byte "as it did in high school.",0 + +; + pet horse/poor gary (before he's gone) +gary_pet_horse_message: +.byte "Aww, that's sweet. Poor",13 +.byte "Gary tries in vain to bite",13 +.byte "your arm off.",0 + ; + kick/kill/punch poor gary (before scaring) ; (Warning: Needless to say, this kills you.) gary_kick_horse_message: @@ -132,10 +131,18 @@ gary_climb_fence_message: .byte "Peasantry.",0 ; + climb/jump fence after scaring) +gary_climb_fence_gone_message: .byte "More like you should walk",13 .byte "through that gaping hole in",13 .byte "it. Just an idea.",0 +; + break/kick stump +; + sit stump +; + talk stump +gary_kick_stump_message: +.byte "Are you THAT bored? Do some",13 +.byte "questing already!",0 + ; + get flies (before scaring him) gary_get_flies_message: .byte "You nasty. Besides, they",13 diff --git a/games/peasant/zp.inc b/games/peasant/zp.inc index d7146488..bc96302c 100644 --- a/games/peasant/zp.inc +++ b/games/peasant/zp.inc @@ -42,6 +42,8 @@ MASK = $2E MASK_COUNTDOWN = $2F PEASANT_PRIORITY = $30 +SEEDL = $4E +SEEDH = $4F INVENTORY_MASK = $60