Change: reduce register consumption for spritelayouts #306
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Spritelayouts can consume a huge amount of registers, especially with stations as all the spritelayouts are merged into a single action 0.
https://gist.github.com/glx22/19446d63c287f050719c54cb099c4f8f is a station using 40 spritelayouts and requiring 136 registers (I had to increase the nml reserved range to make it compile).
As can be seen in the "Station Layout@registers" varact2 most of the registers are set to the same values, that was not an issue for non station spritelayouts but it's a huge waste of registers for stations.
With this PR, a new register is used only for when it's really needed.
https://gist.github.com/glx22/e749d7f074cb5eb53b4228fd8340e48a is the same station as in the previous gist, but it requires 8 registers only