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: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
m (Redundant category removal, cleanup)
(complete rewrite)
Line 1: Line 1:
{{rommap|game=Blaster Master}}
{{rommap|game=Blaster Master}} The corresponding RAM map can be found [http://www.datacrystal.org/wiki/Blaster_Master:RAM_map here].
The corresponding RAM map can be found [http://www.datacrystal.org/wiki/Blaster_Master:RAM_map 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 [[Blaster Master:Data Structures|here]].


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 structures are described [[Blaster Master:Data Structures|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. For example, 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.


==PRG-ROM==


Note that because the game references data via pointers, the layout of level data doesn't necessarily need to be in a consistent order. For example, 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
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.
this would be impractical.


===Bank 0===


==Banks==
<pre style="background-color: #A0E0FF; padding: 4px 16px">
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.
0x00000   Level 1 base pointers
{| border="1" cellpadding="1"
0x00004  Level 2 base pointers
!Bank !! Offset !! Data
0x00008  Level 3 base pointers
|-
0x0000C  Level 4 base pointers
|0 || 0x00000 || Tank Levels 1 - 5
0x00010  Level 5 base pointers
|-
</pre>
|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
|}


<pre style="background-color: #A0E0FF; padding: 4px 16px">
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
</pre>


==Level Pointers==
<pre style="background-color: #A0E0FF; padding: 4px 16px">
{| border="1" cellpadding="1"
0x00E3E  Level 2 data pointer table
!Offset !! Description
0x00E4A  Level 2 background palette
|-
0x00E5A  Level 2 combo description list (152 combos)
|0000 || Level 1 map data pointer
0x010BA  Level 2 structure description list (142 structures)
|-
0x012F2  Level 2 block description list (160 blocks)
|0002 || Level 1 map scroll data pointer
0x01572  Level 2 map data
|-
0x01972  Level 2 scroll data
|0004 || Level 2 map data pointer
0x01982  Level 2 combo attribute list
|-
</pre>
|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
|}


<pre style="background-color: #A0E0FF; padding: 4px 16px">
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
</pre>


==Level 1==
<pre style="background-color: #A0E0FF; padding: 4px 16px">
{| border="1" cellpadding="1"
0x0256F  Level 4 data pointer table
!Offset !! Description
0x0257B  Level 4 background palette
|-
0x0258B  Level 4 combo description list (131 combos)
|0014 || Map pointers
0x02797  Level 4 structure description list (182 structures)
|-
0x02A6F  Level 4 block description list (158 blocks)
|0020 || Bg Palette
0x02CE7  Level 4 map data
|-
0x030E7  Level 4 combo attribute list
|0030 || Combos (count = 0x9A)
0x0316A  Level 4 scroll data
|-
</pre>
|0298 || Structures (count = 0xF4)
|-
|0668 || Blocks (count = CB)
|-
|0994 || Map
|-
|0D94 || Combo attributes (count = 0x9A)
|-
|0E2E || Scroll map
|}


<pre style="background-color: #A0E0FF; padding: 4px 16px">
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
</pre>


==Level 2==
<pre style="padding: 4px 16px">
{| border="1" cellpadding="1"
0x03D8C  [628 bytes of unused space]
!Offset !! Description
</pre>
|-
|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)
|}


===Bank 1===


==Level 3==
<pre style="background-color: #A0E0FF; padding: 4px 16px">
{| border="1" cellpadding="1"
0x04000  Level 6 base pointers
!Offset !! Description
0x04004  Level 7 base pointers
|-
0x04008  Level 8 base pointers
|1A1A || Map pointers
0x0400C  Level 9 base pointers
|-
0x04010  Level 11 base pointers
|1A26 || Bg palette
</pre>
|-
|1A36 || Combos (count = 0x79)
|-
|1C1A || Strucutres (count = 0x80)
|-
|1E1A || Blocks (count = 0xB3)
|-
|20E6 || Map
|-
|24E6 || Combo attributes (count = 0x79)
|-
|255F || Scroll map
|}


<pre style="padding: 4px 16px">
0x04014  [2 bytes of unused space]
</pre>


==Level 4==
<pre style="background-color: #A0E0FF; padding: 4px 16px">
{| border="1" cellpadding="1"
0x04016  Level 6 data pointer table
!Offset !! Description
0x04022  Level 6 background palette
|-
0x04032  Level 6 combo description list (104 combos)
|256F || Map pointers
0x041D2  Level 6 structure description list (193 structures)
|-
0x044D6  Level 6 block description list (202 blocks)
|257B || Bg palette
0x047FE  Level 6 map data
|-
0x04BFE  Level 6 scroll data
|258B || Combos (count = 0x83)
0x04C0E  Level 6 combo attribute list
|-
</pre>
|2797 || Structures (count = 0xB6)
|-
|2A6F || Blocks (count = 0x9E)
|-
|2CE7 || Map
|-
|30E7 || Combo attributes (count = 0x83)
|-
|316A || Scroll map
|}


<pre style="background-color: #A0E0FF; padding: 4px 16px">
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
</pre>


==Level 5==
<pre style="background-color: #A0E0FF; padding: 4px 16px">
{| border="1" cellpadding="1"
0x05900  Level 8 data pointer table
!Offset !! Description
0x0590C  Level 8 background palette
|-
0x0591C  Level 8 combo description list (133 combos)
|317A || Map pointers
0x05B30  Level 8 structure description list (149 structures)
|-
0x05D84  Level 8 block description list (254 blocks)
|3186 || Bg palette
0x0617C  Level 8 map data
|-
0x0657C  Level 8 combo attribute list
|3196 || Combos (count = 0x82)
0x06601  Level 8 scroll data
|-
</pre>
|339E || Structures (count = 0x9F)
|-
|361A || Blocks (count = 0xB8)
|-
|38FA || Map
|-
|3CFA || Combo attributes (count = 0x82)
|-
|3D7C || Scroll map
|}


<pre style="background-color: #A0E0FF; padding: 4px 16px">
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
</pre>


==End of Bank==
<pre style="background-color: #A0E0FF; padding: 4px 16px">
{| border="1" cellpadding="1"
0x06EE9  Level 11 data pointer table
!Offset !! Description
0x06EF5  Level 11 background palette
|-
0x06F05  Level 11 combo description list (90 combos)
|3D8C || Unknown. Zero-ing out 0x3D8C to 0x3FFF does not appear to affect the game.
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
</pre>


|4000 || BANK: Bank 1
<pre style="padding: 4px 16px">
|-
0x0782B  [2005 bytes of unused space]
|}
</pre>
 
===Bank 2===
 
<pre style="background-color: #A0E0FF; padding: 4px 16px">
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
</pre>
 
<pre style="padding: 4px 16px">
0x08018  [10 bytes of unused space]
</pre>
 
<pre style="background-color: #A0E0FF; padding: 4px 16px">
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
</pre>
 
<pre style="background-color: #A0E0FF; padding: 4px 16px">
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
</pre>
 
<pre style="background-color: #A0E0FF; padding: 4px 16px">
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
</pre>
 
<pre style="background-color: #A0E0FF; padding: 4px 16px">
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
</pre>
 
<pre style="background-color: #A0E0FF; padding: 4px 16px">
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
</pre>
 
<pre style="background-color: #A0E0FF; padding: 4px 16px">
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
</pre>
 
<pre style="padding: 4px 16px">
0x0BA63  [1437 bytes of unused space]
</pre>
 
(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:'''<br />(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

Revision as of 17:42, 31 August 2014

Chip tiny.png 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. For example, 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.

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