Mega Man V: Screen Bank Data
Like normal Level Data, Screen Bank Data is divided into banks on $2000 bytes (Screen Bank) starting from ROM address $10. This is becouse of how the MMC3 memory mapper divides rom banks. The Screen Banks is almost exactly the same banks as normal Level Data. The different graphics datas are at fixed offsets in the Screen Bank, right after normal level data. The bank is either loaded into memory area $8000-$9FFF or $A000-$BFFF when screen bank data is read.
A Screen Bank can be used by one, multiple, or no level(s). At ROM offset $3D4D2 is a table of which Screen Bank to be used for each Level ID. Some Screen Banks contains graphics data used for certian screens in the game that has nothing with levels to do, like the intro scenes, the title screen, stage select screen, and you can guess the rest. Which banks they are is documented in the ROM map, as banks with "Scenes Bank" in the headline. Mega Man 5 has most banks used in such a way that they contain both the normal Level Data and Screen Bank Data for one same level. These are the default exceptions:
- Protoman Castle Stage 4 uses the Screen Bank default to Protoman Castle Stage 1. The Screen Bank defult to Protoman Castle Stage 4, not used by any level, contains scene graphics data.
- Wily Castle Stage 4 uses the Screen Bank default to Wily Castle Stage 3. The Screen Bank default to Wily Castle Stage 4, not used by any level, contains scene graphics data.
The graphical datas are a system of data tables which altogether builds up screen presets. These datas can be symbolized with information on how to put different puzzle pieces together to create an image, and again, what puzzle pieces each puzzle piece is put together of.
The use of terms for this kind of data may vary, so to undo confusion, this is the terms i use for what:
- Screen Preset: A typical NES screen, built up of 8 * 8 Structures
- Structure: A 32x32 pixel piece, built up of 2 * 2 TSA Blocks
- TSA Block: A 16x16 pixel piece, built up of 2 * 2 CHR Tiles, and has a Type and Palette property.
Offsets below have iNES header added to them. To get the proper ROM address for a Level ID, one must add an multiplication of $2000 (depending on the Screen Bank used by the Level ID) to the offsets below. For example, the Structure Data for Gravityman's Level (Screen Bank #0) is at ROM address $1210, while the Structure Data for Waveman's Level (Screen Bank #1) is at ROM address $3210.