Mega ShockedLe 02/09/2021 à 17:18
My input on this one is that DATLib supports 'scrollers' I believe the documentation indicates that the 'scroller' manages 21 sprites automatically. The updating of the tile gfx is managed under the hood. They are very straight forward to use and there are examples for declaring and incrementing the position of your large map. This is an ideal solution if you want to skip manually programming your own scrolling map.
I have also played around with programming my own managed sprites aka 21 or more free floating strips. I do this still using DATLib and I don't notice tearing. I believe DATLib 0.3 specifically improved tearing (I think that's in the notes from what I remember)
The trick to managing off screen sprites exceeding 21 is to hide / clear the invisible sprites to my knowledge if the sprites are cleared and not redrawn the next frame that allows for more sprites to be drawn. We are always managing 96 sprites turning off/clearing the ones we don't need.
In DATLib 'sprites' are chained aka when you use the animator tool. So I guess you could make 'sprites' that are 4 tiles wide by 512 pixels high. This would mean the act of chaining the sprites is done under the hood via DATLib solely due to the process you are creating sprites via the method DATLib requires. Then you could use the 'Sprite Pool' method to make animating / hiding and showing sprites much easier. DATLib's Sprite Pools are great because they automatically manage sprite widths that fluctuate but in your case all strips will be 64 pixels wide so that is less important but the hiding/showing could be helpful. What I mean is that the pool manages sprites in the list. I belive when they are hidden via DATLibs function call they are not counted toward the 96 sprite limit.
The issue would be updating your strips if you used this method as you would have to iterate the gfx data manually and apply it to the applicable strip.
Then of course if you don't intend on using DATLib this sugestion is not relevant. I must say I love this forum and you guys. I worry my feedback might not be ideal but it is a joy to participate in the madness that is NeoDev!