mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-06-06 16:29:33 +00:00
bubble: size optimize a bit, under 2k now
This commit is contained in:
parent
6ce85e34ca
commit
a021e824b3
|
@ -39,7 +39,7 @@ bubble.o: bubble.s hgr_clear_part.s sin_unrolled.s
|
||||||
BUBBLE_TINY: bubble_tiny.o
|
BUBBLE_TINY: bubble_tiny.o
|
||||||
ld65 -o BUBBLE_TINY bubble_tiny.o -C $(LINKER_SCRIPTS)/apple2_c00.inc
|
ld65 -o BUBBLE_TINY bubble_tiny.o -C $(LINKER_SCRIPTS)/apple2_c00.inc
|
||||||
|
|
||||||
bubble_tiny.o: bubble_tiny.s hgr_clear_part.s sin_unrolled.s
|
bubble_tiny.o: bubble_tiny.s hgr_clear_part.s sin_unrolled.s hgr_clear_codegen.s
|
||||||
ca65 -o bubble_tiny.o bubble_tiny.s -l bubble_tiny.lst
|
ca65 -o bubble_tiny.o bubble_tiny.s -l bubble_tiny.lst
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
; 2560 bytes -- full version with keypress to adjust
|
; 2560 bytes -- full version with keypress to adjust
|
||||||
; 2326 bytes -- alignment turned off
|
; 2326 bytes -- alignment turned off
|
||||||
; 2311 bytes -- optimize mod table generation
|
; 2311 bytes -- optimize mod table generation
|
||||||
|
; 1447 bytes -- first attempt at hgr_clear codegen
|
||||||
|
|
||||||
; soft-switches
|
; soft-switches
|
||||||
|
|
||||||
|
@ -49,6 +50,11 @@ V = $D9
|
||||||
|
|
||||||
HGR_PAGE = $E6
|
HGR_PAGE = $E6
|
||||||
|
|
||||||
|
INL = $FC
|
||||||
|
INH = $FD
|
||||||
|
OUTL = $FE
|
||||||
|
OUTH = $FF
|
||||||
|
|
||||||
; const
|
; const
|
||||||
|
|
||||||
;NUM = 32
|
;NUM = 32
|
||||||
|
@ -61,6 +67,8 @@ bubble:
|
||||||
|
|
||||||
jsr hgr_make_tables
|
jsr hgr_make_tables
|
||||||
|
|
||||||
|
jsr hgr_clear_codegen
|
||||||
|
|
||||||
;=======================
|
;=======================
|
||||||
; init graphics
|
; init graphics
|
||||||
|
|
||||||
|
@ -90,7 +98,20 @@ next_frame:
|
||||||
; "fast" clear screen
|
; "fast" clear screen
|
||||||
|
|
||||||
|
|
||||||
.include "hgr_clear_part.s"
|
|
||||||
|
;.include "hgr_clear_part.s"
|
||||||
|
|
||||||
|
|
||||||
|
lda #0 ; color
|
||||||
|
ldy HGR_PAGE
|
||||||
|
cpy #$40
|
||||||
|
beq do_clear_page2
|
||||||
|
do_clear_page1: ; replace with jump table?
|
||||||
|
jsr hgr_page1_clearscreen
|
||||||
|
jmp done_clear_page
|
||||||
|
do_clear_page2:
|
||||||
|
jsr hgr_page2_clearscreen
|
||||||
|
done_clear_page:
|
||||||
|
|
||||||
; reset I*T
|
; reset I*T
|
||||||
|
|
||||||
|
@ -366,6 +387,9 @@ log_lookup:
|
||||||
|
|
||||||
; floor(s*sin((x-96)*PI*2/256.0)+48.5);
|
; floor(s*sin((x-96)*PI*2/256.0)+48.5);
|
||||||
|
|
||||||
|
|
||||||
|
.include "hgr_clear_codegen.s"
|
||||||
|
|
||||||
.align $100
|
.align $100
|
||||||
sines:
|
sines:
|
||||||
.byte $13,$12,$12,$11,$10,$10,$0F,$0E,$0E,$0D,$0D,$0C,$0C,$0B,$0B,$0B
|
.byte $13,$12,$12,$11,$10,$10,$0F,$0E,$0E,$0D,$0D,$0C,$0C,$0B,$0B,$0B
|
||||||
|
|
124
graphics/hgr/bubble_universe/hgr_clear_codegen.s
Normal file
124
graphics/hgr/bubble_universe/hgr_clear_codegen.s
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
hgr_page1_clearscreen = $7000
|
||||||
|
hgr_page2_clearscreen = $7300
|
||||||
|
|
||||||
|
|
||||||
|
hgr_clear_codegen:
|
||||||
|
;========================
|
||||||
|
; set up output pointers
|
||||||
|
|
||||||
|
lda #<(hgr_page1_clearscreen)
|
||||||
|
sta OUTL
|
||||||
|
sta INL
|
||||||
|
|
||||||
|
lda #>(hgr_page1_clearscreen)
|
||||||
|
sta OUTH
|
||||||
|
lda #>(hgr_page2_clearscreen)
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
;=====================
|
||||||
|
; set up prolog
|
||||||
|
|
||||||
|
lda #$A0 ; ldy
|
||||||
|
jsr write_both
|
||||||
|
|
||||||
|
lda #8 ; only part of screen
|
||||||
|
jsr write_both
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
hgr_clear_codegen_loop:
|
||||||
|
lda #$99 ; STA
|
||||||
|
jsr write_both
|
||||||
|
|
||||||
|
lda hposn_low,X
|
||||||
|
jsr write_both
|
||||||
|
|
||||||
|
lda hposn_high,X
|
||||||
|
ora #$20
|
||||||
|
pha
|
||||||
|
jsr write_p1
|
||||||
|
pla
|
||||||
|
eor #$60
|
||||||
|
jsr write_p2
|
||||||
|
|
||||||
|
inx
|
||||||
|
cpx #192
|
||||||
|
bne hgr_clear_codegen_loop
|
||||||
|
|
||||||
|
;======================================
|
||||||
|
; write epilog
|
||||||
|
|
||||||
|
; TODO: replace with memcpy of some sort?
|
||||||
|
|
||||||
|
lda #$C8 ; INY
|
||||||
|
jsr write_both
|
||||||
|
|
||||||
|
lda #$C0 ; CPY
|
||||||
|
jsr write_both
|
||||||
|
|
||||||
|
lda #32 ; end value
|
||||||
|
jsr write_both
|
||||||
|
|
||||||
|
lda #$F0 ; beq
|
||||||
|
jsr write_both
|
||||||
|
|
||||||
|
lda #$03 ; +3
|
||||||
|
jsr write_both
|
||||||
|
|
||||||
|
lda #$4C ; JMP
|
||||||
|
jsr write_both
|
||||||
|
|
||||||
|
lda #<(hgr_page1_clearscreen+2)
|
||||||
|
jsr write_both
|
||||||
|
|
||||||
|
lda #>(hgr_page1_clearscreen+2)
|
||||||
|
jsr write_p1
|
||||||
|
lda #>(hgr_page2_clearscreen+2)
|
||||||
|
jsr write_p2
|
||||||
|
|
||||||
|
|
||||||
|
lda #$60 ; RTS
|
||||||
|
jsr write_both
|
||||||
|
|
||||||
|
rts ; tail call
|
||||||
|
|
||||||
|
|
||||||
|
;=============================
|
||||||
|
;
|
||||||
|
write_both:
|
||||||
|
|
||||||
|
pha
|
||||||
|
jsr write_p2
|
||||||
|
pla
|
||||||
|
|
||||||
|
; fallthrough
|
||||||
|
|
||||||
|
write_p1:
|
||||||
|
ldy #0
|
||||||
|
sta (OUTL),Y
|
||||||
|
|
||||||
|
clc
|
||||||
|
lda OUTL
|
||||||
|
adc #1
|
||||||
|
sta OUTL
|
||||||
|
lda #0
|
||||||
|
adc OUTH
|
||||||
|
sta OUTH
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
write_p2:
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
sta (INL),Y
|
||||||
|
|
||||||
|
clc
|
||||||
|
lda INL
|
||||||
|
adc #1
|
||||||
|
sta INL
|
||||||
|
lda #0
|
||||||
|
adc INH
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
Loading…
Reference in New Issue
Block a user