mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-02-05 21:34:30 +00:00
megademo: optimize the waterfall erase code
much smaller, but can't go below x=1
This commit is contained in:
parent
9a949fb908
commit
1402c2f54d
@ -2,647 +2,34 @@
|
||||
; fast copy rows 22-36 from $C00 to $400
|
||||
;=========================================================
|
||||
;
|
||||
; 6 + 7*8*40 = 2246 cycles
|
||||
; 6*7*40 = 1680 bytes of code?
|
||||
; 7+ 8*[9*7 + 7] + 5 = 572
|
||||
|
||||
gr_copy_row22:
|
||||
ldy #8 ; 2
|
||||
ldx XPOS ; 3
|
||||
dex ; 2
|
||||
grcr_loop:
|
||||
lda $da8,x ; 4
|
||||
sta $5a8,x ; 22 ; 5
|
||||
lda $e28,x ; 4
|
||||
sta $628,x ; 24 ; 5
|
||||
lda $ea8,x ; 4
|
||||
sta $6a8,x ; 26 ; 5
|
||||
lda $f28,x ; 4
|
||||
sta $728,x ; 28 ; 5
|
||||
lda $fa8,x ; 4
|
||||
sta $7a8,x ; 30 ; 5
|
||||
lda $c50,x ; 4
|
||||
sta $450,x ; 32 ; 5
|
||||
lda $cd0,x ; 4
|
||||
sta $4d0,x ; 34 ; 5
|
||||
|
||||
;= y = 22 $5a8 $da8/$9a8 =========================
|
||||
; x=0,y=22
|
||||
lda $da8
|
||||
sta $5a8
|
||||
lda $da9
|
||||
sta $5a9
|
||||
lda $daa
|
||||
sta $5aa
|
||||
lda $dab
|
||||
sta $5ab
|
||||
lda $dac
|
||||
sta $5ac
|
||||
lda $dad
|
||||
sta $5ad
|
||||
lda $dae
|
||||
sta $5ae
|
||||
lda $daf
|
||||
sta $5af
|
||||
|
||||
; x=8,y=22
|
||||
lda $db0
|
||||
sta $5b0
|
||||
lda $db1
|
||||
sta $5b1
|
||||
lda $db2
|
||||
sta $5b2
|
||||
lda $db3
|
||||
sta $5b3
|
||||
lda $db4
|
||||
sta $5b4
|
||||
lda $db5
|
||||
sta $5b5
|
||||
lda $db6
|
||||
sta $5b6
|
||||
lda $db7
|
||||
sta $5b7
|
||||
|
||||
; x=16,y=22
|
||||
lda $db8
|
||||
sta $5b8
|
||||
lda $db9
|
||||
sta $5b9
|
||||
lda $dba
|
||||
sta $5ba
|
||||
lda $dbb
|
||||
sta $5bb
|
||||
lda $dbc
|
||||
sta $5bc
|
||||
lda $dbd
|
||||
sta $5bd
|
||||
lda $dbe
|
||||
sta $5be
|
||||
lda $dbf
|
||||
sta $5bf
|
||||
|
||||
; x=24,y=22
|
||||
lda $dc0
|
||||
sta $5c0
|
||||
lda $dc1
|
||||
sta $5c1
|
||||
lda $dc2
|
||||
sta $5c2
|
||||
lda $dc3
|
||||
sta $5c3
|
||||
lda $dc4
|
||||
sta $5c4
|
||||
lda $dc5
|
||||
sta $5c5
|
||||
lda $dc6
|
||||
sta $5c6
|
||||
lda $dc7
|
||||
sta $5c7
|
||||
|
||||
; x=32,y=22
|
||||
lda $dc8
|
||||
sta $5c8
|
||||
lda $dc9
|
||||
sta $5c9
|
||||
lda $dca
|
||||
sta $5ca
|
||||
lda $dcb
|
||||
sta $5cb
|
||||
lda $dcc
|
||||
sta $5cc
|
||||
lda $dcd
|
||||
sta $5cd
|
||||
lda $dce
|
||||
sta $5ce
|
||||
lda $dcf
|
||||
sta $5cf
|
||||
|
||||
;= y = 24 $628 $e28/$a28 =========================
|
||||
; x=0,y=24
|
||||
lda $e28
|
||||
sta $628
|
||||
lda $e29
|
||||
sta $629
|
||||
lda $e2a
|
||||
sta $62a
|
||||
lda $e2b
|
||||
sta $62b
|
||||
lda $e2c
|
||||
sta $62c
|
||||
lda $e2d
|
||||
sta $62d
|
||||
lda $e2e
|
||||
sta $62e
|
||||
lda $e2f
|
||||
sta $62f
|
||||
|
||||
; x=8,y=24
|
||||
lda $e30
|
||||
sta $630
|
||||
lda $e31
|
||||
sta $631
|
||||
lda $e32
|
||||
sta $632
|
||||
lda $e33
|
||||
sta $633
|
||||
lda $e34
|
||||
sta $634
|
||||
lda $e35
|
||||
sta $635
|
||||
lda $e36
|
||||
sta $636
|
||||
lda $e37
|
||||
sta $637
|
||||
|
||||
; x=16,y=24
|
||||
lda $e38
|
||||
sta $638
|
||||
lda $e39
|
||||
sta $639
|
||||
lda $e3a
|
||||
sta $63a
|
||||
lda $e3b
|
||||
sta $63b
|
||||
lda $e3c
|
||||
sta $63c
|
||||
lda $e3d
|
||||
sta $63d
|
||||
lda $e3e
|
||||
sta $63e
|
||||
lda $e3f
|
||||
sta $63f
|
||||
|
||||
; x=24,y=24
|
||||
lda $e40
|
||||
sta $640
|
||||
lda $e41
|
||||
sta $641
|
||||
lda $e42
|
||||
sta $642
|
||||
lda $e43
|
||||
sta $643
|
||||
lda $e44
|
||||
sta $644
|
||||
lda $e45
|
||||
sta $645
|
||||
lda $e46
|
||||
sta $646
|
||||
lda $e47
|
||||
sta $647
|
||||
|
||||
; x=32,y=24
|
||||
lda $e48
|
||||
sta $648
|
||||
lda $e49
|
||||
sta $649
|
||||
lda $e4a
|
||||
sta $64a
|
||||
lda $e4b
|
||||
sta $64b
|
||||
lda $e4c
|
||||
sta $64c
|
||||
lda $e4d
|
||||
sta $64d
|
||||
lda $e4e
|
||||
sta $64e
|
||||
lda $e4f
|
||||
sta $64f
|
||||
|
||||
;= y = 26 $6a8 $ea8/$aa8 =========================
|
||||
; x=0,y=26
|
||||
lda $ea8
|
||||
sta $6a8
|
||||
lda $ea9
|
||||
sta $6a9
|
||||
lda $eaa
|
||||
sta $6aa
|
||||
lda $eab
|
||||
sta $6ab
|
||||
lda $eac
|
||||
sta $6ac
|
||||
lda $ead
|
||||
sta $6ad
|
||||
lda $eae
|
||||
sta $6ae
|
||||
lda $eaf
|
||||
sta $6af
|
||||
|
||||
; x=8,y=26
|
||||
lda $eb0
|
||||
sta $6b0
|
||||
lda $eb1
|
||||
sta $6b1
|
||||
lda $eb2
|
||||
sta $6b2
|
||||
lda $eb3
|
||||
sta $6b3
|
||||
lda $eb4
|
||||
sta $6b4
|
||||
lda $eb5
|
||||
sta $6b5
|
||||
lda $eb6
|
||||
sta $6b6
|
||||
lda $eb7
|
||||
sta $6b7
|
||||
|
||||
; x=16,y=26
|
||||
lda $eb8
|
||||
sta $6b8
|
||||
lda $eb9
|
||||
sta $6b9
|
||||
lda $eba
|
||||
sta $6ba
|
||||
lda $ebb
|
||||
sta $6bb
|
||||
lda $ebc
|
||||
sta $6bc
|
||||
lda $ebd
|
||||
sta $6bd
|
||||
lda $ebe
|
||||
sta $6be
|
||||
lda $ebf
|
||||
sta $6bf
|
||||
|
||||
; x=24,y=26
|
||||
lda $ec0
|
||||
sta $6c0
|
||||
lda $ec1
|
||||
sta $6c1
|
||||
lda $ec2
|
||||
sta $6c2
|
||||
lda $ec3
|
||||
sta $6c3
|
||||
lda $ec4
|
||||
sta $6c4
|
||||
lda $ec5
|
||||
sta $6c5
|
||||
lda $ec6
|
||||
sta $6c6
|
||||
lda $ec7
|
||||
sta $6c7
|
||||
|
||||
; x=32,y=26
|
||||
lda $ec8
|
||||
sta $6c8
|
||||
lda $ec9
|
||||
sta $6c9
|
||||
lda $eca
|
||||
sta $6ca
|
||||
lda $ecb
|
||||
sta $6cb
|
||||
lda $ecc
|
||||
sta $6cc
|
||||
lda $ecd
|
||||
sta $6cd
|
||||
lda $ece
|
||||
sta $6ce
|
||||
lda $ecf
|
||||
sta $6cf
|
||||
|
||||
;= y = 28 $728 $f28/$b28 =========================
|
||||
; x=0,y=28
|
||||
lda $f28
|
||||
sta $728
|
||||
lda $f29
|
||||
sta $729
|
||||
lda $f2a
|
||||
sta $72a
|
||||
lda $f2b
|
||||
sta $72b
|
||||
lda $f2c
|
||||
sta $72c
|
||||
lda $f2d
|
||||
sta $72d
|
||||
lda $f2e
|
||||
sta $72e
|
||||
lda $f2f
|
||||
sta $72f
|
||||
|
||||
; x=8,y=28
|
||||
lda $f30
|
||||
sta $730
|
||||
lda $f31
|
||||
sta $731
|
||||
lda $f32
|
||||
sta $732
|
||||
lda $f33
|
||||
sta $733
|
||||
lda $f34
|
||||
sta $734
|
||||
lda $f35
|
||||
sta $735
|
||||
lda $f36
|
||||
sta $736
|
||||
lda $f37
|
||||
sta $737
|
||||
|
||||
; x=16,y=28
|
||||
lda $f38
|
||||
sta $738
|
||||
lda $f39
|
||||
sta $739
|
||||
lda $f3a
|
||||
sta $73a
|
||||
lda $f3b
|
||||
sta $73b
|
||||
lda $f3c
|
||||
sta $73c
|
||||
lda $f3d
|
||||
sta $73d
|
||||
lda $f3e
|
||||
sta $73e
|
||||
lda $f3f
|
||||
sta $73f
|
||||
|
||||
; x=24,y=28
|
||||
lda $f40
|
||||
sta $740
|
||||
lda $f41
|
||||
sta $741
|
||||
lda $f42
|
||||
sta $742
|
||||
lda $f43
|
||||
sta $743
|
||||
lda $f44
|
||||
sta $744
|
||||
lda $f45
|
||||
sta $745
|
||||
lda $f46
|
||||
sta $746
|
||||
lda $f47
|
||||
sta $747
|
||||
|
||||
; x=32,y=28
|
||||
lda $f48
|
||||
sta $748
|
||||
lda $f49
|
||||
sta $749
|
||||
lda $f4a
|
||||
sta $74a
|
||||
lda $f4b
|
||||
sta $74b
|
||||
lda $f4c
|
||||
sta $74c
|
||||
lda $f4d
|
||||
sta $74d
|
||||
lda $f4e
|
||||
sta $74e
|
||||
lda $f4f
|
||||
sta $74f
|
||||
|
||||
;= y = 30 $7a8 $fa8/$ba8 =========================
|
||||
; x=0,y=30
|
||||
lda $fa8
|
||||
sta $7a8
|
||||
lda $fa9
|
||||
sta $7a9
|
||||
lda $faa
|
||||
sta $7aa
|
||||
lda $fab
|
||||
sta $7ab
|
||||
lda $fac
|
||||
sta $7ac
|
||||
lda $fad
|
||||
sta $7ad
|
||||
lda $fae
|
||||
sta $7ae
|
||||
lda $faf
|
||||
sta $7af
|
||||
|
||||
; x=8,y=30
|
||||
lda $fb0
|
||||
sta $7b0
|
||||
lda $fb1
|
||||
sta $7b1
|
||||
lda $fb2
|
||||
sta $7b2
|
||||
lda $fb3
|
||||
sta $7b3
|
||||
lda $fb4
|
||||
sta $7b4
|
||||
lda $fb5
|
||||
sta $7b5
|
||||
lda $fb6
|
||||
sta $7b6
|
||||
lda $fb7
|
||||
sta $7b7
|
||||
|
||||
; x=16,y=30
|
||||
lda $fb8
|
||||
sta $7b8
|
||||
lda $fb9
|
||||
sta $7b9
|
||||
lda $fba
|
||||
sta $7ba
|
||||
lda $fbb
|
||||
sta $7bb
|
||||
lda $fbc
|
||||
sta $7bc
|
||||
lda $fbd
|
||||
sta $7bd
|
||||
lda $fbe
|
||||
sta $7be
|
||||
lda $fbf
|
||||
sta $7bf
|
||||
|
||||
; x=24,y=30
|
||||
lda $fc0
|
||||
sta $7c0
|
||||
lda $fc1
|
||||
sta $7c1
|
||||
lda $fc2
|
||||
sta $7c2
|
||||
lda $fc3
|
||||
sta $7c3
|
||||
lda $fc4
|
||||
sta $7c4
|
||||
lda $fc5
|
||||
sta $7c5
|
||||
lda $fc6
|
||||
sta $7c6
|
||||
lda $fc7
|
||||
sta $7c7
|
||||
|
||||
; x=32,y=30
|
||||
lda $fc8
|
||||
sta $7c8
|
||||
lda $fc9
|
||||
sta $7c9
|
||||
lda $fca
|
||||
sta $7ca
|
||||
lda $fcb
|
||||
sta $7cb
|
||||
lda $fcc
|
||||
sta $7cc
|
||||
lda $fcd
|
||||
sta $7cd
|
||||
lda $fce
|
||||
sta $7ce
|
||||
lda $fcf
|
||||
sta $7cf
|
||||
|
||||
;= y = 32 $450 $c50/$850 =========================
|
||||
; x=0,y=32
|
||||
lda $c50
|
||||
sta $450
|
||||
lda $c51
|
||||
sta $451
|
||||
lda $c52
|
||||
sta $452
|
||||
lda $c53
|
||||
sta $453
|
||||
lda $c54
|
||||
sta $454
|
||||
lda $c55
|
||||
sta $455
|
||||
lda $c56
|
||||
sta $456
|
||||
lda $c57
|
||||
sta $457
|
||||
|
||||
; x=8,y=32
|
||||
lda $c58
|
||||
sta $458
|
||||
lda $c59
|
||||
sta $459
|
||||
lda $c5a
|
||||
sta $45a
|
||||
lda $c5b
|
||||
sta $45b
|
||||
lda $c5c
|
||||
sta $45c
|
||||
lda $c5d
|
||||
sta $45d
|
||||
lda $c5e
|
||||
sta $45e
|
||||
lda $c5f
|
||||
sta $45f
|
||||
|
||||
; x=16,y=32
|
||||
lda $c60
|
||||
sta $460
|
||||
lda $c61
|
||||
sta $461
|
||||
lda $c62
|
||||
sta $462
|
||||
lda $c63
|
||||
sta $463
|
||||
lda $c64
|
||||
sta $464
|
||||
lda $c65
|
||||
sta $465
|
||||
lda $c66
|
||||
sta $466
|
||||
lda $c67
|
||||
sta $467
|
||||
|
||||
; x=24,y=32
|
||||
lda $c68
|
||||
sta $468
|
||||
lda $c69
|
||||
sta $469
|
||||
lda $c6a
|
||||
sta $46a
|
||||
lda $c6b
|
||||
sta $46b
|
||||
lda $c6c
|
||||
sta $46c
|
||||
lda $c6d
|
||||
sta $46d
|
||||
lda $c6e
|
||||
sta $46e
|
||||
lda $c6f
|
||||
sta $46f
|
||||
|
||||
; x=32,y=32
|
||||
lda $c70
|
||||
sta $470
|
||||
lda $c71
|
||||
sta $471
|
||||
lda $c72
|
||||
sta $472
|
||||
lda $c73
|
||||
sta $473
|
||||
lda $c74
|
||||
sta $474
|
||||
lda $c75
|
||||
sta $475
|
||||
lda $c76
|
||||
sta $476
|
||||
lda $c77
|
||||
sta $477
|
||||
|
||||
;= y = 34 $4d0 $cd0/$8d0 =========================
|
||||
; x=0,y=34
|
||||
lda $cd0
|
||||
sta $4d0
|
||||
lda $cd1
|
||||
sta $4d1
|
||||
lda $cd2
|
||||
sta $4d2
|
||||
lda $cd3
|
||||
sta $4d3
|
||||
lda $cd4
|
||||
sta $4d4
|
||||
lda $cd5
|
||||
sta $4d5
|
||||
lda $cd6
|
||||
sta $4d6
|
||||
lda $cd7
|
||||
sta $4d7
|
||||
|
||||
; x=8,y=34
|
||||
lda $cd8
|
||||
sta $4d8
|
||||
lda $cd9
|
||||
sta $4d9
|
||||
lda $cda
|
||||
sta $4da
|
||||
lda $cdb
|
||||
sta $4db
|
||||
lda $cdc
|
||||
sta $4dc
|
||||
lda $cdd
|
||||
sta $4dd
|
||||
lda $cde
|
||||
sta $4de
|
||||
lda $cdf
|
||||
sta $4df
|
||||
|
||||
; x=16,y=34
|
||||
lda $ce0
|
||||
sta $4e0
|
||||
lda $ce1
|
||||
sta $4e1
|
||||
lda $ce2
|
||||
sta $4e2
|
||||
lda $ce3
|
||||
sta $4e3
|
||||
lda $ce4
|
||||
sta $4e4
|
||||
lda $ce5
|
||||
sta $4e5
|
||||
lda $ce6
|
||||
sta $4e6
|
||||
lda $ce7
|
||||
sta $4e7
|
||||
|
||||
; x=24,y=34
|
||||
lda $ce8
|
||||
sta $4e8
|
||||
lda $ce9
|
||||
sta $4e9
|
||||
lda $cea
|
||||
sta $4ea
|
||||
lda $ceb
|
||||
sta $4eb
|
||||
lda $cec
|
||||
sta $4ec
|
||||
lda $ced
|
||||
sta $4ed
|
||||
lda $cee
|
||||
sta $4ee
|
||||
lda $cef
|
||||
sta $4ef
|
||||
|
||||
; x=32,y=34
|
||||
lda $cf0
|
||||
sta $4f0
|
||||
lda $cf1
|
||||
sta $4f1
|
||||
lda $cf2
|
||||
sta $4f2
|
||||
lda $cf3
|
||||
sta $4f3
|
||||
lda $cf4
|
||||
sta $4f4
|
||||
lda $cf5
|
||||
sta $4f5
|
||||
lda $cf6
|
||||
sta $4f6
|
||||
lda $cf7
|
||||
sta $4f7
|
||||
|
||||
inx ; 2
|
||||
dey ; 2
|
||||
bne grcr_loop ; 3
|
||||
; -1
|
||||
rts ; 6
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -28,6 +28,8 @@ apple_iie:
|
||||
jsr HOME
|
||||
|
||||
|
||||
jsr waterfall
|
||||
|
||||
; jsr starring
|
||||
|
||||
; jsr arriving_there
|
||||
|
@ -30,9 +30,12 @@ waterfall:
|
||||
sta FRAME
|
||||
sta OLD_XPOS
|
||||
|
||||
lda #1
|
||||
sta XPOS
|
||||
|
||||
lda #4
|
||||
sta DRAW_PAGE
|
||||
sta XPOS
|
||||
|
||||
|
||||
;=============================
|
||||
; Load foreground to graphic page1 (apple page2)
|
||||
@ -147,29 +150,34 @@ vblank:
|
||||
;======================================================
|
||||
; do_nothing should be 4550
|
||||
; -3 letfover from HBLANK code
|
||||
; ** -9
|
||||
; ************ -9 ??
|
||||
; -49 check for keypress
|
||||
; -2252 copy screen
|
||||
; -578 copy screen
|
||||
; -2231 draw sprite
|
||||
; =============
|
||||
; 15 cycles
|
||||
; 1689 cycles
|
||||
|
||||
; 15 cycles
|
||||
inc YPOS ; 5
|
||||
nop ; 2
|
||||
nop ; 2
|
||||
lda YPOS ; 3
|
||||
lda YPOS ; 3
|
||||
; Try X=36 Y=9 cycles=1675 R5
|
||||
; Try X=41 Y=8 cycles=1689
|
||||
|
||||
; nop
|
||||
; lda $0
|
||||
|
||||
ldy #8 ; 2
|
||||
wfloopY:ldx #41 ; 2
|
||||
wfloopZ:dex ; 2
|
||||
bne wfloopZ ; 2nt/3
|
||||
dey ; 2
|
||||
bne wfloopY ; 2nt/3
|
||||
|
||||
|
||||
;=========================
|
||||
; Clear background
|
||||
;=========================
|
||||
|
||||
jsr gr_copy_row22 ; 6+ 2246
|
||||
;=========
|
||||
; 2252
|
||||
jsr gr_copy_row22 ; 6+ 572
|
||||
;=========
|
||||
; 578
|
||||
|
||||
|
||||
;==========================
|
||||
|
Loading…
x
Reference in New Issue
Block a user