Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.

Blaster Master/ROM map

From Data Crystal
< Blaster Master
Revision as of 14:22, 9 June 2010 by 97.107.134.91 (talk) (Created article, most info from documentation on romhacking.net.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Chip tiny.png The following article is a ROM map for Blaster Master.

The corresponding RAM Map.

Offsets are for a headerless ROM. To get the offset for a headered ROM (.nes) file, add 0x10 (16 in decimal) to the offset. This ROM map covers the entire first 16k bank. All listed entries are contiguous. The size of each data entry can be calculated by subtracting the next offset by the former offset. Data strucutres are described at Data Strucutres

Note that because the game references data via pointers, the layout of level data doesn't necessarily need to be in a consistent order. Note that Level 2's combo attribute data comes after the scroll map whereas in each other level the combo attribute data comes before the scroll map. In theory the data for all of the levels within a single bank could be intermixed, though this would be impractical.


Banks

The first three banks contain map data for a number of levels each. Enemy/object data for all levels is contained in bank 3. Map data for each level, both overhead and tank levels, is in the same format, and each of the first three banks is laid out in a similar fashion.

Bank Offset Data
0 0x00000 Tank Levels 1 - 5
1 0x04000 Tank Levels 6 - 8, Overhead levels 1 and 3
2 0x08000 Overhead Levels 2 and 6 - 8
3 0x0C000 Enemy/Object data and other


Level Pointers

Offset Description
0000 Level 1 map data pointer
0002 Level 1 map scroll data pointer
0004 Level 2 map data pointer
0006 Level 2 map scroll data pointer
0008 Level 3 map data pointer
000A Level 3 map scroll data pointer
000C Level 4 map data pointer
000E Level 4 map scroll data pointer
0010 Level 5 map data pointer
0012 Level 5 map scroll data pointer


Level 1

Offset Description
0014 Map pointers
0020 Bg Palette
0030 Combos (count = 0x9A)
0298 Structures (count = 0xF4)
0668 Blocks (count = CB)
0994 Map
0D94 Combo attributes (count = 0x9A)
0E2E Scroll map


Level 2

Offset Description
0E3E Map pointers
0E4A Bg palette
0E5A Combos (count = 0x98)
10BA Strucutres (count = 0x8E)
12F2 Blocks (count = 0xA0)
1572 Map
1972 Scroll map
1982 Combo attributes (count = 0x98)


Level 3

Offset Description
1A1A Map pointers
1A26 Bg palette
1A36 Combos (count = 0x79)
1C1A Strucutres (count = 0x80)
1E1A Blocks (count = 0xB3)
20E6 Map
24E6 Combo attributes (count = 0x79)
255F Scroll map


Level 4

Offset Description
256F Map pointers
257B Bg palette
258B Combos (count = 0x83)
2797 Structures (count = 0xB6)
2A6F Blocks (count = 0x9E)
2CE7 Map
30E7 Combo attributes (count = 0x83)
316A Scroll map


Level 5

Offset Description
317A Map pointers
3186 Bg palette
3196 Combos (count = 0x82)
339E Structures (count = 0x9F)
361A Blocks (count = 0xB8)
38FA Map
3CFA Combo attributes (count = 0x82)
3D7C Scroll map


End of Bank

Offset Description
3D8C Unknown. Zero-ing out 0x3D8C to 0x3FFF does not appear to affect the game.
4000 BANK: Bank 1