From 9ab1daa636357024cf3809afd3b757e5ae53c64f Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Thu, 12 Aug 2021 14:45:25 -0400 Subject: [PATCH] peasant: update lake_e --- games/peasant/Makefile | 2 +- games/peasant/graphics/lake_e.png | Bin 18247 -> 18391 bytes games/peasant/hgr_save_restore.c | 300 ------------------------------ games/peasant/hgr_save_restore.s | 233 +++++++++++++++++++++++ games/peasant/lake_e.s | 287 +++++++++++++++++++++++++++- games/peasant/peasant.s | 3 +- 6 files changed, 521 insertions(+), 304 deletions(-) delete mode 100644 games/peasant/hgr_save_restore.c create mode 100644 games/peasant/hgr_save_restore.s diff --git a/games/peasant/Makefile b/games/peasant/Makefile index a3e514da..cb1e4af4 100644 --- a/games/peasant/Makefile +++ b/games/peasant/Makefile @@ -68,7 +68,7 @@ PEASANT: peasant.o peasant.o: peasant.s graphics/graphics.inc sprites/peasant_sprite.inc \ draw_box.s hgr_rectangle.s hgr_font.s hgr_input.s \ - hgr_7x30_sprite.s \ + hgr_7x30_sprite.s hgr_1x5_sprite.s hgr_save_restore.s \ title.s directions.s \ cottage.s lake_w.s lake_e.s river.s knight.s \ ending.s diff --git a/games/peasant/graphics/lake_e.png b/games/peasant/graphics/lake_e.png index ae6f656f98b4e0125d860dc82f6ed72b5850ada0..889aa4947e33e5c90580147e89a87542dd2b3af6 100644 GIT binary patch delta 14087 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 FV1j!Zbz1-c delta 14110 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 diff --git a/games/peasant/hgr_save_restore.c b/games/peasant/hgr_save_restore.c deleted file mode 100644 index f519c444..00000000 --- a/games/peasant/hgr_save_restore.c +++ /dev/null @@ -1,300 +0,0 @@ - ;======================= - ; HGR Overlay - ;======================= - ; loads from DRAW_PAGE - ; OR with $9000 - ; store back to DRAW_PAGE - -hgr_overlay: - lda DRAW_PAGE - cmp #$20 - beq hgr_overlay_page1 - jmp hgr_overlay_page2 - -hgr_overlay_page1: - - ldy #0 -hgr_overlay_page1_loop: - - lda $9000,Y - ora $2000,Y - sta $2000,Y - - lda $9100,Y - ora $2100,Y - sta $2100,Y - - lda $9200,Y - ora $2200,Y - sta $2200,Y - - lda $9300,Y - ora $2300,Y - sta $2300,Y - - lda $9400,Y - ora $2400,Y - sta $2400,Y - - lda $9500,Y - ora $2500,Y - sta $2500,Y - - lda $9600,Y - ora $2600,Y - sta $2600,Y - - lda $9700,Y - ora $2700,Y - sta $2700,Y - - lda $9800,Y - ora $2800,Y - sta $2800,Y - - lda $9900,Y - ora $2900,Y - sta $2900,Y - - lda $9A00,Y - ora $2A00,Y - sta $2A00,Y - - lda $9B00,Y - ora $2B00,Y - sta $2B00,Y - - lda $9C00,Y - ora $2C00,Y - sta $2C00,Y - - lda $9D00,Y - ora $2D00,Y - sta $2D00,Y - - lda $9E00,Y - ora $2E00,Y - sta $2E00,Y - - lda $9F00,Y - ora $2F00,Y - sta $2F00,Y - - - - lda $A000,Y - ora $3000,Y - sta $3000,Y - - lda $A100,Y - ora $3100,Y - sta $3100,Y - - lda $A200,Y - ora $3200,Y - sta $3200,Y - - lda $A300,Y - ora $3300,Y - sta $3300,Y - - lda $A400,Y - ora $3400,Y - sta $3400,Y - - lda $A500,Y - ora $3500,Y - sta $3500,Y - - lda $A600,Y - ora $3600,Y - sta $3600,Y - - lda $A700,Y - ora $3700,Y - sta $3700,Y - - lda $A800,Y - ora $3800,Y - sta $3800,Y - - lda $A900,Y - ora $3900,Y - sta $3900,Y - - lda $AA00,Y - ora $3A00,Y - sta $3A00,Y - - lda $AB00,Y - ora $3B00,Y - sta $3B00,Y - - lda $AC00,Y - ora $3C00,Y - sta $3C00,Y - - lda $AD00,Y - ora $3D00,Y - sta $3D00,Y - - lda $AE00,Y - ora $3E00,Y - sta $3E00,Y - - lda $AF00,Y - ora $3F00,Y - sta $3F00,Y - - - iny - beq hgr_page1_overlay_done - jmp hgr_overlay_page1_loop - -hgr_page1_overlay_done: - rts - - -hgr_overlay_page2: - - ldy #0 -hgr_overlay_page2_loop: - - lda $9000,Y - ora $4000,Y - sta $4000,Y - - lda $9100,Y - ora $4100,Y - sta $4100,Y - - lda $9200,Y - ora $4200,Y - sta $4200,Y - - lda $9300,Y - ora $4300,Y - sta $4300,Y - - lda $9400,Y - ora $4400,Y - sta $4400,Y - - lda $9500,Y - ora $4500,Y - sta $4500,Y - - lda $9600,Y - ora $4600,Y - sta $4600,Y - - lda $9700,Y - ora $4700,Y - sta $4700,Y - - lda $9800,Y - ora $4800,Y - sta $4800,Y - - lda $9900,Y - ora $4900,Y - sta $4900,Y - - lda $9A00,Y - ora $4A00,Y - sta $4A00,Y - - lda $9B00,Y - ora $4B00,Y - sta $4B00,Y - - lda $9C00,Y - ora $4C00,Y - sta $4C00,Y - - lda $9D00,Y - ora $4D00,Y - sta $4D00,Y - - lda $9E00,Y - ora $4E00,Y - sta $4E00,Y - - lda $9F00,Y - ora $4F00,Y - sta $4F00,Y - - - - lda $A000,Y - ora $5000,Y - sta $5000,Y - - lda $A100,Y - ora $5100,Y - sta $5100,Y - - lda $A200,Y - ora $5200,Y - sta $5200,Y - - lda $A300,Y - ora $5300,Y - sta $5300,Y - - lda $A400,Y - ora $5400,Y - sta $5400,Y - - lda $A500,Y - ora $5500,Y - sta $5500,Y - - lda $A600,Y - ora $5600,Y - sta $5600,Y - - lda $A700,Y - ora $5700,Y - sta $5700,Y - - lda $A800,Y - ora $5800,Y - sta $5800,Y - - lda $A900,Y - ora $5900,Y - sta $5900,Y - - lda $AA00,Y - ora $5A00,Y - sta $5A00,Y - - lda $AB00,Y - ora $5B00,Y - sta $5B00,Y - - lda $AC00,Y - ora $5C00,Y - sta $5C00,Y - - lda $AD00,Y - ora $5D00,Y - sta $5D00,Y - - lda $AE00,Y - ora $5E00,Y - sta $5E00,Y - - lda $AF00,Y - ora $5F00,Y - sta $5F00,Y - - - iny - beq hgr_page2_overlay_done - jmp hgr_overlay_page2_loop - -hgr_page2_overlay_done: - rts - diff --git a/games/peasant/hgr_save_restore.s b/games/peasant/hgr_save_restore.s new file mode 100644 index 00000000..799a089a --- /dev/null +++ b/games/peasant/hgr_save_restore.s @@ -0,0 +1,233 @@ + ;======================= + ; HGR Save + ;======================= + ; loads from $40 + ; save to $20 + +hgr_save: + + ldy #0 +hgr_save_loop: + lda $4000,Y + sta $2000,Y + + lda $4100,Y + sta $2100,Y + + lda $4200,Y + sta $2200,Y + + lda $4300,Y + sta $2300,Y + + lda $4400,Y + sta $2400,Y + + lda $4500,Y + sta $2500,Y + + lda $4600,Y + sta $2600,Y + + lda $4700,Y + sta $2700,Y + + lda $4800,Y + sta $2800,Y + + lda $4900,Y + sta $2900,Y + + lda $4A00,Y + sta $2A00,Y + + lda $4B00,Y + sta $2B00,Y + + lda $4C00,Y + sta $2C00,Y + + lda $4D00,Y + sta $2D00,Y + + lda $4E00,Y + sta $2E00,Y + + lda $4F00,Y + sta $2F00,Y + + ; + + lda $5000,Y + sta $3000,Y + + lda $5100,Y + sta $3100,Y + + lda $5200,Y + sta $3200,Y + + lda $5300,Y + sta $3300,Y + + lda $5400,Y + sta $3400,Y + + lda $5500,Y + sta $3500,Y + + lda $5600,Y + sta $3600,Y + + lda $5700,Y + sta $3700,Y + + lda $5800,Y + sta $3800,Y + + lda $5900,Y + sta $3900,Y + + lda $5A00,Y + sta $3A00,Y + + lda $5B00,Y + sta $3B00,Y + + lda $5C00,Y + sta $3C00,Y + + lda $5D00,Y + sta $3D00,Y + + lda $5E00,Y + sta $3E00,Y + + lda $5F00,Y + sta $3F00,Y + + iny + beq hgr_save_done + jmp hgr_save_loop + +hgr_save_done: + rts + + + + + ;======================= + ; HGR Restore + ;======================= + ; loads from $20 + ; save to $40 + +hgr_restore: + + ldy #0 +hgr_restore_loop: + lda $2000,Y + sta $4000,Y + + lda $2100,Y + sta $4100,Y + + lda $2200,Y + sta $4200,Y + + lda $2300,Y + sta $4300,Y + + lda $2400,Y + sta $4400,Y + + lda $2500,Y + sta $4500,Y + + lda $2600,Y + sta $4600,Y + + lda $2700,Y + sta $4700,Y + + lda $2800,Y + sta $4800,Y + + lda $2900,Y + sta $4900,Y + + lda $2A00,Y + sta $4A00,Y + + lda $2B00,Y + sta $4B00,Y + + lda $2C00,Y + sta $4C00,Y + + lda $2D00,Y + sta $4D00,Y + + lda $2E00,Y + sta $4E00,Y + + lda $2F00,Y + sta $4F00,Y + + ; + + lda $3000,Y + sta $5000,Y + + lda $3100,Y + sta $5100,Y + + lda $3200,Y + sta $5200,Y + + lda $3300,Y + sta $5300,Y + + lda $3400,Y + sta $5400,Y + + lda $3500,Y + sta $5500,Y + + lda $3600,Y + sta $5600,Y + + lda $3700,Y + sta $5700,Y + + lda $3800,Y + sta $5800,Y + + lda $3900,Y + sta $5900,Y + + lda $3A00,Y + sta $5A00,Y + + lda $3B00,Y + sta $5B00,Y + + lda $3C00,Y + sta $5C00,Y + + lda $3D00,Y + sta $5D00,Y + + lda $3E00,Y + sta $5E00,Y + + lda $3F00,Y + sta $5F00,Y + + iny + beq hgr_restore_done + jmp hgr_restore_loop + +hgr_restore_done: + rts + diff --git a/games/peasant/lake_e.s b/games/peasant/lake_e.s index f0ac97be..ed319c95 100644 --- a/games/peasant/lake_e.s +++ b/games/peasant/lake_e.s @@ -4,6 +4,22 @@ ; Lake East ;************************ lake_east: + lda #0 + sta FRAME + + ;========================= + ; init peasant position + ; draw at 7,152 + + lda #7 + sta PEASANT_X + lda #152 + sta PEASANT_Y + + lda #PEASANT_DIR_RIGHT + sta PEASANT_DIR + + lda #<(lake_e_lzsa) sta getsrc_smc+1 lda #>(lake_e_lzsa) @@ -20,17 +36,284 @@ lake_east: jsr hgr_put_string + jsr hgr_save + + + ;==================== + ; save background + + lda PEASANT_X + sta CURSOR_X + lda PEASANT_Y + sta CURSOR_Y + + ;======================= + ; walking + + jsr save_bg_7x30 + +lake_e_walk_loop: + jsr restore_bg_7x30 + + lda FRAME +check_lake_e_action1: + cmp #10 + bne check_lake_e_action2 + jsr display_lake_e_text1 + jmp done_lake_e_action + +check_lake_e_action2: + cmp #27 + bne done_lake_e_action + jsr hgr_restore + lda #PEASANT_DIR_UP + sta PEASANT_DIR + +done_lake_e_action: + + jsr update_bubbles_e + + + lda FRAME + asl + tax + + lda lake_e_path,X + bmi done_lake_e + sta PEASANT_X + sta CURSOR_X + + inx + lda lake_e_path,X + sta PEASANT_Y + sta CURSOR_Y + + jsr save_bg_7x30 + + jsr draw_peasant jsr wait_until_keypress - rts + inc FRAME + jmp lake_e_walk_loop + + + ;=================== + ; done + +done_lake_e: + + rts ; walk sideways, near corner lake_e_message1: - .byte 0,0,"That's a nice looking lake.",0 + .byte 7,49,"That's a nice looking lake.",0 ; nearly hit head on sign, it goes away, walk off screen + + ;============================ + ; display lake_e text 1 + ;============================ +display_lake_e_text1: + + ;==================== + ; draw text box + + lda #0 + sta BOX_X1H + lda #35 + sta BOX_X1L + lda #34 + sta BOX_Y1 + + lda #0 + sta BOX_X2H + lda #253 + sta BOX_X2L + lda #72 + sta BOX_Y2 + + jsr draw_box + + lda #lake_e_message1 + sta OUTH + jsr hgr_put_string + + rts + +lake_e_path: + .byte 7,151 + .byte 8,151 + .byte 9,151 + .byte 10,151 + .byte 11,151 + .byte 12,151 + .byte 13,151 + .byte 14,151 + .byte 15,151 + .byte 16,151 + .byte 17,151 + .byte 18,151 + .byte 19,151 + .byte 20,151 + .byte 21,151 + .byte 22,151 + .byte 23,151 + .byte 24,151 + .byte 25,151 + .byte 26,151 + .byte 27,151 + .byte 28,151 + .byte 29,141 + .byte 30,131 + .byte 31,121 + .byte 32,111 + .byte 33,101 + .byte 34,91 + .byte 35,81 + .byte 35,71 + .byte 35,61 + .byte 35,51 + .byte 35,41 + .byte $FF,$FF + + + ;================ + ; update bubbles E +update_bubbles_e: + + ; 5,94 + ; 15,103 + ; 13,130 + + ; bubble 1 + + lda FRAME + and #7 + asl + tax + + lda bubble_progress_e,X + sta INL + inx + lda bubble_progress_e,X + sta INH + + lda #5 + sta CURSOR_X + lda #94 + sta CURSOR_Y + + jsr hgr_draw_sprite_1x5 + + + ; bubble 2 + + lda FRAME + adc #3 + and #7 + asl + tax + + lda bubble_progress_e,X + sta INL + inx + lda bubble_progress_e,X + sta INH + + lda #15 + sta CURSOR_X + lda #103 + sta CURSOR_Y + + jsr hgr_draw_sprite_1x5 + + ; bubble 3 + + lda FRAME + adc #5 + and #7 + asl + tax + + lda bubble_progress_e,X + sta INL + inx + lda bubble_progress_e,X + sta INH + + lda #13 + sta CURSOR_X + lda #130 + sta CURSOR_Y + + jsr hgr_draw_sprite_1x5 + + rts + + +bubble_progress_e: + .word bubble_e_sprite0 + .word bubble_e_sprite0 + .word bubble_e_sprite1 + .word bubble_e_sprite0 + .word bubble_e_sprite2 + .word bubble_e_sprite3 + .word bubble_e_sprite4 + .word bubble_e_sprite5 + + +bubble_e_sprite0: + .byte $AA + .byte $AA + .byte $AA + .byte $80 ; 1 000 0000 + .byte $AA + +bubble_e_sprite1: + .byte $AA + .byte $AA + .byte $AA + .byte $88 ; 1 XXX 10XX + .byte $A2 ; 0 010 XX10 + +bubble_e_sprite2: + .byte $AA + .byte $AA + .byte $A2 ; 0 010 XX10 + .byte $88 ; 1 XXX 10XX + .byte $AA + +bubble_e_sprite3: + .byte $AA + .byte $A2 ; 101X XX10 + .byte $88 ; 00XX 1XX0 + .byte $88 ; 1XX0 10XX + .byte $AA + +bubble_e_sprite4: + .byte $88 ; 0xx0 10xx + .byte $A2 ; 101x xx10 + .byte $88 ; 00xx 1xx0 + .byte $88 ; 1xx0 10XX + .byte $AA ; 0010 1010 + +bubble_e_sprite5: + .byte $AA ; 0010 1010 + .byte $88 ; 1XX0 10XX + .byte $A2 ; 001X XX10 + .byte $88 ; 1XX0 10XX + .byte $AA ; 0010 1010 + + + + + + + diff --git a/games/peasant/peasant.s b/games/peasant/peasant.s index 0fa8b53f..46df6fc7 100644 --- a/games/peasant/peasant.s +++ b/games/peasant/peasant.s @@ -28,7 +28,7 @@ peasant_quest: ; Lake West ;************************ - jsr lake_west +; jsr lake_west ;************************ ; Lake East @@ -72,5 +72,6 @@ peasant_quest: .include "hgr_rectangle.s" .include "hgr_7x30_sprite.s" .include "hgr_1x5_sprite.s" +.include "hgr_save_restore.s" .include "graphics/graphics.inc"