Blaster Master (USA)
Blaster Master (USA) is on a MMC1 board with 131,072 bytes of program. A crawl of 400 steps from power-on kept 48 paths that found new code. Played back over 39,548 frames, they executed 9,058 bytes of it, 7 percent.
What the rules named
- The poll: 2
- The wait for the frame: 3
- The bank switch: 6
- The picture writer: 1
- The palette writers: 1
- The sprite writers: 6
- The scroll writer: 1
- The sound driver: 1
The 194 routines the runs entered
Every place the game's code was entered, by a call, an interrupt or a jump through a table. The ones a rule named come first, with what the rule saw.
| at | entered by | times | what it is, and the evidence |
|---|---|---|---|
| $E63C (bank 7) | a call | 185,281 | The bank switch: writes 926,405, in the blank 5,606, while drawing 920,799 |
| $835C (bank 5) | a call | 109,728 | The sound driver: frames it ran in 27,377, writes 44,702 |
| $E914 (bank 7) | a call | 56,296 | The poll: port $4016, reads a frame 16, strobes a frame 4 The poll: port $4017, reads a frame 16, strobes a frame 4 |
| $EC73 (bank 7) | a call | 35,456 | The sprite writers: frames it ran in 12,654, writes to the sprite page 1,288,048 |
| $EB98 (bank 7) | a call | 28,705 | The palette writers: frames it ran in 28,751, writes 899,296 The picture writer: frames it ran in 28,751, writes 899,296, in the blank 899,296, while drawing 0 |
| $E650 (bank 7) | a call | 28,195 | The bank switch: writes 140,975, in the blank 140,975, while drawing 0 |
| $E664 (bank 7) | a call | 28,195 | The bank switch: writes 140,975, in the blank 140,975, while drawing 0 |
| $E6BF (bank 7) | a call | 28,195 | The scroll writer: frames it ran in 28,195, writes in the blank 56,390 |
| $EC61 (bank 7) | a call | 28,195 | The sprite writers: frames it ran in 28,297, writes to the sprite page 1,803,338 |
| $F668 (bank 7) | a call | 10,393 | The sprite writers: frames it ran in 10,393, writes to the sprite page 389,176 |
| $C7D8 (bank 7) | a call | 3,257 | The sprite writers: frames it ran in 3,257, writes to the sprite page 104,224 |
| $F88C (bank 7) | a call | 113 | The sprite writers: frames it ran in 113, writes to the sprite page 3,160 |
| $E678 (bank 7) | a call | 48 | The bank switch: writes 240, in the blank 240, while drawing 0 |
| $E68C (bank 7) | a call | 48 | The bank switch: writes 48, in the blank 48, while drawing 0 |
| $FFF4 (bank 7) | power-on | 48 | The bank switch: writes 96, in the blank 96, while drawing 0 The sprite writers: frames it ran in 3,653, writes to the sprite page 12,288 |
| $BDF6 (bank 5) | a call | 239,135 | |
| $808C (bank 5) | a call | 229,264 | |
| $F0BC (bank 7) | a call | 112,588 | |
| $82CE (bank 5) | a call | 109,728 | |
| $E9A2 (bank 7) | a call | 105,472 | |
| $E61B (bank 7) | a call | 102,763 | |
| $E996 (bank 7) | a call | 53,443 | |
| $DC47 (bank 7) | a call | 43,316 | |
| $EA3A (bank 7) | a call | 41,830 | |
| $DCDD (bank 7) | a call | 41,043 | |
| $F1CA (bank 7) | a call | 29,417 | |
| $EB7E (bank 7) | each frame (NMI) | 28,705 | |
| $BE23 (bank 5) | a call | 28,658 | |
| $DEEB (bank 7) | a call | 28,658 | |
| $E895 (bank 7) | a call | 28,206 | |
| $E697 (bank 7) | a call | 28,195 | |
| $E936 (bank 7) | a call | 28,195 | |
| $E287 (bank 7) | a call | 28,148 | |
| $E2C1 (bank 7) | a call | 28,148 | |
| $E8A9 (bank 7) | a call | 28,148 | |
| $F029 (bank 7) | a call | 24,857 | |
| $EB51 (bank 7) | a call | 20,230 | |
| $D9F5 (bank 7) | a call | 19,889 | |
| $F011 (bank 7) | a call | 18,251 | |
| $EF2B (bank 7) | a call | 17,309 | |
| $EFD7 (bank 7) | a call | 17,309 | |
| $C928 (bank 7) | a call | 16,908 | |
| $C8DF (bank 7) | a call | 16,878 | |
| $C9A4 (bank 7) | a call | 16,830 | |
| $ECB4 (bank 7) | a call | 13,140 | |
| $8127 (bank 6) | a table | 11,339 | |
| $D9D3 (bank 7) | a call | 11,188 | |
| $DC51 (bank 7) | a call | 10,478 | |
| $CDD0 (bank 7) | a call | 9,218 | |
| $D2AB (bank 7) | a call | 7,783 | |
| $D1A4 (bank 7) | a call | 6,636 | |
| $CD0A (bank 7) | a call | 6,556 | |
| $D9AF (bank 7) | a call | 6,240 | |
| $F19B (bank 7) | a call | 4,844 | |
| $EA3C (bank 7) | a call | 4,526 | |
| $D798 (bank 7) | a call | 4,502 | |
| $D7A0 (bank 7) | a call | 4,469 | |
| $EB14 (bank 7) | a call | 4,064 | |
| $D2FE (bank 7) | a call | 3,649 | |
| $D2DE (bank 7) | a call | 3,325 | |
| $D18D (bank 7) | a call | 3,318 | |
| $CC6D (bank 7) | a call | 3,278 | |
| $D1AD (bank 7) | a call | 3,278 | |
| $C642 (bank 7) | a call | 3,257 | |
| $C8AE (bank 7) | a call | 3,257 | |
| $C971 (bank 7) | a call | 3,257 | |
| $CA4B (bank 7) | a call | 3,257 | |
| $D883 (bank 7) | a call | 3,257 | |
| $CBDF (bank 7) | a call | 3,238 | |
| $D256 (bank 7) | a call | 3,238 | |
| $E974 (bank 7) | a call | 2,913 | |
| $CCF9 (bank 7) | a call | 2,903 | |
| $D37A (bank 7) | a call | 2,864 | |
| $D3A3 (bank 7) | a call | 2,864 | |
| $D3DE (bank 7) | a call | 2,864 | |
| $D3F8 (bank 7) | a call | 2,864 | |
| $D40B (bank 7) | a call | 2,864 | |
| $D394 (bank 7) | a call | 2,859 | |
| $E74D (bank 7) | a call | 2,568 | |
| $F1BC (bank 7) | a call | 2,457 | |
| $E986 (bank 7) | a call | 2,444 | |
| $E775 (bank 7) | a call | 2,373 | |
| $894E (bank 6) | a call | 1,894 | |
| $96A2 (bank 6) | a call | 1,808 | |
| $CCEF (bank 7) | a call | 1,755 | |
| $8E32 (bank 6) | a call | 1,547 | |
| $92DE (bank 6) | a table | 1,547 | |
| $96C2 (bank 6) | a call | 1,547 | |
| $CF07 (bank 7) | a call | 1,547 | |
| $D21D (bank 7) | a call | 1,547 | |
| $9641 (bank 6) | a call | 1,528 | |
| $96D5 (bank 6) | a call | 1,528 | |
| $96EB (bank 6) | a call | 1,528 | |
| $CCE8 (bank 7) | a call | 1,523 | |
| $950D (bank 6) | a call | 1,363 | |
| $85E2 (bank 6) | a call | 1,344 | |
| $815F (bank 6) | a table | 1,317 | |
| $880B (bank 6) | a call | 1,317 | |
| $D975 (bank 7) | a call | 1,248 | |
| $D98C (bank 7) | a call | 1,248 | |
| $DA15 (bank 7) | a call | 1,204 | |
| $D95E (bank 7) | a call | 1,196 | |
| $DC2D (bank 7) | a call | 1,165 | |
| $DB98 (bank 7) | a call | 1,157 | |
| $8124 (bank 6) | a table | 792 | |
| $978B (bank 6) | a table | 785 | |
| $D2DB (bank 7) | a call | 785 | |
| $8624 (bank 6) | a call | 776 | |
| $DCB2 (bank 7) | a call | 704 | |
| $D2B1 (bank 7) | a call | 675 | |
| $888C (bank 6) | a call | 645 | |
| $E6FA (bank 7) | a call | 491 | |
| $8853 (bank 6) | a table | 461 | |
| $CCFF (bank 7) | a call | 375 | |
| $92DB (bank 6) | a table | 366 | |
| $DCD4 (bank 7) | a call | 352 | |
| $ED12 (bank 7) | a call | 339 | |
| $E6F0 (bank 7) | a call | 286 | |
| $EB71 (bank 7) | a call | 240 | |
| $BFE8 (bank 5) | a call | 209 | |
| $F192 (bank 7) | a call | 200 | |
| $EA03 (bank 7) | a call | 183 | |
| $CE0F (bank 7) | a call | 182 | |
| $E93F (bank 7) | a call | 182 | |
| $DECC (bank 7) | a call | 175 | |
| $BE17 (bank 5) | a call | 142 | |
| $BFE5 (bank 5) | a call | 142 | |
| $DEC2 (bank 7) | a call | 142 | |
| $DF05 (bank 7) | a call | 142 | |
| $DF0A (bank 7) | a call | 142 | |
| $CE27 (bank 7) | a call | 126 | |
| $9BAD (bank 6) | a table | 116 | |
| $E704 (bank 7) | a call | 104 | |
| $E949 (bank 7) | a call | 103 | |
| $E953 (bank 7) | a call | 103 | |
| $CE3C (bank 7) | a call | 85 | |
| $D2B9 (bank 7) | a call | 80 | |
| $D7B6 (bank 7) | a call | 58 | |
| $E87C (bank 7) | a call | 54 | |
| $D7C0 (bank 7) | a call | 53 | |
| $D7CF (bank 7) | a call | 53 | |
| $F19F (bank 7) | a call | 53 | |
| $D908 (bank 7) | a call | 52 | |
| $CE2E (bank 7) | a call | 48 | |
| $E9A6 (bank 7) | a call | 48 | |
| $F45D (bank 7) | a call | 48 | |
| $F547 (bank 7) | a call | 48 | |
| $F58F (bank 7) | a call | 48 | |
| $F9CA (bank 7) | a call | 48 | |
| $CDBA (bank 7) | a call | 46 | |
| $E9CF (bank 7) | a call | 46 | |
| $F5D9 (bank 7) | a call | 46 | |
| $F67C (bank 7) | a call | 46 | |
| $DAC4 (bank 7) | a call | 44 | |
| $F1A3 (bank 7) | a call | 44 | |
| $C5B2 (bank 7) | a call | 40 | |
| $C659 (bank 7) | a call | 40 | |
| $C6EF (bank 7) | a call | 40 | |
| $CA14 (bank 7) | a call | 40 | |
| $CC35 (bank 7) | a call | 40 | |
| $CE82 (bank 7) | a call | 40 | |
| $DCFC (bank 7) | a call | 40 | |
| $E692 (bank 7) | a call | 40 | |
| $E823 (bank 7) | a call | 40 | |
| $F7D1 (bank 7) | a call | 40 | |
| $C772 (bank 7) | a call | 39 | |
| $C9D6 (bank 7) | a call | 39 | |
| $CBA9 (bank 7) | a call | 39 | |
| $D7E3 (bank 7) | a call | 39 | |
| $E243 (bank 7) | a call | 39 | |
| $D790 (bank 7) | a call | 33 | |
| $815C (bank 6) | a table | 27 | |
| $E862 (bank 7) | a call | 27 | |
| $EAE9 (bank 7) | a call | 27 | |
| $9707 (bank 6) | a call | 25 | |
| $9770 (bank 6) | a table | 25 | |
| $D283 (bank 7) | a call | 20 | |
| $88E9 (bank 6) | a call | 19 | |
| $882D (bank 6) | a table | 16 | |
| $9B81 (bank 6) | a call | 12 | |
| $9B98 (bank 6) | a table | 12 | |
| $8850 (bank 6) | a table | 9 | |
| $9788 (bank 6) | a table | 9 | |
| $9BAA (bank 6) | a table | 9 | |
| $D1EF (bank 7) | a call | 9 | |
| $E6E9 (bank 7) | a call | 9 | |
| $E9B8 (bank 7) | a call | 9 | |
| $F833 (bank 7) | a call | 9 | |
| $F90B (bank 7) | a call | 9 | |
| $F927 (bank 7) | a call | 9 | |
| $F9A5 (bank 7) | a call | 9 | |
| $D238 (bank 7) | a call | 8 | |
| $D246 (bank 7) | a call | 1 | |
| $D82C (bank 7) | a call | 1 |
Where it waits
Loops a rule named that sit inside a routine and are not themselves a place the code is entered.
| at | what it is, and the evidence |
|---|---|
| $E93A (bank 7) | The wait for the frame: waits on the byte at $0012, times entered 28,183, turns 94,159,591, writes of it under the frame interrupt 233,721, frames in all 29,048 |
| $F647 (bank 7) | The wait for the frame: waits on the byte at $00E0, times entered 41, turns 6,233, calls on each turn 1, writes of it under the frame interrupt 164, frames in all 29,048 |
| $F872 (bank 7) | The wait for the frame: waits on the byte at $00F3, times entered 4, turns 112, calls on each turn 2, writes of it under the frame interrupt 28,148, frames in all 29,048 |
The memory its routines share
649 bytes of memory were written by one routine and read by another, and 66 places were reached through an index, which is what a table or a set of object slots in memory looks like.
Reaches through an index: those that hold positions, then the longest
| from | bytes reached | instructions | positions it holds |
|---|---|---|---|
| $0300 | 256 | 16 | |
| $0500 | 256 | 16 | |
| $0700 | 256 | 14 | |
| $0400 | 256 | 13 | |
| $0000 | 256 | 8 | |
| $0600 | 256 | 7 | |
| $0200 | 256 | 4 | |
| $0401 | 155 | 3 | |
| $0402 | 155 | 3 | |
| $0403 | 155 | 3 | |
| $0404 | 155 | 3 | |
| $0405 | 155 | 3 |
The 24 busiest shared bytes
| byte | reads and writes | routines writing | routines reading |
|---|---|---|---|
| $0012 | 94,685,517 | 6 | 6 |
| $007A | 2,802,989 | 6 | 6 |
| $007B | 2,295,436 | 6 | 6 |
| $00F7 | 1,667,222 | 2 | 6 |
| $0044 | 1,585,018 | 6 | 6 |
| $00F8 | 1,491,762 | 2 | 2 |
| $003F | 1,105,526 | 6 | 6 |
| $003E | 1,078,186 | 6 | 6 |
| $0058 | 1,053,725 | 3 | 3 |
| $0000 | 843,785 | 6 | 6 |
| $0045 | 555,147 | 6 | 6 |
| $00DB | 284,739 | 6 | 6 |
| $00F5 | 282,084 | 2 | 3 |
| $0057 | 248,085 | 3 | 6 |
| $00FF | 242,513 | 6 | 6 |
| $00E9 | 239,392 | 2 | 3 |
| $0056 | 215,582 | 4 | 5 |
| $0019 | 214,557 | 6 | 6 |
| $0032 | 210,187 | 4 | 5 |
| $000A | 191,644 | 5 | 6 |
| $00E4 | 182,766 | 3 | 3 |
| $000D | 171,685 | 6 | 6 |
| $0001 | 163,197 | 6 | 6 |
| $0034 | 151,723 | 2 | 6 |
This page shows none of the game's bytes. The listing these figures were read from stays with the cartridge.