From ccf6cf974d24019a4e097ab99bb16b2ba803f57c Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Wed, 9 Mar 2022 17:04:19 -0500 Subject: [PATCH] lemm: clean up the text a bit --- games/lemm/gr_fast_clear.s | 201 +++++++++++++++++++++++++++++++++++++ games/lemm/intro_level1.s | 18 ++++ games/lemm/lemm.s | 2 +- games/lemm/text_print.s | 93 +++-------------- 4 files changed, 235 insertions(+), 79 deletions(-) create mode 100644 games/lemm/gr_fast_clear.s diff --git a/games/lemm/gr_fast_clear.s b/games/lemm/gr_fast_clear.s new file mode 100644 index 00000000..76035a21 --- /dev/null +++ b/games/lemm/gr_fast_clear.s @@ -0,0 +1,201 @@ +;clear_screens: +; ;=================================== +; ; Clear top/bottom of page 0 +; ;=================================== +; +; lda #$0 +; sta DRAW_PAGE +; jsr clear_top +; jsr clear_bottom + +; ;=================================== +; ; Clear top/bottom of page 1 +; ;=================================== +; +; lda #$4 +; sta DRAW_PAGE +; jsr clear_top +; jsr clear_bottom +; +; rts + + + + + ;========================================================= + ; clear_top + ;========================================================= + ; clear DRAW_PAGE + ; original = 14,558 cycles(?) 15ms, 70Hz + ; OPTIMIZED MAX (page0,48rows): 45*120+4+6 = 5410 = 5.4ms 185Hz + ; (pageX,40rows): 50*120+4+6 = 6010 = 6.0ms 166Hz + ; 50*120+4+6+37 = 6055 = 6.0ms 166Hz +clear_top: + lda #0 ; 2 +clear_top_a: + sta COLOR ; 3 + clc ; 2 + lda DRAW_PAGE ; 3 + + adc #4 ; 2 + sta __ctf+2 ; 3 + sta __ctf+5 ; 3 + adc #1 ; 2 + sta __ctf+8 ; 3 + sta __ctf+11 ; 3 + adc #1 ; 2 + sta __ctf2+2 ; 3 + sta __ctf2+5 ; 3 + adc #1 ; 2 + sta __ctf2+8 ; 3 + sta __ctf2+11 ; 3 + + + ldy #120 ; 2 + lda COLOR ; 3 +clear_top_fast_loop: +__ctf: + sta $400,Y ; 5 + sta $480,Y ; 5 + sta $500,Y ; 5 + sta $580,Y ; 5 + + cpy #80 ; 2 + bpl no_draw_bottom ; 2nt/3 +__ctf2: + sta $600,Y ; 5 + sta $680,Y ; 5 + sta $700,Y ; 5 + sta $780,Y ; 5 +no_draw_bottom: + + dey ; 2 + bpl clear_top_fast_loop ; 2nt/3 + + rts ; 6 + + + + + ;========================================================= + ; clear_bottom + ;========================================================= + ; clear bottom of draw page + +clear_bottom: + clc ; 2 + lda DRAW_PAGE ; 3 + + adc #6 ; 2 + sta __cbf2+2 ; 3 + sta __cbf2+5 ; 3 + adc #1 ; 2 + sta __cbf2+8 ; 3 + sta __cbf2+11 ; 3 + + + ldy #120 ; 2 + lda #$a0 ; Normal Space ; 2 +clear_bottom_fast_loop: +__cbf2: + sta $600,Y ; 5 + sta $680,Y ; 5 + sta $700,Y ; 5 + sta $780,Y ; 5 + + dey ; 2 + cpy #80 ; 2 + bpl clear_bottom_fast_loop ; 2nt/3 + + rts ; 6 + + +;clear_screens_notext: + ;=================================== + ; Clear top/bottom of page 0 + ;=================================== + +; lda #$0 +; sta DRAW_PAGE +; jsr clear_all + + ;=================================== + ; Clear top/bottom of page 1 + ;=================================== + +; lda #$4 +; sta DRAW_PAGE +; jsr clear_all + +; rts + + +clear_bottoms: + + lda DRAW_PAGE + pha + + ;=================================== + ; Clear bottom of page 0 + ;=================================== + + lda #$0 + sta DRAW_PAGE + jsr clear_bottom + + ;=================================== + ; Clear bottom of page 1 + ;=================================== + + lda #$4 + sta DRAW_PAGE + jsr clear_bottom + + pla + sta DRAW_PAGE + + rts + + + ;========================================================= + ; clear_all + ;========================================================= + ; clear 48 rows + +clear_all: + clc ; 2 + lda DRAW_PAGE ; 3 + + adc #4 ; 2 + sta __caf+2 ; 3 + sta __caf+5 ; 3 + adc #1 ; 2 + sta __caf+8 ; 3 + sta __caf+11 ; 3 + adc #1 ; 2 + sta __caf2+2 ; 3 + sta __caf2+5 ; 3 + adc #1 ; 2 + sta __caf2+8 ; 3 + sta __caf2+11 ; 3 + + + ldy #120 ; 2 +clear_all_color: + lda #' '|$80 ; 2 +clear_all_fast_loop: +__caf: + sta $400,Y ; 5 + sta $480,Y ; 5 + sta $500,Y ; 5 + sta $580,Y ; 5 +__caf2: + sta $600,Y ; 5 + sta $680,Y ; 5 + sta $700,Y ; 5 + sta $780,Y ; 5 + + dey ; 2 + bpl clear_all_fast_loop ; 2nt/3 + + rts ; 6 diff --git a/games/lemm/intro_level1.s b/games/lemm/intro_level1.s index d87f5eea..84664203 100644 --- a/games/lemm/intro_level1.s +++ b/games/lemm/intro_level1.s @@ -1,11 +1,27 @@ + ;===================================== + ; print the intro message for level1 + ;===================================== + intro_level1: + ; clear text screen + + jsr clear_all + + ; print non-inverse + + jsr set_normal + + ; print messages + lda #level1_intro_text sta OUTH + ; print the text + ldx #8 text_loop: @@ -14,6 +30,8 @@ text_loop: dex bne text_loop + ; wait until keypress + jsr wait_until_keypress rts diff --git a/games/lemm/lemm.s b/games/lemm/lemm.s index f21894eb..cffda3b9 100644 --- a/games/lemm/lemm.s +++ b/games/lemm/lemm.s @@ -391,7 +391,7 @@ load_song_chunk_good: .include "wait_keypress.s" ; .include "print_help.s" -; .include "gr_fast_clear.s" + .include "gr_fast_clear.s" .include "hgr_14x14_sprite.s" diff --git a/games/lemm/text_print.s b/games/lemm/text_print.s index ed6cb40a..199893be 100644 --- a/games/lemm/text_print.s +++ b/games/lemm/text_print.s @@ -60,86 +60,23 @@ done_print_string: rts + ; set normal text +set_normal: + lda #$80 + sta ps_smc1+1 -.if 0 - ;================================ - ; move and print a list of lines - ;================================ -move_and_print_list: - jsr move_and_print - ldy #0 - lda (OUTL),Y - bpl move_and_print_list + lda #09 ; ora + sta ps_smc1 + + rts + + ; restore inverse text +set_inverse: + lda #$29 + sta ps_smc1 + lda #$3f + sta ps_smc1+1 rts - - ;================================ - ; move and print a list of lines - ;================================ -move_and_print_list_both_pages: - lda DRAW_PAGE - pha - - lda OUTL - pha - lda OUTH - pha - - lda #0 - sta DRAW_PAGE - - jsr move_and_print_list - - pla - sta OUTH - pla - sta OUTL - - lda #4 - sta DRAW_PAGE - - jsr move_and_print_list - - pla - sta DRAW_PAGE - - - rts - - - - ;======================= - ; print to both pages - ;======================= -print_both_pages: - lda DRAW_PAGE - pha - - lda OUTL - pha - lda OUTH - pha - - lda #0 - sta DRAW_PAGE - - jsr move_and_print - - pla - sta OUTH - pla - sta OUTL - - lda #4 - sta DRAW_PAGE - - jsr move_and_print - - pla - sta DRAW_PAGE - - - rts -.endif