diff --git a/megademo/gr_unrolled_copy.s b/megademo/gr_unrolled_copy.s index 4c89fc95..2da532fd 100644 --- a/megademo/gr_unrolled_copy.s +++ b/megademo/gr_unrolled_copy.s @@ -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 + + + diff --git a/megademo/megademo.s b/megademo/megademo.s index b1bece73..9be3c13d 100644 --- a/megademo/megademo.s +++ b/megademo/megademo.s @@ -28,6 +28,8 @@ apple_iie: jsr HOME + jsr waterfall + ; jsr starring ; jsr arriving_there diff --git a/megademo/waterfall.s b/megademo/waterfall.s index e1b51ff2..29f64e18 100644 --- a/megademo/waterfall.s +++ b/megademo/waterfall.s @@ -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 ;==========================