The current URL is datacrystal.tcrf.net.
Blaster Master/ROM map
The following article is a ROM map for Blaster Master.
The corresponding RAM map can be found here.
All offsets in this document are relative to the beginning of the headerless ROM. To get the offset for a headered ROM (.nes) file, add 0x10 (16 in decimal) to the offset. The data structures listed below are described in detail here.
Note that because the game references data via pointers, the layout of level data doesn't necessarily need to be in a consistent order. In theory the data for all of the levels within a single bank could be intermixed, though this would be impractical.
PRG-ROM
The PRG-ROM consists of 8 banks of 16 KB each. First three of these contain all the data associated with level maps (both tank and overhead levels) including their physical attributes. The fourth bank contains data related to enemies and powerups, together with some additional data. Banks 4-7 presumably contain the actual game engine code, music, sound effects, etc.
Bank 0
0x00000 Level 1 base pointers 0x00004 Level 2 base pointers 0x00008 Level 3 base pointers 0x0000C Level 4 base pointers 0x00010 Level 5 base pointers
0x00014 Level 1 data pointer table 0x00020 Level 1 background palette 0x00030 Level 1 combo description list (154 combos) 0x00298 Level 1 structure description list (244 structures) 0x00668 Level 1 block description list (203 blocks) 0x00994 Level 1 map data 0x00D94 Level 1 combo attribute list 0x00E2E Level 1 scroll data
0x00E3E Level 2 data pointer table 0x00E4A Level 2 background palette 0x00E5A Level 2 combo description list (152 combos) 0x010BA Level 2 structure description list (142 structures) 0x012F2 Level 2 block description list (160 blocks) 0x01572 Level 2 map data 0x01972 Level 2 scroll data 0x01982 Level 2 combo attribute list
0x01A1A Level 3 data pointer table 0x01A26 Level 3 background palette 0x01A36 Level 3 combo description list (121 combos) 0x01C1A Level 3 structure description list (128 structures) 0x01E1A Level 3 block description list (179 blocks) 0x020E6 Level 3 map data 0x024E6 Level 3 combo attribute list 0x0255F Level 3 scroll data
0x0256F Level 4 data pointer table 0x0257B Level 4 background palette 0x0258B Level 4 combo description list (131 combos) 0x02797 Level 4 structure description list (182 structures) 0x02A6F Level 4 block description list (158 blocks) 0x02CE7 Level 4 map data 0x030E7 Level 4 combo attribute list 0x0316A Level 4 scroll data
0x0317A Level 5 data pointer table 0x03186 Level 5 background palette 0x03196 Level 5 combo description list (130 combos) 0x0339E Level 5 structure description list (159 structures) 0x0361A Level 5 block description list (184 blocks) 0x038FA Level 5 map data 0x03CFA Level 5 combo attribute list 0x03D7C Level 5 scroll data
0x03D8C [628 bytes of unused space]
Bank 1
0x04000 Level 6 base pointers 0x04004 Level 7 base pointers 0x04008 Level 8 base pointers 0x0400C Level 9 base pointers 0x04010 Level 11 base pointers
0x04014 [2 bytes of unused space]
0x04016 Level 6 data pointer table 0x04022 Level 6 background palette 0x04032 Level 6 combo description list (104 combos) 0x041D2 Level 6 structure description list (193 structures) 0x044D6 Level 6 block description list (202 blocks) 0x047FE Level 6 map data 0x04BFE Level 6 scroll data 0x04C0E Level 6 combo attribute list
0x04C76 Level 7 data pointer table 0x04C82 Level 7 background palette 0x04C92 Level 7 combo description list (122 combos) 0x04E7A Level 7 structure description list (177 structures) 0x0513E Level 7 block description list (206 blocks) 0x05476 Level 7 map data 0x05876 Level 7 combo attribute list 0x058F0 Level 7 scroll data
0x05900 Level 8 data pointer table 0x0590C Level 8 background palette 0x0591C Level 8 combo description list (133 combos) 0x05B30 Level 8 structure description list (149 structures) 0x05D84 Level 8 block description list (254 blocks) 0x0617C Level 8 map data 0x0657C Level 8 combo attribute list 0x06601 Level 8 scroll data
0x06611 Level 9 data pointer table 0x0661D Level 9 background palette 0x0662D Level 9 combo description list (76 combos) 0x0675D Level 9 structure description list (124 structures) 0x0694D Level 9 block description list (136 blocks) 0x06B6D Level 9 map data 0x06E8D Level 9 combo attribute list 0x06ED9 Level 9 scroll data
0x06EE9 Level 11 data pointer table 0x06EF5 Level 11 background palette 0x06F05 Level 11 combo description list (90 combos) 0x0706D Level 11 structure description list (99 structures) 0x071F9 Level 11 block description list (114 blocks) 0x073C1 Level 11 map data 0x077C1 Level 11 scroll data 0x077D1 Level 11 combo attribute list
0x0782B [2005 bytes of unused space]
Bank 2
0x08000 Level 13 base pointers 0x08004 Level 10 base pointers 0x08008 Level 14 base pointers 0x0800C Level 16 base pointers 0x08010 Level 12 base pointers 0x08014 Level 15 base pointers
0x08018 [10 bytes of unused space]
0x08022 Level 13 data pointer table 0x0802E Level 13 background palette 0x0803E Level 13 combo description list (112 combos) 0x081FE Level 13 structure description list (112 structures) 0x083BE Level 13 block description list (128 blocks) 0x085BE Level 13 map data 0x0895E Level 13 scroll data 0x0896E Level 13 combo attribute list
0x089DE Level 10 data pointer table 0x089EA Level 10 background palette 0x089FA Level 10 combo description list (75 combos) 0x08B26 [4 bytes of unused space] 0x08B2A Level 10 structure description list (124 structures) 0x08D1A Level 10 block description list (108 blocks) 0x08ECA Level 10 map data 0x092CA Level 10 scroll data 0x092DA Level 10 combo attribute list
0x09325 Level 14 data pointer table 0x09331 Level 14 background palette 0x09341 Level 14 combo description list (73 combos) 0x09465 [12 bytes of unused space] 0x09471 Level 14 structure description list (112 structures) 0x09631 Level 14 block description list (120 blocks) 0x09811 Level 14 map data 0x09C11 Level 14 scroll data 0x09C21 Level 14 combo attribute list
0x09C6A Level 16 data pointer table 0x09C76 Level 16 background palette 0x09C86 Level 16 combo description list (75 combos) 0x09DB2 [4 bytes of unused space] 0x09DB6 Level 16 structure description list (136 structures) 0x09FD6 Level 16 block description list (144 blocks) 0x0A216 Level 16 map data 0x0A616 Level 16 scroll data 0x0A626 Level 16 combo attribute list
0x0A671 Level 12 data pointer table 0x0A67D Level 12 background palette 0x0A68D Level 12 combo description list (94 combos) 0x0A805 [8 bytes of unused space] 0x0A80D Level 12 structure description list (132 structures) 0x0AA1D Level 12 block description list (108 blocks) 0x0ABCD Level 12 map data 0x0AFCD Level 12 scroll data 0x0AFDD Level 12 combo attribute list
0x0B03B Level 15 data pointer table 0x0B047 Level 15 background palette 0x0B057 Level 15 combo description list (92 combos) 0x0B1C7 Level 15 structure description list (116 structures) 0x0B397 Level 15 block description list (152 blocks) 0x0B5F7 Level 15 map data 0x0B9F7 Level 15 scroll data 0x0BA07 Level 15 combo attribute list
0x0BA63 [1437 bytes of unused space]
(Overhead levels are denoted here with numbers 9-16.)
Notes
- The size of any data entry in the list above can be calculated by subtracting its offset from the offset of the next entry. All gaps and unused areas between data structures are explicitly mentioned in the list.
- Level data pointer table, background palette, and scroll data all have the same sizes for every level (12, 16 and 16 bytes, respectively). Map data is 1024 bytes long for all other levels except 9 and 13, the former having only 800 bytes of map data and the latter having 928 bytes.
- Combo description list, structure description list, block description list, and combo attribute list have different sizes for each level. The description lists consist of 4-byte items, thus their sizes are multiples of four. Combo attribute list has the same number of items as the corresponding combo description list, and since each attribute list item takes one byte, the size of combo attribute list is one fourth of the corresponding combo description list.
CHR-ROM
The character ROM consists of 32 banks of 4 KB in size. CHR-ROM layout is as follows:
0x20000 Bank 00 Sprite graphics for tank levels 1, 4 and 7 0x21000 Bank 01 Sprite graphics for tank levels 2, 6 and 8 0x22000 Bank 02 Sprite graphics for tank level 5 0x23000 Bank 03 Sprite graphics for tank level 3 0x24000 Bank 04 Game intro sequence graphics (1/3) 0x25000 Bank 05 Game intro sequence graphics (2/3) 0x26000 Bank 06 Graphics for tank explosion & Jason's death at tank levels 0x27000 Bank 07 Game title screen & text only screens 0x28000 Bank 08 Background graphics for tank level 1 0x29000 Bank 09 Background graphics for tank level 2 0x2A000 Bank 10 Background graphics for tank level 3 0x2B000 Bank 11 Background graphics for tank level 4 0x2C000 Bank 12 Background graphics for tank level 5 0x2D000 Bank 13 Background graphics for tank level 6 0x2E000 Bank 14 Background graphics for tank level 7 0x2F000 Bank 15 Background graphics for tank level 8 0x30000 Bank 16 Sprite graphics common to all overhead levels (also partially used for the pause screen) 0x31000 Bank 17 Background/enemy graphics for overhead levels 1 and 8 0x32000 Bank 18 Background/enemy graphics for overhead levels 3 and 5 0x33000 Bank 19 Background/enemy graphics for overhead levels 2 and 6 0x34000 Bank 20 Background/enemy graphics for overhead levels 4 and 7 0x35000 Bank 21 Pause screen graphics 0x36000 Bank 22 Game intro sequence graphics (3/3) 0x37000 Bank 23 Graphics for the end credits 0x38000 Bank 24 Boss graphics for levels 2, 4, 6 and 7 0x39000 Bank 25 Boss graphics for levels 1 and 3 0x3A000 Bank 26 Graphics for level 5 boss 0x3B000 Bank 27 Graphics for level 8 boss 0x3C000 Bank 28 Graphics for the final boss 0x3D000 Bank 29 Animation shown when starting a new game 0x3E000 Bank 30 Level 1 gatekeeper graphics 0x3F000 Bank 31 Cinematic sequence before the end credits
The first 160 tiles of banks 0, 1, 2, 3 and 30 are identical - only the last 96 tiles differ. This means that the level-specific enemy sprites reside in the last 96 tiles of those banks. Additionally, the first 128 tiles of bank 6 are identical with those of banks 0, 1, 2, 3 and 30.
Miscellaneous info
- Background palettes for each level:
(t=tank, o=overhead)
1t: 0f 07 00 01 0f 02 01 1c 0f 0a 18 28 0f 17 19 10 2t: 0f 0b 00 10 0f 0a 1b 20 0f 07 17 10 0f 05 16 10 3t: 0f 06 17 10 0f 07 00 10 0f 14 19 10 0f 0b 00 37 4t: 0f 0b 00 10 0f 0b 11 3c 0f 07 00 3b 0f 06 17 38 5t: 0f 0c 1b 10 0f 07 17 10 0f 0b 1a 2a 0f 0c 14 24 6t: 0f 1c 2c 31 0f 00 26 36 0f 0b 1c 2b 0f 2c 3c 30 7t: 0f 16 26 36 0f 07 16 26 0f 05 15 26 0f 08 0a 1a 8t: 0f 05 14 35 0f 05 16 36 0f 02 13 23 0f 05 1b 20 1o: 0f 06 17 27 0f 07 19 28 0f 07 17 19 0f 07 00 10 2o: 0f 0b 00 10 0f 07 17 10 0f 07 00 3b 0f 00 10 20 3o: 0f 07 00 10 0f 05 14 10 0f 0b 1b 2c 0f 16 26 36 4o: 0f 0a 1b 20 0f 07 17 3a 0f 19 10 20 0f 0c 1c 31 5o: 0f 0a 1a 2a 0f 02 12 21 0f 0a 11 2c 0f 16 26 36 6o: 0f 1c 2c 3c 0f 0b 1b 2c 0f 02 22 31 0f 1c 2c 30 7o: 0f 08 1a 2b 0f 03 12 22 0f 07 17 10 0f 05 15 27 8o: 0f 09 19 04 0f 07 17 36 0f 04 19 2a 0f 05 23 14