SP1 Scrolling: Updated Performance Review

I have reconfigured all tests to use a 16x24-cell scrolling zone, which is a more realistic size for a scrolling game on the ZX. The results are proportionally similar to the previous ones, but with bigger differences between the baseline measurements and the optimized ones in Test 3 and Test 4.

Here is the table with the old and new results in an additional column for comparison:

Test # Directory Description FPS-16x16 FPS-16x24
Test 0 sp1-baseline PoC to test raw performance of SP1 updating whole scroll area 22 15
Test 1 sp1-randomtiles Whole scroll/top-row-update loop, full column scroll and invalidation 17-18 12
Test 2 sp1-sprites Test 1, with added moving sprites 13 10
Test 3 sp1-partial-inv-1 Test 2, with added partial column invalidation, method #1 17-25 13-22
Test 4 sp1-partial-inv-2 Test 2, with added partial column invalidation, method #2 20-25 17-23
Test 5 - Not implemented - -
Test 6 sp1-parallax Test 3, with 2 added parallax zones scrolling at different speeds 11-17 9-16

In this new test it can clearly be seen that the baselines (the ones that manage and invalidate the full area) suffer a big performance penalty when enlarging the scrolling area, while the optimized ones are not quite that affected. Indeed the algorithm in Test 4 seems a real candidate for a good ZX scrolling game, using all SP1 power.

I’d like to thank everyone for the feedback on this series of articles. As I said, I’ll continue on my personal learning path, exploring and documenting some other scrolling techniques, but not SP1 based. I’m really satisfied with all the knowledge gathered here and I hope this can be a reference work for future game developers who want to make a scrolling game.

Have fun