diff --git a/games/peasant/hgr_text_box.s b/games/peasant/hgr_text_box.s index 61794ae6..b2a7a8cf 100644 --- a/games/peasant/hgr_text_box.s +++ b/games/peasant/hgr_text_box.s @@ -44,23 +44,29 @@ hgr_text_box: adc #0 sta OUTH -; -; -; + ; fallthrough + ;======================= + ; disp_put_string + ; OUTL:OUTH has co-ords followed by string + ; CR (13) goes to next line +disp_put_string: ldy #0 lda (OUTL),Y sta CURSOR_X sta SAVED_X - jsr inc_outl - lda (OUTL),Y - sta CURSOR_Y - jsr inc_outl + jsr inc_outl + lda (OUTL),Y + sta CURSOR_Y + jsr inc_outl + +disp_one_line: + disp_put_string_loop: - ldy #0 - lda (OUTL),Y - beq disp_put_string_done + ldy #0 + lda (OUTL),Y + beq disp_put_string_done cmp #13 beq disp_end_of_line diff --git a/games/peasant/inventory.s b/games/peasant/inventory.s index 0232b5eb..e4840a45 100644 --- a/games/peasant/inventory.s +++ b/games/peasant/inventory.s @@ -5,7 +5,113 @@ ;===================== show_inventory: + ;==================== + ; draw text box + lda #0 + sta BOX_X1H + lda #14 + sta BOX_X1L + lda #20 + sta BOX_Y1 + + lda #1 + sta BOX_X2H + lda #5 ; ? + sta BOX_X2L + lda #135 + sta BOX_Y2 + + jsr hgr_partial_save + + jsr draw_box + + ;=================== + ; draw main text + + lda #inventory_message + sta OUTH + + jsr disp_put_string + + ; left column + + lda #28 + sta CURSOR_Y + + ldy #0 +left_column_loop: + + lda #4 + sta CURSOR_X + + tya + pha + + clc + lda left_item_offsets,Y + adc #item_strings + sta OUTH + + jsr disp_one_line + + lda CURSOR_Y + clc + adc #8 + sta CURSOR_Y + + pla + tay + iny + cpy #8 + bne left_column_loop + + ; extra for riches + + + ;================ + ; right column + + lda #28 + sta CURSOR_Y + + ldy #0 +right_column_loop: + + lda #23 + sta CURSOR_X + + tya + pha + + clc + lda right_item_offsets,Y + adc #item_strings + sta OUTH + + jsr disp_one_line + + lda CURSOR_Y + clc + adc #8 + sta CURSOR_Y + + pla + tay + iny + cpy #8 + bne right_column_loop + + + jsr wait_until_keypress rts @@ -20,50 +126,101 @@ show_inventory: .byte "Hit return to go back to list",0 ; first is only printed if have in inventory, though still can -.byte "Press return for description",0 -.byte "Press ESC or Backspace to exit",0 +inventory_message: +.byte 5,106," Press return for description",13 +.byte "Press ESC or Backspace to exit",0 ;==================== ; Inventory Strings ;==================== -.byte "????",0 +unknown_string: +.byte "???",0 + +left_item_offsets: +.byte (item_arrow-item_strings) +.byte (item_baby-item_strings) +.byte (item_kerrek_belt-item_strings) +.byte (item_chicken_feed-item_strings) +.byte (item_funbow-item_strings) +.byte (item_monster_mask-item_strings) +.byte (item_pebbles-item_strings) +.byte (item_pills-item_strings) + +right_item_offsets: +.byte (item_robe-item_strings) +.byte (item_soda-item_strings) +.byte (item_meatball_sub-item_strings) +.byte (item_super_trinket-item_strings) +.byte (item_troghelmet-item_strings) +.byte (item_trogshield-item_strings) +.byte (item_trogsword-item_strings) +.byte (item_impossible-item_strings) + + + + + +item_strings: + +item_arrow: .byte "arrow",0 +item_baby: .byte "baby",0 +item_kerrek_belt: .byte "kerrek belt",0 +item_chicken_feed: .byte "chicken feed",0 -.byte "SuperTime FunBow TM",0 +item_funbow: +.byte "SuprTime FunBow TM",0 ; should be Super, makes column too wide +item_monster_mask: .byte "monster maskus",0 +item_pebbles: .byte "pebbles",0 +item_pills: .byte "pills",0 +item_riches: .byte "riches",0 +item_robe: .byte "robe",0 +item_soda: .byte "soda",0 +item_meatball_sub: .byte "meatball sub",0 +item_super_trinket: .byte "super trinket",0 +item_troghelmet: .byte "TrogHelmet",0 +item_trogshield: .byte "TrogShield",0 +item_trogsword: .byte "TrogSword",0 -;.byte "???",0 +item_impossible: +.byte "???",0 +item_shirt: .byte "shirt",0 ; arrow +arrow_description: .byte "Boy, you sure know how to pick",13 .byte "em! This arrow's kinda pointy even!!",0 ; baby +baby_description: .byte "Awww! Peasant babies are",13 .byte "adorable. No wonder they fetch",13 .byte "such a pretty penny on the black",13 .byte "market.",0 ; kerrek belt +kerrek_belt_description: .byte "Phew! This thing stinks like all",13 .byte "getout. Why couldn't the Kerrek",13 .byte "have kidnapped a hot wench or",13 .byte "something that you coulda saved?",0 ; chicken feed +chicken_feed_description: .byte "Woah! Gold nuggets! Oh",13 .byte "wait...This is just chicken",13 .byte "feed. Crap.",0 diff --git a/games/peasant/parse_input.s b/games/peasant/parse_input.s index 11da60d6..40aad60f 100644 --- a/games/peasant/parse_input.s +++ b/games/peasant/parse_input.s @@ -8,7 +8,7 @@ parse_input: parse_copy: cmp #'C' - bne parse_look + bne parse_inventory ; want copy lda #NEW_FROM_DISK @@ -20,6 +20,14 @@ parse_copy: jmp done_parse_message +parse_inventory: + cmp #'I' + bne parse_look + + jsr show_inventory + + jmp restore_parse_message + parse_look: cmp #'L' bne parse_talk @@ -73,6 +81,9 @@ finish_parse_message: jsr wait_until_keypress + +restore_parse_message: + jsr hgr_partial_restore done_parse_message: diff --git a/games/peasant/peasant1.s b/games/peasant/peasant1.s index 32e11e86..a72cc34f 100644 --- a/games/peasant/peasant1.s +++ b/games/peasant/peasant1.s @@ -173,6 +173,8 @@ peasant_text: .include "parse_input.s" +.include "inventory.s" + .include "score.s" .include "keyboard.s" diff --git a/games/peasant/peasant3.s b/games/peasant/peasant3.s index a2522857..308e36a9 100644 --- a/games/peasant/peasant3.s +++ b/games/peasant/peasant3.s @@ -177,6 +177,8 @@ peasant_text: .include "parse_input.s" +.include "inventory.s" + .include "keyboard.s" .include "wait_a_bit.s" diff --git a/games/peasant/peasant4.s b/games/peasant/peasant4.s index dcc5f29d..a3041e90 100644 --- a/games/peasant/peasant4.s +++ b/games/peasant/peasant4.s @@ -180,6 +180,8 @@ peasant_text: .include "parse_input.s" +.include "inventory.s" + .include "keyboard.s" .include "wait_a_bit.s" diff --git a/games/peasant/zp.inc b/games/peasant/zp.inc index 4bea425e..1841312b 100644 --- a/games/peasant/zp.inc +++ b/games/peasant/zp.inc @@ -124,8 +124,8 @@ INVENTORY_1 = $A0 INV1_MONSTER_MASK = $20 INV1_PEBBLES = $40 INV1_PILLS = $80 + INVENTORY_2 = $A1 - INV2_RICHES = $01 INV2_ROBE = $02 INV2_SODA = $04 INV2_MEATBALL = $08 @@ -133,10 +133,12 @@ INVENTORY_2 = $A1 INV2_TROGHELM = $20 INV2_TROGSHIELD = $40 INV2_TROGSWORD = $80 -INVENTORY_3 = $A2 - INV3_MAP = $01 - INV3_SHIRT = $02 + INV2_IMPOSSIBLE = $01 +INVENTORY_3 = $A2 + INV3_RICHES = $01 + INV3_SHIRT = $02 + INV3_MAP = $04 INVENTORY_1_GONE = $A3 ; had item, but now it's gone INVENTORY_2_GONE = $A4