Wave wrote:
When you say "The other option is to use IRQs to skip over the status bar, like Crystalis does." is that changing verticall scrolling midframe?
Wasn't that not possible?
Like it's been said, it's possible to redefine the scroll to any position you want midframe if you use some $2006/$2005 trickery (as explained in Loopy's scrolling doc).
Crystalis uses horizontal mirroring, meaning that the name tables are arranged one on top of the other, forming a 256x480-pixel map. However it uses the top name table for the map, and the bottom one for the status bar (like a game using single-screen mirroring would).
But since mirroring is set to horizontal, when the end of the name table with the map is reached during rendering the name table with the status bar would be displayed next, so the game sets up an IRQ for the scanline where this happens and resets the scroll back to the top of the screen at that point, forcing a scroll wrap (that would happen naturally with single-screen mirroring).
So yeah, it's basically simulating 1-screen mirroring. If you are just starting your project and haven't picked a mapper yet, I suggest you use a simple one that supports 1-screen mirroring (like AxROM), unless you absolutely need the other functions of mappers like the MMC3, such as CHR bankswitching, IRQs for purposes other than simulating 1-screen mirroring, and so on.