diff --git a/games/peasant/cottage.s b/games/peasant/cottage.s index ad49df0e..11048fd7 100644 --- a/games/peasant/cottage.s +++ b/games/peasant/cottage.s @@ -18,6 +18,9 @@ cottage: lda #117 sta PEASANT_Y + lda #PEASANT_DIR_RIGHT + sta PEASANT_DIR + ;================== ; draw background diff --git a/games/peasant/graphics/lake_w.png b/games/peasant/graphics/lake_w.png index fb3a07fd..b4aa8d63 100644 Binary files a/games/peasant/graphics/lake_w.png and b/games/peasant/graphics/lake_w.png differ diff --git a/games/peasant/hgr_1x5_sprite.s b/games/peasant/hgr_1x5_sprite.s new file mode 100644 index 00000000..fa9f7ca0 --- /dev/null +++ b/games/peasant/hgr_1x5_sprite.s @@ -0,0 +1,45 @@ + + ;====================== + ; hgr 1x5 draw sprite + ;====================== + ; over-writes + ; SPRITE in INL/INH + ; Location at CURSOR_X CURSOR_Y*7 + ; X, Y, A trashed + +hgr_draw_sprite_1x5: + + ; set up pointers + lda INL + sta h1x5_smc1+1 + lda INH + sta h1x5_smc1+2 + + ldx #0 +hgr_1x5_sprite_yloop: + txa + pha + + clc + adc CURSOR_Y + + ldx #0 + ldy #0 + + ; calc GBASL/GBASH + jsr HPOSN ; (Y,X),(A) (values stored in HGRX,XH,Y) + + pla + tax + + ldy CURSOR_X + +h1x5_smc1: + lda $D000,X ; not $0000 or it will make it ZP + sta (GBASL),Y + + inx + cpx #5 + bne hgr_1x5_sprite_yloop + + rts diff --git a/games/peasant/lake_w.s b/games/peasant/lake_w.s index 6a279b94..9084e10d 100644 --- a/games/peasant/lake_w.s +++ b/games/peasant/lake_w.s @@ -4,6 +4,24 @@ ; Lake West ;************************ lake_west: + lda #0 + sta FRAME + + ;========================= + ; init peasant position + ; draw at 7,155 + + lda #1 + sta PEASANT_X + lda #155 + sta PEASANT_Y + + lda #PEASANT_DIR_RIGHT + sta PEASANT_DIR + + ;================== + ; draw background + lda #<(lake_w_lzsa) sta getsrc_smc+1 lda #>(lake_w_lzsa) @@ -20,17 +38,323 @@ lake_west: jsr hgr_put_string +; jsr display_cottage_text3 + + ;==================== + ; save background + + lda PEASANT_X + sta CURSOR_X + lda PEASANT_Y + sta CURSOR_Y + + ;======================= + ; walking + + jsr save_bg_7x30 + +lake_w_walk_loop: + jsr restore_bg_7x30 + + lda FRAME +check_lake_w_action1: + cmp #0 + bne check_lake_w_action2 + jsr display_cottage_text3 + jmp done_lake_w_action + +check_lake_w_action2: + cmp #20 + bne done_lake_w_action + jsr display_lake_w_text1 + +done_lake_w_action: + + + jsr update_bubbles + + + lda FRAME + asl + tax + + lda lake_w_path,X + bmi done_lake_w + sta PEASANT_X + sta CURSOR_X + + inx + lda lake_w_path,X + sta PEASANT_Y + sta CURSOR_Y + + jsr save_bg_7x30 + + jsr draw_peasant jsr wait_until_keypress + inc FRAME + + jmp lake_w_walk_loop + + + ;=================== + ; done + +done_lake_w: + rts + ; same message as end of cottage ; walk halfway across the screen lake_w_message1: - .byte 0,0,"You head east toward the",0 - .byte 0,0,"mountain atop which TROGDOR lives.",0 + .byte 8,41,"You head east toward the",0 + .byte 8,49,"mountain atop which",0 + .byte 8,57,"TROGDOR lives.",0 ; walk to edge + + + ;============================ + ; display cottage text 1 + ;============================ +display_lake_w_text1: + + ;==================== + ; draw text box + + lda #0 + sta BOX_X1H + lda #43 + sta BOX_X1L + lda #24 + sta BOX_Y1 + + lda #0 + sta BOX_X2H + lda #253 + sta BOX_X2L + lda #82 + sta BOX_Y2 + + jsr draw_box + + lda #lake_w_message1 + sta OUTH + + jsr hgr_put_string + jsr hgr_put_string + jsr hgr_put_string + + rts + + +lake_w_path: + .byte 1,155 + .byte 2,155 + .byte 3,155 + .byte 4,155 + .byte 5,155 + .byte 6,155 + .byte 7,155 + .byte 8,155 + .byte 9,155 + .byte 10,155 + .byte 11,155 + .byte 12,155 + .byte 13,155 + .byte 14,155 + .byte 15,155 + .byte 16,155 + .byte 17,155 + .byte 18,155 + .byte 19,155 + .byte 20,155 + .byte 21,155 + .byte 22,155 + .byte 23,155 + .byte 24,155 + .byte 25,155 + .byte 26,155 + .byte 27,155 + .byte 28,155 + .byte 29,155 + .byte 30,155 + .byte 31,155 + .byte 32,155 + .byte 33,155 + .byte 34,155 + .byte 35,155 + .byte 36,155 + .byte 37,155 + .byte 38,155 + .byte 39,155 + .byte $FF,$FF + + + ;================ + ; update bubbles +update_bubbles: + + ; 33,91 + ; 27,125 + ; 33,141 + ; 35,115 + + ; bubble 1 + + lda FRAME + and #7 + asl + tax + + lda bubble_progress,X + sta INL + inx + lda bubble_progress,X + sta INH + + lda #33 + sta CURSOR_X + lda #91 + sta CURSOR_Y + + jsr hgr_draw_sprite_1x5 + + + ; bubble 2 + + lda FRAME + adc #3 + and #7 + asl + tax + + lda bubble_progress,X + sta INL + inx + lda bubble_progress,X + sta INH + + lda #27 + sta CURSOR_X + lda #125 + sta CURSOR_Y + + jsr hgr_draw_sprite_1x5 + + ; bubble 3 + + lda FRAME + adc #5 + and #7 + asl + tax + + lda bubble_progress,X + sta INL + inx + lda bubble_progress,X + sta INH + + lda #33 + sta CURSOR_X + lda #141 + sta CURSOR_Y + + jsr hgr_draw_sprite_1x5 + + ; bubble 4 + + lda FRAME + adc #2 + and #7 + asl + tax + + lda bubble_progress,X + sta INL + inx + lda bubble_progress,X + sta INH + + lda #35 + sta CURSOR_X + lda #115 + sta CURSOR_Y + + jsr hgr_draw_sprite_1x5 + + + + + + + rts + + +bubble_progress: + .word bubble_sprite0 + .word bubble_sprite0 + .word bubble_sprite1 + .word bubble_sprite0 + .word bubble_sprite2 + .word bubble_sprite3 + .word bubble_sprite4 + .word bubble_sprite5 + + +bubble_sprite0: + .byte $2A + .byte $AA + .byte $2A + .byte $80 ; 1 000 0000 + .byte $2A + +bubble_sprite1: + .byte $2A + .byte $AA + .byte $2A + .byte $88 ; 1 XXX 10XX + .byte $22 ; 0 010 XX10 + +bubble_sprite2: + .byte $2A + .byte $AA + .byte $22 ; 0 010 XX10 + .byte $88 ; 1 XXX 10XX + .byte $2A + +bubble_sprite3: + .byte $2A + .byte $A2 ; 101X XX10 + .byte $08 ; 00XX 1XX0 + .byte $88 ; 1XX0 10XX + .byte $2A + +bubble_sprite4: + .byte $08 ; 0xx0 10xx + .byte $A2 ; 101x xx10 + .byte $08 ; 00xx 1xx0 + .byte $88 ; 1xx0 10XX + .byte $2A ; 0010 1010 + +bubble_sprite5: + .byte $2A ; 0010 1010 + .byte $88 ; 1XX0 10XX + .byte $22 ; 001X XX10 + .byte $88 ; 1XX0 10XX + .byte $2A ; 0010 1010 + + + + + + + diff --git a/games/peasant/peasant.s b/games/peasant/peasant.s index d54ec40a..0fa8b53f 100644 --- a/games/peasant/peasant.s +++ b/games/peasant/peasant.s @@ -22,7 +22,7 @@ peasant_quest: ; Cottage ;************************ - jsr cottage +; jsr cottage ;************************ ; Lake West @@ -71,5 +71,6 @@ peasant_quest: .include "draw_box.s" .include "hgr_rectangle.s" .include "hgr_7x30_sprite.s" +.include "hgr_1x5_sprite.s" .include "graphics/graphics.inc" diff --git a/games/peasant/zp.inc b/games/peasant/zp.inc index f7eac7d3..24200b4a 100644 --- a/games/peasant/zp.inc +++ b/games/peasant/zp.inc @@ -14,9 +14,14 @@ GBASH = $27 PEASANT_X = $60 PEASANT_Y = $61 -CURSOR_X = $62 -CURSOR_Y = $63 -FRAME = $64 +PEASANT_DIR = $62 + PEASANT_DIR_UP = 0 + PEASANT_DIR_RIGHT = 1 + PEASANT_DIR_LEFT = 2 + PEASANT_DIR_DOWN = 3 +CURSOR_X = $63 +CURSOR_Y = $64 +FRAME = $65 WHICH_LOAD=$80