mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-08-15 08:27:41 +00:00
peasant: inventory keyboard navigation works
This commit is contained in:
@@ -43,6 +43,10 @@ hgr_1x8_sprite_yloop:
|
|||||||
lda (GBASL),Y
|
lda (GBASL),Y
|
||||||
hds_smc1:
|
hds_smc1:
|
||||||
eor $D000,X ; not $0000 or it will make it ZP
|
eor $D000,X ; not $0000 or it will make it ZP
|
||||||
|
|
||||||
|
invert_smc1:
|
||||||
|
eor #$00 ; invert
|
||||||
|
|
||||||
sta (GBASL),Y
|
sta (GBASL),Y
|
||||||
|
|
||||||
inx
|
inx
|
||||||
|
@@ -7,10 +7,23 @@ show_inventory:
|
|||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta INVENTORY_X
|
sta INVENTORY_X
|
||||||
|
lda #28
|
||||||
sta INVENTORY_Y
|
sta INVENTORY_Y
|
||||||
|
|
||||||
|
;=================
|
||||||
|
; save bg
|
||||||
|
|
||||||
|
lda #20
|
||||||
|
sta BOX_Y1
|
||||||
|
lda #135
|
||||||
|
sta BOX_Y2
|
||||||
|
|
||||||
|
jsr hgr_partial_save
|
||||||
|
|
||||||
|
|
||||||
;====================
|
;====================
|
||||||
; draw text box
|
; draw text box
|
||||||
|
draw_inv_box:
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta BOX_X1H
|
sta BOX_X1H
|
||||||
@@ -26,13 +39,14 @@ show_inventory:
|
|||||||
lda #135
|
lda #135
|
||||||
sta BOX_Y2
|
sta BOX_Y2
|
||||||
|
|
||||||
jsr hgr_partial_save
|
|
||||||
|
|
||||||
|
|
||||||
jsr draw_box
|
jsr draw_box
|
||||||
|
|
||||||
;===================
|
;===================
|
||||||
; draw main text
|
; draw main text
|
||||||
|
draw_inv_text:
|
||||||
lda #<inventory_message
|
lda #<inventory_message
|
||||||
sta OUTL
|
sta OUTL
|
||||||
lda #>inventory_message
|
lda #>inventory_message
|
||||||
@@ -51,6 +65,18 @@ show_inventory:
|
|||||||
sta INVENTORY_MASK
|
sta INVENTORY_MASK
|
||||||
left_column_loop:
|
left_column_loop:
|
||||||
|
|
||||||
|
lda INVENTORY_X ; we are column 0
|
||||||
|
bne not_left_inverted
|
||||||
|
|
||||||
|
lda CURSOR_Y
|
||||||
|
cmp INVENTORY_Y
|
||||||
|
bne not_left_inverted
|
||||||
|
|
||||||
|
lda #$7f
|
||||||
|
sta invert_smc1+1
|
||||||
|
|
||||||
|
not_left_inverted:
|
||||||
|
|
||||||
lda #4
|
lda #4
|
||||||
sta CURSOR_X
|
sta CURSOR_X
|
||||||
|
|
||||||
@@ -80,6 +106,11 @@ left_print_item:
|
|||||||
|
|
||||||
jsr disp_one_line
|
jsr disp_one_line
|
||||||
|
|
||||||
|
; reset inverse
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
sta invert_smc1+1
|
||||||
|
|
||||||
lda CURSOR_Y
|
lda CURSOR_Y
|
||||||
clc
|
clc
|
||||||
adc #8
|
adc #8
|
||||||
@@ -88,6 +119,7 @@ left_print_item:
|
|||||||
asl INVENTORY_MASK
|
asl INVENTORY_MASK
|
||||||
|
|
||||||
pla
|
pla
|
||||||
|
|
||||||
tay
|
tay
|
||||||
iny
|
iny
|
||||||
cpy #8
|
cpy #8
|
||||||
@@ -105,20 +137,47 @@ left_print_item:
|
|||||||
sta CURSOR_Y
|
sta CURSOR_Y
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
lda #1
|
||||||
|
sta INVENTORY_MASK
|
||||||
right_column_loop:
|
right_column_loop:
|
||||||
|
|
||||||
|
lda INVENTORY_X ; we are column 1
|
||||||
|
beq not_right_inverted
|
||||||
|
|
||||||
|
lda CURSOR_Y
|
||||||
|
cmp INVENTORY_Y
|
||||||
|
bne not_right_inverted
|
||||||
|
|
||||||
|
lda #$7f
|
||||||
|
sta invert_smc1+1
|
||||||
|
|
||||||
|
not_right_inverted:
|
||||||
|
|
||||||
lda #23
|
lda #23
|
||||||
sta CURSOR_X
|
sta CURSOR_X
|
||||||
|
|
||||||
tya
|
tya
|
||||||
pha
|
pha
|
||||||
|
|
||||||
|
lda INVENTORY_MASK
|
||||||
|
and INVENTORY_2
|
||||||
|
beq right_questionmarks
|
||||||
|
|
||||||
|
right_have_item:
|
||||||
clc
|
clc
|
||||||
lda right_item_offsets,Y
|
lda right_item_offsets,Y
|
||||||
adc #<item_strings
|
adc #<item_strings
|
||||||
sta OUTL
|
sta OUTL
|
||||||
lda #0
|
lda #0
|
||||||
adc #>item_strings
|
adc #>item_strings
|
||||||
|
jmp right_print_item
|
||||||
|
|
||||||
|
right_questionmarks:
|
||||||
|
lda #<unknown_string
|
||||||
|
sta OUTL
|
||||||
|
lda #>unknown_string
|
||||||
|
|
||||||
|
right_print_item:
|
||||||
sta OUTH
|
sta OUTH
|
||||||
|
|
||||||
jsr disp_one_line
|
jsr disp_one_line
|
||||||
@@ -128,17 +187,112 @@ right_column_loop:
|
|||||||
adc #8
|
adc #8
|
||||||
sta CURSOR_Y
|
sta CURSOR_Y
|
||||||
|
|
||||||
|
asl INVENTORY_MASK
|
||||||
|
|
||||||
|
; reset inverse
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
sta invert_smc1+1
|
||||||
|
|
||||||
pla
|
pla
|
||||||
|
|
||||||
tay
|
tay
|
||||||
iny
|
iny
|
||||||
cpy #8
|
cpy #8
|
||||||
bne right_column_loop
|
bne right_column_loop
|
||||||
|
|
||||||
|
|
||||||
jsr wait_until_keypress
|
handle_inv_keypress:
|
||||||
|
|
||||||
|
lda KEYPRESS
|
||||||
|
bpl handle_inv_keypress ; no keypress
|
||||||
|
|
||||||
|
bit KEYRESET ; clear keyboard strobe
|
||||||
|
|
||||||
|
and #$7f ; clear top bit
|
||||||
|
|
||||||
|
|
||||||
|
cmp #27
|
||||||
|
beq done_inv_keypress ; ESCAPE
|
||||||
|
cmp #$7f
|
||||||
|
beq done_inv_keypress ; DELETE
|
||||||
|
|
||||||
|
inv_check_down:
|
||||||
|
cmp #$0A
|
||||||
|
beq inv_handle_down
|
||||||
|
cmp #'S'
|
||||||
|
bne inv_check_up
|
||||||
|
inv_handle_down:
|
||||||
|
lda INVENTORY_Y
|
||||||
|
clc
|
||||||
|
adc #$8
|
||||||
|
sta INVENTORY_Y
|
||||||
|
jmp inv_done_moving
|
||||||
|
|
||||||
|
inv_check_up:
|
||||||
|
cmp #$0B
|
||||||
|
beq inv_handle_up
|
||||||
|
cmp #'W'
|
||||||
|
bne inv_check_left_right
|
||||||
|
inv_handle_up:
|
||||||
|
lda INVENTORY_Y
|
||||||
|
sec
|
||||||
|
sbc #$8
|
||||||
|
sta INVENTORY_Y
|
||||||
|
jmp inv_done_moving
|
||||||
|
|
||||||
|
inv_check_left_right:
|
||||||
|
cmp #$15
|
||||||
|
beq inv_handle_left_right
|
||||||
|
cmp #'D'
|
||||||
|
beq inv_handle_left_right
|
||||||
|
cmp #$08
|
||||||
|
beq inv_handle_left_right
|
||||||
|
cmp #'A'
|
||||||
|
bne inv_check_return
|
||||||
|
inv_handle_left_right:
|
||||||
|
lda INVENTORY_X
|
||||||
|
eor #$1
|
||||||
|
sta INVENTORY_X
|
||||||
|
jmp inv_done_moving
|
||||||
|
|
||||||
|
inv_check_return:
|
||||||
|
|
||||||
|
|
||||||
|
inv_done_moving:
|
||||||
|
;================
|
||||||
|
; check bounds
|
||||||
|
|
||||||
|
lda INVENTORY_Y
|
||||||
|
cmp #28
|
||||||
|
bcc inv_y_set_top ; blt too small
|
||||||
|
cmp #100
|
||||||
|
bcs inv_y_set_bottom ; bge
|
||||||
|
bcc inv_y_done ; bra
|
||||||
|
|
||||||
|
inv_y_set_top:
|
||||||
|
lda #100
|
||||||
|
jmp inv_y_done
|
||||||
|
|
||||||
|
inv_y_set_bottom:
|
||||||
|
lda #28
|
||||||
|
|
||||||
|
inv_y_done:
|
||||||
|
sta INVENTORY_Y
|
||||||
|
|
||||||
|
;================
|
||||||
|
; clear box
|
||||||
|
|
||||||
|
;================
|
||||||
|
; repeat
|
||||||
|
|
||||||
|
jmp draw_inv_box
|
||||||
|
|
||||||
|
done_inv_keypress:
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
;======================
|
;======================
|
||||||
; text
|
; text
|
||||||
;======================
|
;======================
|
||||||
@@ -152,7 +306,7 @@ right_column_loop:
|
|||||||
; first is only printed if have in inventory, though still can
|
; first is only printed if have in inventory, though still can
|
||||||
inventory_message:
|
inventory_message:
|
||||||
.byte 5,106," Press return for description",13
|
.byte 5,106," Press return for description",13
|
||||||
.byte "Press ESC or Backspace to exit",0
|
.byte " Press ESC or DELETE to exit",0
|
||||||
|
|
||||||
;====================
|
;====================
|
||||||
; Inventory Strings
|
; Inventory Strings
|
||||||
@@ -250,6 +404,7 @@ chicken_feed_description:
|
|||||||
.byte "feed. Crap.",0
|
.byte "feed. Crap.",0
|
||||||
|
|
||||||
; SuperTime FunBow TM
|
; SuperTime FunBow TM
|
||||||
|
funbow_description:
|
||||||
.byte "This is a pretty fancy bow.",13
|
.byte "This is a pretty fancy bow.",13
|
||||||
.byte "You're suprised those shady",13
|
.byte "You're suprised those shady",13
|
||||||
.byte "archers give away such decent",13
|
.byte "archers give away such decent",13
|
||||||
@@ -257,17 +412,20 @@ chicken_feed_description:
|
|||||||
.byte "fish in a bag.",0
|
.byte "fish in a bag.",0
|
||||||
|
|
||||||
; monster maskus
|
; monster maskus
|
||||||
|
monster_maskus_description:
|
||||||
.byte "Man, those pagans sure can make",13
|
.byte "Man, those pagans sure can make",13
|
||||||
.byte "a freaky lookin mask when they",13
|
.byte "a freaky lookin mask when they",13
|
||||||
.byte "want to. It's like those theatre",13
|
.byte "want to. It's like those theatre",13
|
||||||
.byte "masks' evil uncle or something",0
|
.byte "masks' evil uncle or something",0
|
||||||
|
|
||||||
; pebbles
|
; pebbles
|
||||||
|
pebbles_description:
|
||||||
.byte "Woah! Gray chicken feed! Oh",13
|
.byte "Woah! Gray chicken feed! Oh",13
|
||||||
.byte "wait... those are just pebbles.",13
|
.byte "wait... those are just pebbles.",13
|
||||||
.byte "Heavier than they look, though.",0
|
.byte "Heavier than they look, though.",0
|
||||||
|
|
||||||
; pills
|
; pills
|
||||||
|
pills_description:
|
||||||
.byte "The innkeeper's medication says",13
|
.byte "The innkeeper's medication says",13
|
||||||
.byte "it's supposed to tread ",34,"general",13
|
.byte "it's supposed to tread ",34,"general",13
|
||||||
.byte "oldness. May cause checkers",13
|
.byte "oldness. May cause checkers",13
|
||||||
@@ -275,6 +433,7 @@ chicken_feed_description:
|
|||||||
.byte "overall pee smell.",34,0
|
.byte "overall pee smell.",34,0
|
||||||
|
|
||||||
; riches
|
; riches
|
||||||
|
riches_description:
|
||||||
.byte "Riches, dude. Riches. That",13
|
.byte "Riches, dude. Riches. That",13
|
||||||
.byte "peasant lady totally has to",13
|
.byte "peasant lady totally has to",13
|
||||||
.byte "share some of this with you,",13
|
.byte "share some of this with you,",13
|
||||||
@@ -282,15 +441,18 @@ chicken_feed_description:
|
|||||||
.byte "clawed sceptre thing.",0
|
.byte "clawed sceptre thing.",0
|
||||||
|
|
||||||
; robe
|
; robe
|
||||||
|
robe_description:
|
||||||
.byte "A propa peasant robe. It smells",13
|
.byte "A propa peasant robe. It smells",13
|
||||||
.byte "freshly washed and has the",13
|
.byte "freshly washed and has the",13
|
||||||
.byte "initials 'N.N' sewn onto the",13
|
.byte "initials 'N.N' sewn onto the",13
|
||||||
.byte "tag.",0
|
.byte "tag.",0
|
||||||
|
|
||||||
; soda
|
; soda
|
||||||
|
soda_description:
|
||||||
.byte "A full bottle of popular soda.",0
|
.byte "A full bottle of popular soda.",0
|
||||||
|
|
||||||
; meatball sub
|
; meatball sub
|
||||||
|
meatball_sub_description:
|
||||||
.byte "A piping hot meatball sub fresh",13
|
.byte "A piping hot meatball sub fresh",13
|
||||||
.byte "from the bottom of a dingy old",13
|
.byte "from the bottom of a dingy old",13
|
||||||
.byte "well. All you need is a bag of",13
|
.byte "well. All you need is a bag of",13
|
||||||
@@ -298,6 +460,7 @@ chicken_feed_description:
|
|||||||
.byte "meal!",0
|
.byte "meal!",0
|
||||||
|
|
||||||
; super trinket
|
; super trinket
|
||||||
|
super_trinket_description:
|
||||||
.byte "This super trinket is weird. It",13
|
.byte "This super trinket is weird. It",13
|
||||||
.byte "looks like it could either kill",13
|
.byte "looks like it could either kill",13
|
||||||
.byte "you or make you the hit of your",13
|
.byte "you or make you the hit of your",13
|
||||||
|
@@ -459,6 +459,9 @@ int main(int argc, char **argv) {
|
|||||||
fprintf(stderr,"Warning! x1 should be a multiple of 7\n");
|
fprintf(stderr,"Warning! x1 should be a multiple of 7\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf("; %d %d %d %d\n",x1,y1,x2,y2);
|
||||||
|
printf("sprite:\n");
|
||||||
|
|
||||||
for(y=y1;y<y2;y++) {
|
for(y=y1;y<y2;y++) {
|
||||||
printf("\t.byte ");
|
printf("\t.byte ");
|
||||||
for(x=x1/7;x<=x2/7;x++) {
|
for(x=x1/7;x<=x2/7;x++) {
|
||||||
|
Reference in New Issue
Block a user