mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-01-14 13:33:48 +00:00
peasant: only save part of hires screen
trying to avoid peasant flicker, seems to be improved
This commit is contained in:
parent
825082d087
commit
1d04940324
@ -69,9 +69,11 @@ title.o: title.s \
|
||||
INTRO: intro.o
|
||||
ld65 -o INTRO intro.o -C $(LINKER_SCRIPTS)/apple2_6000.inc
|
||||
|
||||
intro.o: intro.s graphics/graphics_intro.inc sprites/peasant_sprite.inc \
|
||||
intro.o: intro.s zp.inc \
|
||||
graphics/graphics_intro.inc sprites/peasant_sprite.inc \
|
||||
draw_box.s hgr_rectangle.s hgr_font.s hgr_input.s \
|
||||
hgr_7x30_sprite.s hgr_1x5_sprite.s hgr_save_restore.s \
|
||||
hgr_partial_save.s \
|
||||
wait_a_bit.s draw_peasant.s hgr_text_box.s \
|
||||
title.s directions.s \
|
||||
intro_cottage.s intro_lake_w.s intro_lake_e.s \
|
||||
@ -83,7 +85,8 @@ intro.o: intro.s graphics/graphics_intro.inc sprites/peasant_sprite.inc \
|
||||
PEASANT: peasant.o
|
||||
ld65 -o PEASANT peasant.o -C $(LINKER_SCRIPTS)/apple2_6000.inc
|
||||
|
||||
peasant.o: peasant.s graphics/graphics.inc sprites/peasant_sprite.inc \
|
||||
peasant.o: peasant.s zp.inc \
|
||||
graphics/graphics.inc sprites/peasant_sprite.inc \
|
||||
draw_box.s hgr_rectangle.s hgr_font.s hgr_input.s \
|
||||
hgr_7x30_sprite.s hgr_1x5_sprite.s hgr_save_restore.s \
|
||||
wait_a_bit.s draw_peasant.s hgr_text_box.s \
|
||||
|
@ -21,12 +21,12 @@ $D0-$FF ROM
|
||||
Disk Map (disk has 35 tracks, each 4k in size)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
T 0 = Qboot
|
||||
T 1 = QLOAD 4301 bytes 17S = 1T1S
|
||||
T 1 = QLOAD 4813 bytes 19S = 1T3S
|
||||
T 3 = VID_LOGO 6911 bytes 27S = 1T11S
|
||||
T 5 = TITLE 9662 bytes 38S = 2T6S
|
||||
T 8 = INTRO 14265 bytes 56S = 3T8S
|
||||
T 12 = COPY_CHECK 4642 bytes 18S = 1T2S
|
||||
T 14 = PEASANT 15332 bytes 60S = 3T12S ; 88 is max?
|
||||
T 8 = INTRO 16040 bytes 63S = 3T15S
|
||||
T 12 = COPY_CHECK 4922 bytes 20S = 1T4S
|
||||
T 14 = PEASANT 18501 bytes 73S = 4T9S ; 88 is max?
|
||||
|
||||
|
||||
238, to 280 (6)
|
||||
|
@ -120,6 +120,7 @@ forever:
|
||||
.include "hgr_input.s"
|
||||
.include "hgr_tables.s"
|
||||
.include "hgr_text_box.s"
|
||||
.include "hgr_partial_save.s"
|
||||
|
||||
.include "graphics_copy/copy_graphics.inc"
|
||||
|
||||
|
80
games/peasant/hgr_partial_save.s
Normal file
80
games/peasant/hgr_partial_save.s
Normal file
@ -0,0 +1,80 @@
|
||||
;=======================
|
||||
; HGR Partial Save
|
||||
;=======================
|
||||
; loads from $40
|
||||
; save to $20
|
||||
; only save from row in P2 to P2+P4
|
||||
hgr_partial_save:
|
||||
|
||||
clc
|
||||
lda BOX_Y1
|
||||
sta SAVED_Y1
|
||||
|
||||
ldx BOX_Y2
|
||||
stx SAVED_Y2
|
||||
|
||||
partial_save_yloop:
|
||||
|
||||
lda hposn_low,X
|
||||
sta psx_smc1+1
|
||||
sta psx_smc2+1
|
||||
|
||||
lda hposn_high,X
|
||||
sta psx_smc1+2
|
||||
sec
|
||||
sbc #$20
|
||||
sta psx_smc2+2
|
||||
|
||||
ldy #$27
|
||||
partial_save_xloop:
|
||||
psx_smc1:
|
||||
lda $d000,Y
|
||||
psx_smc2:
|
||||
sta $d000,Y
|
||||
dey
|
||||
bpl partial_save_xloop
|
||||
|
||||
dex
|
||||
cpx BOX_Y1
|
||||
bcs partial_save_yloop
|
||||
|
||||
rts
|
||||
|
||||
|
||||
|
||||
;=======================
|
||||
; HGR Partial Restore
|
||||
;=======================
|
||||
; loads from $20
|
||||
; save to $40
|
||||
|
||||
hgr_partial_restore:
|
||||
|
||||
ldx SAVED_Y2
|
||||
|
||||
partial_restore_yloop:
|
||||
|
||||
lda hposn_low,X
|
||||
sta prx_smc2+1
|
||||
sta prx_smc1+1
|
||||
|
||||
lda hposn_high,X
|
||||
sta prx_smc2+2
|
||||
sec
|
||||
sbc #$20
|
||||
sta prx_smc1+2
|
||||
|
||||
ldy #$27
|
||||
partial_restore_xloop:
|
||||
prx_smc1:
|
||||
lda $d000,Y
|
||||
prx_smc2:
|
||||
sta $d000,Y
|
||||
dey
|
||||
bpl partial_restore_xloop
|
||||
|
||||
dex
|
||||
cpx SAVED_Y1
|
||||
bcs partial_restore_yloop ; bge
|
||||
|
||||
rts
|
@ -32,6 +32,8 @@ hgr_text_box:
|
||||
lda (OUTL),Y
|
||||
sta BOX_Y2
|
||||
|
||||
jsr hgr_partial_save
|
||||
|
||||
jsr draw_box
|
||||
|
||||
clc
|
||||
|
@ -84,6 +84,8 @@ peasant_quest_intro:
|
||||
; Start actual game
|
||||
;************************
|
||||
|
||||
jsr draw_peasant
|
||||
|
||||
; wait a bit
|
||||
|
||||
lda #10
|
||||
@ -94,9 +96,7 @@ escape_handler:
|
||||
sei ; turn off music
|
||||
jsr clear_ay_both ; clear AY state
|
||||
|
||||
jsr draw_peasant
|
||||
|
||||
|
||||
; jsr draw_peasant
|
||||
|
||||
; start game
|
||||
|
||||
@ -122,7 +122,8 @@ escape_handler:
|
||||
.include "hgr_rectangle.s"
|
||||
.include "hgr_7x30_sprite.s"
|
||||
.include "hgr_1x5_sprite.s"
|
||||
.include "hgr_save_restore.s"
|
||||
;.include "hgr_save_restore.s"
|
||||
.include "hgr_partial_save.s"
|
||||
.include "hgr_input.s"
|
||||
.include "hgr_tables.s"
|
||||
.include "hgr_text_box.s"
|
||||
|
@ -44,7 +44,7 @@ cottage:
|
||||
|
||||
jsr hgr_put_string
|
||||
|
||||
jsr hgr_save
|
||||
; jsr hgr_save
|
||||
|
||||
;====================
|
||||
; save background
|
||||
@ -60,50 +60,18 @@ cottage:
|
||||
jsr save_bg_7x30
|
||||
|
||||
cottage_walk_loop:
|
||||
|
||||
lda PEASANT_X
|
||||
sta CURSOR_X
|
||||
lda PEASANT_Y
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr restore_bg_7x30
|
||||
|
||||
lda FRAME
|
||||
check_cottage_action1:
|
||||
cmp #0
|
||||
bne check_cottage_action2
|
||||
|
||||
; display cottage text 1
|
||||
;=======================
|
||||
; draw peasant
|
||||
|
||||
lda #<cottage_text1
|
||||
sta OUTL
|
||||
lda #>cottage_text1
|
||||
|
||||
jmp finish_cottage_action
|
||||
|
||||
check_cottage_action2:
|
||||
cmp #1
|
||||
bne check_cottage_action3
|
||||
jsr hgr_restore
|
||||
|
||||
; display cottage text 2
|
||||
|
||||
lda #<cottage_text2
|
||||
sta OUTL
|
||||
lda #>cottage_text2
|
||||
|
||||
jmp finish_cottage_action
|
||||
|
||||
check_cottage_action3:
|
||||
cmp #13
|
||||
bne done_cottage_action
|
||||
jsr hgr_restore
|
||||
|
||||
; display cottage text 3
|
||||
|
||||
lda #<cottage_text3
|
||||
sta OUTL
|
||||
lda #>cottage_text3
|
||||
|
||||
finish_cottage_action:
|
||||
sta OUTH
|
||||
jsr hgr_text_box
|
||||
|
||||
done_cottage_action:
|
||||
|
||||
lda FRAME
|
||||
asl
|
||||
@ -123,6 +91,56 @@ done_cottage_action:
|
||||
|
||||
jsr draw_peasant
|
||||
|
||||
|
||||
;========================
|
||||
; handle special
|
||||
|
||||
|
||||
lda FRAME
|
||||
check_cottage_action1:
|
||||
cmp #0
|
||||
bne check_cottage_action2
|
||||
|
||||
; display cottage text 1
|
||||
|
||||
lda #<cottage_text1
|
||||
sta OUTL
|
||||
lda #>cottage_text1
|
||||
|
||||
jmp finish_cottage_action
|
||||
|
||||
check_cottage_action2:
|
||||
cmp #1
|
||||
bne check_cottage_action3
|
||||
jsr hgr_partial_restore
|
||||
|
||||
; display cottage text 2
|
||||
|
||||
lda #<cottage_text2
|
||||
sta OUTL
|
||||
lda #>cottage_text2
|
||||
|
||||
jmp finish_cottage_action
|
||||
|
||||
check_cottage_action3:
|
||||
cmp #13
|
||||
bne done_cottage_action
|
||||
jsr hgr_partial_restore
|
||||
|
||||
; display cottage text 3
|
||||
|
||||
lda #<cottage_text3
|
||||
sta OUTL
|
||||
lda #>cottage_text3
|
||||
|
||||
finish_cottage_action:
|
||||
sta OUTH
|
||||
jsr hgr_text_box
|
||||
|
||||
done_cottage_action:
|
||||
|
||||
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
lda FRAME
|
||||
@ -188,7 +206,7 @@ cottage_text2:
|
||||
; wait a few seconds, then start walking toward cottage
|
||||
|
||||
cottage_text3:
|
||||
.byte 0,30,20, 0,253,86
|
||||
.byte 0,28,20, 0,252,86
|
||||
.byte 7,33,"With nothing left to lose,",13
|
||||
.byte "you swear to get revenge on",13
|
||||
.byte "the Wingaling Dragon in the",13
|
||||
|
@ -39,7 +39,7 @@ knight:
|
||||
|
||||
jsr hgr_put_string
|
||||
|
||||
jsr hgr_save
|
||||
; jsr hgr_save
|
||||
|
||||
|
||||
;====================
|
||||
@ -56,42 +56,15 @@ knight:
|
||||
jsr save_bg_7x30
|
||||
|
||||
knight_walk_loop:
|
||||
|
||||
lda PEASANT_X
|
||||
sta CURSOR_X
|
||||
lda PEASANT_Y
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr restore_bg_7x30
|
||||
|
||||
lda FRAME
|
||||
check_knight_action1:
|
||||
cmp #0
|
||||
bne check_knight_action2
|
||||
|
||||
lda #<river_message1
|
||||
sta OUTL
|
||||
lda #>river_message1
|
||||
sta OUTH
|
||||
|
||||
jsr hgr_text_box
|
||||
|
||||
jmp done_knight_action
|
||||
|
||||
check_knight_action2:
|
||||
cmp #8
|
||||
bne check_knight_action3
|
||||
jsr hgr_restore
|
||||
jmp done_knight_action
|
||||
|
||||
check_knight_action3:
|
||||
cmp #17
|
||||
bne done_knight_action
|
||||
|
||||
lda #<knight_message1
|
||||
sta OUTL
|
||||
lda #>knight_message1
|
||||
sta OUTH
|
||||
|
||||
jsr hgr_text_box
|
||||
|
||||
|
||||
done_knight_action:
|
||||
|
||||
; draw peasant
|
||||
|
||||
lda FRAME
|
||||
asl
|
||||
@ -111,6 +84,45 @@ done_knight_action:
|
||||
|
||||
jsr draw_peasant
|
||||
|
||||
|
||||
|
||||
|
||||
lda FRAME
|
||||
check_knight_action1:
|
||||
cmp #0
|
||||
bne check_knight_action2
|
||||
|
||||
lda #<river_message1
|
||||
sta OUTL
|
||||
lda #>river_message1
|
||||
sta OUTH
|
||||
|
||||
jsr hgr_text_box
|
||||
|
||||
jmp done_knight_action
|
||||
|
||||
check_knight_action2:
|
||||
cmp #8
|
||||
bne check_knight_action3
|
||||
jsr hgr_partial_restore
|
||||
jmp done_knight_action
|
||||
|
||||
check_knight_action3:
|
||||
cmp #17
|
||||
bne done_knight_action
|
||||
|
||||
lda #<knight_message1
|
||||
sta OUTL
|
||||
lda #>knight_message1
|
||||
sta OUTH
|
||||
|
||||
jsr hgr_text_box
|
||||
|
||||
|
||||
done_knight_action:
|
||||
|
||||
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
lda #3
|
||||
|
@ -36,7 +36,7 @@ lake_east:
|
||||
|
||||
jsr hgr_put_string
|
||||
|
||||
jsr hgr_save
|
||||
; jsr hgr_save
|
||||
|
||||
|
||||
;====================
|
||||
@ -53,32 +53,15 @@ lake_east:
|
||||
jsr save_bg_7x30
|
||||
|
||||
lake_e_walk_loop:
|
||||
|
||||
lda PEASANT_X
|
||||
sta CURSOR_X
|
||||
lda PEASANT_Y
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr restore_bg_7x30
|
||||
|
||||
lda FRAME
|
||||
check_lake_e_action1:
|
||||
cmp #10
|
||||
bne check_lake_e_action2
|
||||
|
||||
lda #<lake_e_message1
|
||||
sta OUTL
|
||||
lda #>lake_e_message1
|
||||
sta OUTH
|
||||
jsr hgr_text_box
|
||||
|
||||
jmp done_lake_e_action
|
||||
|
||||
check_lake_e_action2:
|
||||
cmp #28
|
||||
bne done_lake_e_action
|
||||
jsr hgr_restore
|
||||
lda #PEASANT_DIR_UP
|
||||
sta PEASANT_DIR
|
||||
|
||||
done_lake_e_action:
|
||||
|
||||
jsr update_bubbles_e
|
||||
|
||||
; draw peasant
|
||||
|
||||
lda FRAME
|
||||
asl
|
||||
@ -98,6 +81,34 @@ done_lake_e_action:
|
||||
|
||||
jsr draw_peasant
|
||||
|
||||
|
||||
lda FRAME
|
||||
check_lake_e_action1:
|
||||
cmp #10
|
||||
bne check_lake_e_action2
|
||||
|
||||
lda #<lake_e_message1
|
||||
sta OUTL
|
||||
lda #>lake_e_message1
|
||||
sta OUTH
|
||||
jsr hgr_text_box
|
||||
|
||||
jmp done_lake_e_action
|
||||
|
||||
check_lake_e_action2:
|
||||
cmp #28
|
||||
bne done_lake_e_action
|
||||
jsr hgr_partial_restore
|
||||
lda #PEASANT_DIR_UP
|
||||
sta PEASANT_DIR
|
||||
|
||||
done_lake_e_action:
|
||||
|
||||
jsr update_bubbles_e
|
||||
|
||||
|
||||
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
lda #3
|
||||
|
@ -38,7 +38,7 @@ lake_west:
|
||||
|
||||
jsr hgr_put_string
|
||||
|
||||
jsr hgr_save
|
||||
; jsr hgr_save
|
||||
|
||||
;====================
|
||||
; save background
|
||||
@ -54,32 +54,15 @@ lake_west:
|
||||
jsr save_bg_7x30
|
||||
|
||||
lake_w_walk_loop:
|
||||
|
||||
lda PEASANT_X
|
||||
sta CURSOR_X
|
||||
lda PEASANT_Y
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr restore_bg_7x30
|
||||
|
||||
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_restore
|
||||
jsr display_lake_w_text1
|
||||
|
||||
done_lake_w_action:
|
||||
|
||||
|
||||
jsr update_bubbles
|
||||
|
||||
; draw peasant
|
||||
|
||||
lda FRAME
|
||||
asl
|
||||
@ -99,6 +82,36 @@ done_lake_w_action:
|
||||
|
||||
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
|
||||
@ -125,7 +138,7 @@ done_lake_w:
|
||||
; walk halfway across the screen
|
||||
|
||||
lake_w_message1:
|
||||
.byte 0,43,24, 0,253,82
|
||||
.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
|
||||
@ -345,9 +358,3 @@ bubble_sprite5:
|
||||
.byte $88 ; 1XX0 10XX
|
||||
.byte $2A ; 0010 1010
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -56,8 +56,35 @@ river:
|
||||
jsr save_bg_7x30
|
||||
|
||||
river_walk_loop:
|
||||
|
||||
lda PEASANT_X
|
||||
sta CURSOR_X
|
||||
lda PEASANT_Y
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr restore_bg_7x30
|
||||
|
||||
; draw peasant
|
||||
|
||||
lda FRAME
|
||||
asl
|
||||
tax
|
||||
|
||||
lda river_path,X
|
||||
bmi done_river
|
||||
sta PEASANT_X
|
||||
sta CURSOR_X
|
||||
|
||||
inx
|
||||
lda river_path,X
|
||||
sta PEASANT_Y
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr save_bg_7x30
|
||||
|
||||
jsr draw_peasant
|
||||
|
||||
|
||||
lda FRAME
|
||||
check_river_action1:
|
||||
cmp #10
|
||||
@ -84,23 +111,7 @@ done_river_action:
|
||||
jsr update_bubbles_r
|
||||
|
||||
|
||||
lda FRAME
|
||||
asl
|
||||
tax
|
||||
|
||||
lda river_path,X
|
||||
bmi done_river
|
||||
sta PEASANT_X
|
||||
sta CURSOR_X
|
||||
|
||||
inx
|
||||
lda river_path,X
|
||||
sta PEASANT_Y
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr save_bg_7x30
|
||||
|
||||
jsr draw_peasant
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
|
@ -100,7 +100,7 @@ new_location:
|
||||
|
||||
; jsr clear_bottom
|
||||
|
||||
jsr hgr_save
|
||||
; jsr hgr_save
|
||||
|
||||
;====================
|
||||
; save background
|
||||
@ -275,7 +275,7 @@ score_text:
|
||||
|
||||
|
||||
parse_input:
|
||||
jsr hgr_save
|
||||
; jsr hgr_save
|
||||
|
||||
lda input_buffer ; get first char FIXME
|
||||
and #$DF ; make uppercase 0110 0001 -> 0100 0001
|
||||
@ -331,14 +331,10 @@ finish_parse_message:
|
||||
jsr wait_until_keypress
|
||||
|
||||
done_parse_message:
|
||||
jsr hgr_restore
|
||||
jsr hgr_partial_restore
|
||||
|
||||
rts
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.include "decompress_fast_v2.s"
|
||||
.include "wait_keypress.s"
|
||||
|
||||
@ -349,7 +345,8 @@ done_parse_message:
|
||||
.include "hgr_rectangle.s"
|
||||
.include "hgr_7x30_sprite.s"
|
||||
.include "hgr_1x5_sprite.s"
|
||||
.include "hgr_save_restore.s"
|
||||
;.include "hgr_save_restore.s"
|
||||
.include "hgr_partial_save.s"
|
||||
.include "hgr_input.s"
|
||||
.include "hgr_tables.s"
|
||||
.include "hgr_text_box.s"
|
||||
|
@ -20,12 +20,12 @@ HGR_PAGE = $E6
|
||||
DISP_PAGE = $F0
|
||||
DRAW_PAGE = $F1
|
||||
|
||||
P0 = $F1
|
||||
P1 = $F2
|
||||
P2 = $F3
|
||||
P3 = $F4
|
||||
P4 = $F5
|
||||
P5 = $F6
|
||||
;P0 = $F1
|
||||
;P1 = $F2
|
||||
;P2 = $F3
|
||||
;P3 = $F4
|
||||
;P4 = $F5
|
||||
;P5 = $F6
|
||||
|
||||
INL = $FC
|
||||
INH = $FD
|
||||
|
@ -80,14 +80,14 @@ BOX_Y1 = $C3
|
||||
BOX_X2L = $C4
|
||||
BOX_X2H = $C5
|
||||
BOX_Y2 = $C6
|
||||
SAVED_Y1 = $C7
|
||||
SAVED_Y2 = $C8
|
||||
|
||||
WHICH_SLOT = $DA
|
||||
CURRENT_DISK = $DC
|
||||
HGR_COLOR = $E4
|
||||
HGR_PAGE = $E6
|
||||
|
||||
|
||||
|
||||
P0 = $F1
|
||||
P1 = $F2
|
||||
P2 = $F3
|
||||
@ -95,6 +95,7 @@ P3 = $F4
|
||||
P4 = $F5
|
||||
P5 = $F6
|
||||
|
||||
|
||||
INL = $FC
|
||||
INH = $FD
|
||||
OUTL = $FE
|
||||
|
Loading…
x
Reference in New Issue
Block a user