From 44b090afd939abdaece082c2aa8ff78b501cf071 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Mon, 6 May 2024 15:39:11 -0400 Subject: [PATCH] bubble_hgr: more optimization --- graphics/hgr/bubble_tiny/bubble_rom.s | 52 +++++++-------------------- 1 file changed, 12 insertions(+), 40 deletions(-) diff --git a/graphics/hgr/bubble_tiny/bubble_rom.s b/graphics/hgr/bubble_tiny/bubble_rom.s index 614a9944..c39e0aeb 100644 --- a/graphics/hgr/bubble_tiny/bubble_rom.s +++ b/graphics/hgr/bubble_tiny/bubble_rom.s @@ -16,7 +16,10 @@ ; 492 bytes -- hook up compact sine generation ; 445 bytes -- strip out keyboard code ; 208 bytes -- use ROM routines -; 203 bytes -- optimize page flip +; 200 bytes -- optimize page flip +; 226 bytes -- don't have room to over-write with sine table +; 240 bytes -- use custom, faster, clear screen +; 237 bytes -- remove redundant HGR ; soft-switches @@ -33,17 +36,9 @@ HGR2 = $F3D8 ; set hires page2 and clear $4000-$5fff HGR = $F3E2 ; set hires page1 and clear $2000-$3fff HPLOT0 = $F457 ; plot at (Y,X), (A) HCOLOR1 = $F6F0 ; set HGR_COLOR to value in X -;COLORTBL = $F6F6 -;WAIT = $FCA8 ; delay 1/2(26+27A+5A^2) us ; zero page -GBASL = $26 -GBASH = $27 - - -HPLOTYL = $92 - I = $D0 J = $D1 T = $D7 @@ -61,15 +56,7 @@ sines = sines_base-$1A ; overlaps some code sines2 = sines+$100 ; duplicate so we can index cosine into it cosines = sines+$c0 -bubble: - - ;========================== - ; setup lookup tables - ;========================== -; jsr hgr_make_tables - -; jsr hgr_clear_codegen - +bubble_rom: ;========================= ; reconstruct sine base @@ -132,17 +119,6 @@ setup_sine_loop: bpl setup_sine_loop - ;======================= - ; init variables - - ; HGR leaves A at 0 - -; lda #0 -; sta U -; sta V -; sta T - - ;======================= ; init variables ;======================= @@ -169,7 +145,6 @@ init_loop: ;======================= ; init graphics - jsr HGR ; why both? jsr HGR2 ldx #7 @@ -246,7 +221,7 @@ j_loop: ; calculate Ypos lda V -; HPLOT0 = $F457 ; plot at (Y,X), (A) + ; HPLOT0 -- plot at (Y,X), (A) ldy #0 @@ -287,13 +262,17 @@ flip2: sta PAGE2 done_flip: + ;======================= + ; clear screen + ; note can be ~8192 cycles faster at expense of few bytes + ; if we use self-modifying code instead of indirect-Y ; lda HGR_PAGE sta OUTH clear_loop_fix: - lda #$00 + lda #$00 ; set color to black tay - ; assume INL starts at 0 from clearing earlier + ; assume OUTL starts at 0 from clearing earlier clear_loop: sta (OUTL),Y iny @@ -303,17 +282,10 @@ clear_loop: lda OUTH and #$1f bne clear_loop_fix - -; jsr BKGNDZ ; clear screen to black - beq next_frame ; bra - -;.include "hgr_clear_codegen.s" - - .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00