peasant: can get the bow now

This commit is contained in:
Vince Weaver 2021-11-20 00:17:47 -05:00
parent 5a00274ff6
commit 2dd67c71c1
6 changed files with 98 additions and 1 deletions

View File

@ -36,6 +36,7 @@ peasant2 18302
17368 -- use lookup table for next room (and other changes)
17780 -- size as of the switch to dictionary word lookup
18012 -- hook up more of archery
18120 -- finish hooking up archery
partial save, can we fit in 4k?
102 lines ; inventory was 115?
@ -186,8 +187,9 @@ POINTS IMPLEMENTED: (in order of implementation)
+ 2 (fall in mud puddle)
+ 2 (give trinket to brothers)
+ 2 (get super trinket)
+ 3 (win archery game)
======
54 points
57 points
deaths/endings implemented

View File

@ -95,6 +95,15 @@ game_loop:
jsr wait_until_keypress
; lda #$30 ; got 0 of 3
; lda #$31 ; got 1 of 3
lda #$33 ; got 3 of 3
sta ARROW_SCORE
lda ARROW_SCORE
ora #ARROW_DONE
sta ARROW_SCORE
lda #LOCATION_ARCHERY
jmp update_map_location
@ -123,6 +132,9 @@ game_loop:
; exit level
;************************
game_over:
lda ARROW_SCORE
ora #ARROW_DONE
sta ARROW_SCORE
rts

View File

@ -146,6 +146,79 @@ new_location:
jsr draw_peasant
;=====================
; special archery
;=====================
lda ARROW_SCORE
bpl game_loop
; coming back from archery game
and #$7f ; unset
sta ARROW_SCORE
and #$f ; see if score (bottom) is 0
beq arrow_game_zero
sta TEMP0
lda ARROW_SCORE
lsr
lsr
lsr
lsr
cmp TEMP0
bne arrow_game_lost
arrow_game_won:
; get 3 points
lda #3
jsr score_points
; get bow
lda INVENTORY_1
ora #INV1_BOW
sta INVENTORY_1
; set won
lda GAME_STATE_0
ora #ARROW_BEATEN
sta GAME_STATE_0
lda TEMP0
clc
adc #'0'
sta archery_won_message+14
ldx #<archery_won_message
ldy #>archery_won_message
jsr partial_message_step
jmp game_loop
arrow_game_zero:
ldx #<archery_zero_message
ldy #>archery_zero_message
jsr partial_message_step
jmp arrow_game_lose_common
arrow_game_lost:
lda TEMP0
clc
adc #'0'
sta archery_some_message+24 ; urgh affected by compression
ldx #<archery_some_message
ldy #>archery_some_message
jsr partial_message_step
arrow_game_lose_common:
ldx #<archery_lose_message
ldy #>archery_lose_message
jsr partial_message_step
game_loop:
jsr move_peasant

View File

@ -625,6 +625,10 @@ archery_play_game2:
lda #LOCATION_ARCHERY_GAME
jsr update_map_location
; FIXME: make random
lda #$30
sta ARROW_SCORE
rts

View File

@ -387,6 +387,7 @@ archery_get_arrow_message:
; (get [X]=3-5 bullseyes)
archery_won_message:
.byte 34,"Nice shootin! 3 hits.",34,13
.byte "Says Mendelev. ",34,"Here's",13
.byte "your prize!",34," You got the",13
@ -398,6 +399,7 @@ archery_get_arrow_message:
; BEAT GAME = +3 POINTS
; get bow
archery_zero_message:
.byte 34,"Sorry!",34," says",13
.byte "Dongolev.",34,"Not a single",13
.byte "hit. Your game face must be",13
@ -405,6 +407,7 @@ archery_get_arrow_message:
.byte "back when your shipment",13
.byte "comes in.",0
archery_some_message:
.byte 34,"Sorry!",34," says",13
.byte "Dongolev.",34,"Only 1",13
.byte "hit. Your game face must be",13
@ -412,6 +415,7 @@ archery_get_arrow_message:
.byte "back when your shipment",13
.byte "comes in.",0
archery_lose_message:
.byte 34,"But since you gave us this",13
.byte "trinket, and you obviously",13
.byte "don't have a prayer of",13

View File

@ -102,6 +102,7 @@ APPLEII_MODEL = $8B
ESC_PRESSED = $8C
PREVIOUS_LOCATION= $8D
;=======================
; savegame state
;=======================
@ -158,6 +159,7 @@ KERREK_STATE = $9C
KERREK_DECOMPOSING = $02
KERREK_SKELETON = $03
ARROW_SCORE = $9D ; bottom=score, top=random num needed 3-5?
ARROW_DONE = $80
SCORE_HUNDREDS = $9E
SCORE_TENSONES = $9F