Description:
The goal is to arbitrarily be able to switch nametables (or rather, nametable banks since it's GTROM) using sprite 0 hit at a top scanline.
This is how i imagine it to work: After vblank, we begin a new frame with a constant, never scrolling tile row from nametable/pattern bank 0. Sprite 0 is constantly placed on top of a same-coloured line. This will tell the mapper to switch nametable/pattern banks to 1 and set scroll to positions stored in zp RAM. This bank 1-based field will be scrolling on both x and y axis; following an introductory sweep of the scene, and/or the voluntary movement of camera by player. It's never larger than the four screens' worth of nametable space.
A strip of text will appear describing the scenery or some detail. This is supposed to be done by having counted scanlines and switching back to the 'text'/0 banks. This means i'd probably use pubby's constant-cycle music engine to keep the counting accurate.
The game is simple. It's just pictures and text and 'point/select and click'. No action logic happening between player actions. Just a bit of sprite animation happening during vblank.
Question 1: am i overlooking a less complicated way of doing the switching? IRQ scanline counting is unfortunately out of question since the project relies on making use of GTROMs' nametable and pattern bankswitching capabilities in order to keep both scenery as detailed as possible and item graphics + text patterns/strings in their separate nt/char banks.
An option i've pondered is starting in nt/chartable bank 1 (meaning no border above), make sure sprite overflow will happen at a certain scanline (where the text strip section should begin), do a little counting here where it is less sensitive to cycle wobbling and get the desired text scroll effect. Sacrificing 8 or 9 sprites this way is a bit wasteful, but there's less need for counting lines. Then either terminate the text strip with further scanline count, or spr0 hit.
Question 2: Anything i should be watchful of, or something that will outright put a halt to this plan/layout?
For clarification, here's a rudimentary layout. Imagine a free-moving scenery where the typographic samples and green gradients are.
Another few notes:
-Overscan will hide the upper border, and if not; it's simple enough to not be intrusive.
-The 'text strip' can be put off-grid and hopefully scroll independently to reveal more than two lines of text in a scrolling motion. The 'ankh' symbol is meant to mark "end of description - next button press will remove the text strip from the field of play". To keep borders nonscrolling, y scrolling will be set more than just once here.
The goal is to arbitrarily be able to switch nametables (or rather, nametable banks since it's GTROM) using sprite 0 hit at a top scanline.
This is how i imagine it to work: After vblank, we begin a new frame with a constant, never scrolling tile row from nametable/pattern bank 0. Sprite 0 is constantly placed on top of a same-coloured line. This will tell the mapper to switch nametable/pattern banks to 1 and set scroll to positions stored in zp RAM. This bank 1-based field will be scrolling on both x and y axis; following an introductory sweep of the scene, and/or the voluntary movement of camera by player. It's never larger than the four screens' worth of nametable space.
A strip of text will appear describing the scenery or some detail. This is supposed to be done by having counted scanlines and switching back to the 'text'/0 banks. This means i'd probably use pubby's constant-cycle music engine to keep the counting accurate.
The game is simple. It's just pictures and text and 'point/select and click'. No action logic happening between player actions. Just a bit of sprite animation happening during vblank.
Question 1: am i overlooking a less complicated way of doing the switching? IRQ scanline counting is unfortunately out of question since the project relies on making use of GTROMs' nametable and pattern bankswitching capabilities in order to keep both scenery as detailed as possible and item graphics + text patterns/strings in their separate nt/char banks.
An option i've pondered is starting in nt/chartable bank 1 (meaning no border above), make sure sprite overflow will happen at a certain scanline (where the text strip section should begin), do a little counting here where it is less sensitive to cycle wobbling and get the desired text scroll effect. Sacrificing 8 or 9 sprites this way is a bit wasteful, but there's less need for counting lines. Then either terminate the text strip with further scanline count, or spr0 hit.
Question 2: Anything i should be watchful of, or something that will outright put a halt to this plan/layout?
For clarification, here's a rudimentary layout. Imagine a free-moving scenery where the typographic samples and green gradients are.
Another few notes:
-Overscan will hide the upper border, and if not; it's simple enough to not be intrusive.
-The 'text strip' can be put off-grid and hopefully scroll independently to reveal more than two lines of text in a scrolling motion. The 'ankh' symbol is meant to mark "end of description - next button press will remove the text strip from the field of play". To keep borders nonscrolling, y scrolling will be set more than just once here.