dos33fsprogs/demosplash/create_update_type1.s

150 lines
2.5 KiB
ArmAsm
Raw Normal View History

2019-11-02 04:01:15 +00:00
; Autogenerates code that does interleaved Page0/Page1 lores mode
; but leaving room for 14 pixels/line of per-scanline color
2019-11-13 04:53:27 +00:00
; originally 183,589
; takes roughly 12 + 192*((49*16)+2+38) + 15 = 158,235!!!!
; want to play sound every 15787 cycles (10.0)
; so every 19.2 times through loop? is 16 close enough?
; 11 times should update???
UPDATE_START = $9800
2019-11-02 04:01:15 +00:00
2019-11-02 20:04:11 +00:00
DEFAULT_COLOR = $0
2019-11-02 04:01:15 +00:00
create_update_type1:
2019-11-13 04:53:27 +00:00
ldx #192 ; 2
lda #<UPDATE_START ; 2
sta OUTL ; 3
lda #>UPDATE_START ; 2
sta OUTH ; 3
;===========
; 12
2019-11-02 04:01:15 +00:00
create_update_outer_loop:
2019-11-13 04:53:27 +00:00
ldy #48 ; 2
2019-11-02 04:01:15 +00:00
create_update_inner_loop:
2019-11-13 04:53:27 +00:00
lda one_scanline,Y ; 4+
sta (OUTL),Y ; 6
dey ; 2
bpl create_update_inner_loop ; 3
;============
; 16
2019-11-02 04:01:15 +00:00
2019-11-13 04:53:27 +00:00
; -1
2019-11-02 19:47:58 +00:00
; toggle PAGE0/PAGE1
2019-11-13 04:53:27 +00:00
txa ; 2
and #$1 ; ror? ; 2
clc ; 2
adc #$54 ; 2
ldy #1 ; 2
sta (OUTL),Y ; 6
clc ; 2
lda #49 ; 2
adc OUTL ; 3
sta OUTL ; 3
lda OUTH ; 3
adc #0 ; 2
sta OUTH ; 3
2019-11-02 04:01:15 +00:00
2019-11-13 04:53:27 +00:00
dex ; 2
bne create_update_outer_loop ; 3
;===========
; 38
2019-11-02 04:01:15 +00:00
2019-11-13 04:53:27 +00:00
; -1
ldy #0 ; 2
lda #$60 ; 2
sta (OUTL),Y ; 6
2019-11-02 04:01:15 +00:00
2019-11-13 04:53:27 +00:00
rts ; 6
;=============
; 15
2019-11-02 04:01:15 +00:00
BARS_START = 46
2019-11-02 20:04:11 +00:00
2019-11-02 19:47:58 +00:00
;===========================
; from 40 to 168?
2019-11-02 19:47:58 +00:00
setup_rasterbars:
lda #4 ; which page
2019-11-02 20:04:11 +00:00
sta RASTER_PAGE
2019-11-02 19:47:58 +00:00
2019-11-02 20:04:11 +00:00
ldx #BARS_START
lda #<(UPDATE_START+(BARS_START*49))
2019-11-02 19:47:58 +00:00
sta OUTL
2019-11-02 20:04:11 +00:00
lda #>(UPDATE_START+(BARS_START*49))
2019-11-02 19:47:58 +00:00
sta OUTH
setup_rasterbars_outer_loop:
ldy #6
2019-11-02 20:04:11 +00:00
lda #13
sta RASTER_X
2019-11-02 19:47:58 +00:00
setup_rasterbars_inner_loop:
txa
pha
inx
txa ; start one earlier
lsr
lsr
and #$fe
tax
2019-11-02 20:04:11 +00:00
clc
2019-11-02 19:47:58 +00:00
lda gr_offsets,X
2019-11-02 20:04:11 +00:00
adc RASTER_X
inc RASTER_X
2019-11-02 19:47:58 +00:00
sta (OUTL),Y
iny
clc
lda gr_offsets+1,X
2019-11-02 20:04:11 +00:00
adc RASTER_PAGE
2019-11-02 19:47:58 +00:00
sta (OUTL),Y
iny
iny
pla
tax
cpy #48
bne setup_rasterbars_inner_loop
clc
lda #49
adc OUTL
sta OUTL
lda OUTH
adc #0
sta OUTH
2019-11-02 20:04:11 +00:00
lda RASTER_PAGE
2019-11-02 19:47:58 +00:00
eor #$04
2019-11-02 20:04:11 +00:00
sta RASTER_PAGE
2019-11-02 19:47:58 +00:00
inx
cpx #184
2019-11-02 19:47:58 +00:00
bne setup_rasterbars_outer_loop
rts
2019-11-02 04:01:15 +00:00
one_scanline:
.byte $2C,$54,$C0 ; bit PAGE0 ; 4
2019-11-02 20:04:11 +00:00
.byte $A9,DEFAULT_COLOR ; lda #$0b ; 2
2019-11-02 04:01:15 +00:00
.byte $8D,$00,$02 ; sta $200 ; 4
.byte $8D,$00,$02 ; sta $200 ; 4
.byte $8D,$00,$02 ; sta $200 ; 4
.byte $8D,$00,$02 ; sta $200 ; 4
.byte $8D,$00,$02 ; sta $200 ; 4
.byte $8D,$00,$02 ; sta $200 ; 4
.byte $8D,$00,$02 ; sta $200 ; 4
.byte $8D,$00,$02 ; sta $200 ; 4
.byte $8D,$00,$02 ; sta $200 ; 4
.byte $8D,$00,$02 ; sta $200 ; 4
.byte $8D,$00,$02 ; sta $200 ; 4
.byte $8D,$00,$02 ; sta $200 ; 4
.byte $8D,$00,$02 ; sta $200 ; 4
.byte $8D,$00,$02 ; sta $200 ; 4
.byte $A5,$FA ; lda TEMP ; 3