progress (such as it is)
In case anyone's watching ...
Re-introduced colour code and came up with some nice optimizations based on the "tiledraw.o" test. The current test kernel in that series, "tiledraw3.o" is coming along.
One annoyance? branches in the P0 draw routine taking a hit for the carry in PC (i.e. crossing a page boundary) may require some of my sleep nop's to be replaced with page alignment spacers. Keeping that working will be sheer Hell.
Theory: if I need to add some bytes but not cycles to get alignment without changing timing, pad out a few nop's but do a "guaranteed branch" over it, probably by doing something like
bit rows_left; guaranteed to have high bit clear bvc .skip_align nop nop nop nop nop nop .skip_align:;
The Hell will be keeping the page alignments and cycle counts both correct. Thank God I'm doing this in M4 and can easily re-sort which scanlines in each row things are going to happen.
For your entertainment, here's the latest build's echo outputs on RAM/ROM usage...
player_data_start $80 player_transient data length $3 player_data_end $99 player_persist data length $17 total player data length $1a linkage_data_start $9a linkage_data_ends $a1 linkage_data length $8 sounds (6B) at $a2 tiledraw_data_start $a9 tiledraw player data $a9 tiledraw decorations data $b0 tiledraw boards data $b6 tiledraw rows data $bb tile data and prefetches $be tile bitmaps alternating buffers $c6 tempvars (may be eliminated in production!) $ce reserved stack space for row data pre-pushes $cf tiledraw_data_end $ee tiledraw data length $46 End of RAM allocations $ee Total RAM used $6f Free RAM for stack $11 ROM bank 0 begins $f000 Setup begins $f026 Frame draw begins (with VSYNC) $f03a vertical sync space preamble ends $f043 beginning game animation and input $f043 Prepare to draw rows $f261 end of game logic $f26d length of main loop $22a Row drawing begins $f282 Straight-ahead drawing ends $f6ca length of unrolled drawing $448 End of kernel $f6de end of bank 0 code $f6de length of bank 0 code $6de Start of bank 0 data $f800 Start of lookup tables area $f800 End of lookup tables area $f829 Lookup tables' length $29 Start of bitmaps area $f829 player_art $f829 end of player art $f865 decorations $f900 end of decorations $f919 tile bitmaps $f919 reversed tile bitmaps (PF1/left, PF2/right) $f941 end of tile bitmaps $f969 number of tile bitmaps $5 verifying bitmap ROM usage: $5 OK, computes end of bitmaps data $f969 length of bitmaps data $140 start of maps data $fa00 end of maps data $fa81 length of maps data $81 end of bank 0 data $fa81 length of data $281 *** Appendix Area: *** The appendix area ends at: $ff15 The length of the appendix area is: $15
The appendix area is the bank-switching code that's dummied-out in this build, it normally will end at $ffee when using the final EF bankswitching.

0 Comments
Recommended Comments
There are no comments to display.