; Lake West ;************************ ; 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) sta getsrc_smc+2 lda #$40 jsr decompress_lzsa2_fast ;================ ; print title jsr intro_print_title ; load priority to $400 ; indirectly as we can't trash screen holes lda #lake_w_priority_lzsa sta getsrc_smc+2 lda #$20 ; temporarily load to $2000 jsr decompress_lzsa2_fast ; copy to $400 jsr gr_copy_to_page1 ;==================== ; save background lda PEASANT_X sta CURSOR_X lda PEASANT_Y sta CURSOR_Y ;======================= ; walking jsr save_bg_1x28 lake_w_walk_loop: lda PEASANT_X sta CURSOR_X lda PEASANT_Y sta CURSOR_Y jsr restore_bg_1x28 ; draw peasant 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_1x28 jsr draw_peasant lda FRAME check_lake_w_action1: cmp #0 bne check_lake_w_action2 ; re-display cottage text 3 lda #cottage_text3 sta OUTH jsr hgr_text_box jmp done_lake_w_action check_lake_w_action2: cmp #20 bne done_lake_w_action lda #0 ldx #39 jsr hgr_partial_restore jsr display_lake_w_text1 done_lake_w_action: jsr update_bubbles ; jsr wait_until_keypress lda #3 jsr wait_a_bit lda ESC_PRESSED bne done_lake_w 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,42,24, 0,252,82 ; .byte 8,41,"You head east toward the",13 ; .byte "mountain atop which",13 ; .byte "TROGDOR lives.",0 ; walk to edge ;============================ ; display cottage text 1 ;============================ display_lake_w_text1: lda #lake_w_message1 sta OUTH jsr hgr_text_box 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