Yeah now that you make me think about it I'm dumb, there's not enough space for a third background (maybe for more sprites instead? but if they were too strained for more color RAM I'm not hopeful about that). It goes like this, not necessarily in order though, and the fetches happen 16 pixels ahead of time (yes, it starts rendering from within border area already):tepples wrote:Educated guess of the fetch pattern over the course of 16 pixels, at 2 pixels per 4-byte burst:Is that close?
- BGA/window map (2 cells)
- BGB map (2 cells)
- BGA/window sliver for left tile of pair
- BGB sliver for left tile of pair
- sprite fetch?
- refresh?
- BGA/window sliver for right tile of pair
- BGB sliver for right tile of pair
- Plane A 2x cell entries
- Plane B 2x cell entries
- Plane A 1st cell silver
- Plane A 2nd cell silver
- Plane B 1st cell silver
- Plane B 2nd cell silver
- Sprite cell silver
- Free slot (sometimes refresh)
In any case they had to use a faster clock for 320px than for 256px which resulted in larger bandwidth, so if the SNES had to do the same it'd end up with the same result (can fetch more stuff per line, so it doesn't lose anything). The only question is whether the memory was fast enough for this.
EDIT: btw the fetches above show why there's a bug if window plane is at the left side and scroll A moves horizontally, there's a 16px column where it would need to fetch data for both but it can't do it, so instead it repeats what it had fetched for the window.
EDIT 2: by the way, sprite table fetches happen during hblank, if anybody wonders.