mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-11-17 14:12:58 +00:00
375 lines
4.4 KiB
ArmAsm
375 lines
4.4 KiB
ArmAsm
; 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+1
|
|
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 OUTL
|
|
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
|
|
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 OUTL
|
|
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
|
|
|