1
Discussion - EVE / Re: Modifying RAM_DL on the fly
« on: October 08, 2021, 07:12:22 PM »
RAM_DL is essentially double buffered, so when you build up a list in RAM_DL, you're not updating the display at all until you call SWAP.
So basically, there are 2 independent sets of display list memory. One which is accessible via RAM_DL, while the other is being used to scan out pixels. When the swap is processed, those two lists trade places.
In theory, if you populate both copies with your template display list, and manipulate the vertex locations before calling swap then you should be able to achieve what you're going for.
However, this a detail in how the BT815 happens to be implemented, however it is not an explicit part of the specification. What this suggests is that the BT817 may or may not work the same way, and further that even if it does, you cannot rely upon future iterations of the EVE series to behave this same way. While you can probably get it to work in RAM_DL as you're trying (if you observe the two separate pages of RAM_DL) there is an option that is within spec, and therefore, is more likely to be 'future proof'
Instead of keeping your 'template' display list in RAM_DL, you can either generate it or copy it in RAM_G, and then use existing commands to have the coprocessor copy RAM_G to RAM_DL. The benefit here, aside from it being fast and within spec, is you wind up with 1 master copy of your display list, instead of 2 copies, each a frame behind the latest displayed.
So basically, there are 2 independent sets of display list memory. One which is accessible via RAM_DL, while the other is being used to scan out pixels. When the swap is processed, those two lists trade places.
In theory, if you populate both copies with your template display list, and manipulate the vertex locations before calling swap then you should be able to achieve what you're going for.
However, this a detail in how the BT815 happens to be implemented, however it is not an explicit part of the specification. What this suggests is that the BT817 may or may not work the same way, and further that even if it does, you cannot rely upon future iterations of the EVE series to behave this same way. While you can probably get it to work in RAM_DL as you're trying (if you observe the two separate pages of RAM_DL) there is an option that is within spec, and therefore, is more likely to be 'future proof'
Instead of keeping your 'template' display list in RAM_DL, you can either generate it or copy it in RAM_G, and then use existing commands to have the coprocessor copy RAM_G to RAM_DL. The benefit here, aside from it being fast and within spec, is you wind up with 1 master copy of your display list, instead of 2 copies, each a frame behind the latest displayed.