After sharing it with CluckFox and Bucket Mouse in the Discord, we figured out that moving a big chunk of doLoadScreen.asm into Bank 16 is possible and saves a ton of space in the static bank (like 15%).
First you need to copy out the middle section of doLoadScreen.asm. By default it's line 50:
Code:
LoadBackgroundPalettes newPal
JSR doWaitFrame
;; We wait this frame because the LoadBackgroundPalettes routine
;; sets bckpal variables and activates the update palette.
;; waiting this frame holds up on the next routine until the
;; background palettes are loaded into the PPU.
;LoadObjectPalettes #$00
LoadObjectSubPalettes spriteSubPal1, #$00
LoadObjectSubPalettes spriteSubPal2, #$04
LoadObjectSubPalettes spriteSubPal3, #$08
LoadObjectSubPalettes spriteSubPal4, #$0C
...
to just past line 414:
Code:
...
LoadChrData temp, #$08, #$00, #$80, MonsterAddressLo, MonsterAddressHi, monsterTableOffset
;arg0 - bank where graphics live
;arg1 - row
;arg2 - column (by 10s...must end in zero)
;arg3 - how many tiles to load. If 00, will load whole sheet.
;arg4 - Label in bank 16 table, low.
;arg5 - Label in bank 16 table, hi.
;arg6 - Bank 16 table offset
JSR doWaitFrame
Paste this into a new file, adding
to the top of the file, and putting an RTS at the bottom. Save it in your project directory as doLoadScreen16.asm.
Back in doLoadScreen.asm, add this at line 39, where you removed all the code:
Code:
SwitchBank #$16
JSR doLoadScreen16
ReturnBank
Next you need to include the new file in Bank 16.
In NES Maker, go to Project Settings -> Script Settings -> Add, then fill it out like this:
Name: Load Screen Bank 16
Define: SCR_LOADSCREEN16
Then hit okay. On the right, navigate to where you saved the doLoadScreen16.asm and double click it.
Next open bank 16, which is toward the top in the script list.
You want to add
Code:
.include SCR_LOADSCREEN16
in here. I add it with the other includes at line 494 so they're together, but I don't think it matters.
That should be it. The only issue we've found is if your screenbytes are loaded in Post Screen Load, you need to move them into Extra Screen Load, ie somewhere before the switch to bank 16.