Metroid (USA)
Metroid (USA) is on a MMC1 board with 131,072 bytes of program. A crawl of 6,400 steps from power-on kept 103 paths that found new code. Played back over 253,223 frames, they executed 15,464 bytes of it, 12 percent.
What the rules named
- The poll: 2
- The wait for the frame: 2
- The jump engine: 2
- The bank switch: 11
- The picture writer: 1
- The palette writers: 2
- The sprite writers: 24
- The scroll writer: 1
- The split: 1
- The sound driver: 1
- The random byte: 2
- Where two things are compared: 3
The 459 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, and their names in the listing say what they are: a poll, an engine, a drain.
| at | its name in the listing | entered by | times | what it is, and the evidence |
|---|---|---|---|---|
| $C27C (bank 7) | b7_engine_C27C | a call | 288,568 | The jump engine: tables 12, jumps through them 288,568 |
| $C1E0 (bank 7) | b7_drain_C1E0 | a call | 82,808 | The palette writers: frames it ran in 82,911, writes 34,072 The picture writer: frames it ran in 82,911, writes 106,172, in the blank 41,900, while drawing 64,272 |
| $C215 (bank 7) | b7_poll_C215 | a call | 82,808 | The poll: port $4017, reads a frame 8, strobes a frame 2 |
| $C21F (bank 7) | b7_poll_C21F | a call | 82,808 | The poll: port $4016, reads a frame 8, strobes a frame 2 |
| $C29A (bank 7) | b7_scroll_C29A | a call | 82,808 | The scroll writer: frames it ran in 82,736, writes in the blank 165,266 |
| $C4D9 (bank 7) | b7_bank_C4D9 | a call | 82,808 | The bank switch: writes 414,040, in the blank 413,165, while drawing 875 |
| $BA41 (bank 1) | b1_sound_BA41 | a call | 80,964 | The sound driver: frames it ran in 40,411, writes 54,027 |
| $DCC3 (bank 7) | b7_random_DCC3 | a call | 51,038 | The random byte: frames it ran in 24,564, bytes $006B, rotates 1, exclusive-ors 1 |
| $C1A3 (bank 7) | b7_sprites_C1A3 | a call | 30,106 | The sprite writers: frames it ran in 30,106, writes to the sprite page 7,708,176 |
| $C9D7 (bank 7) | b7_dispatch_C9D7 | a table | 29,192 | The sprite writers: frames it ran in 29,192, writes to the sprite page 484,800 |
| $E173 (bank 7) | b7_sprites_E173 | a call | 28,844 | The sprite writers: frames it ran in 14,422, writes to the sprite page 28,844 |
| $DD8B (bank 7) | b7_sprites_DD8B | a call | 26,617 | The sprite writers: frames it ran in 14,414, writes to the sprite page 627,222 |
| $8024 (bank 1) | b1_engine_8024 | a call | 25,892 | The jump engine: tables 1, jumps through them 25,892 |
| $C1BC (bank 7) | b7_sprites_C1BC | a call | 19,036 | The sprite writers: frames it ran in 19,054, writes to the sprite page 1,827,456 |
| $CB29 (bank 7) | b7_sprites_CB29 | a call | 14,422 | The sprite writers: frames it ran in 14,506, writes to the sprite page 564,261 |
| $E0C1 (bank 7) | b7_sprites_E0C1 | a call | 14,422 | The sprite writers: frames it ran in 14,424, writes to the sprite page 605,724 |
| $90D7 (bank 0) | b0_dispatch_90D7 | a table | 14,313 | The sprite writers: frames it ran in 14,313, writes to the sprite page 56,968 |
| $F6B9 (bank 7) | b7_compare_F6B9 | a call | 12,945 | Where two things are compared: instructions 2, pairs of bytes 4, bytes in all 6, times compared 834, X positions at $030E,$0421, Y positions at $030D,$0420,$0440,$0450 |
| $F75B (bank 7) | b7_compare_F75B | a call | 12,945 | Where two things are compared: instructions 1, pairs of bytes 1, bytes in all 2, times compared 345, X positions at $030E,$0421 |
| $CD6D (bank 7) | b7_random_CD6D | a call | 12,117 | The random byte: frames it ran in 12,145, bytes $006B, rotates 2, exclusive-ors 1 The sprite writers: frames it ran in 12,145, writes to the sprite page 549,984 |
| $F140 (bank 7) | b7_compare_F140 | a call | 11,600 | Where two things are compared: instructions 2, pairs of bytes 11, bytes in all 11, times compared 12,592, X positions at $030E,$03D9,$03E9,$0421,$0441,$0451, Y positions at $030D,$03D8,$0420,$0440,$0450 |
| $8963 (bank 0) | b0_sprites_8963 | a call | 2,738 | The sprite writers: frames it ran in 558, writes to the sprite page 7,272 |
| $C30C (bank 7) | b7_palette_C30C | a call | 2,366 | The palette writers: frames it ran in 2,438, writes 7,074 |
| $87D9 (bank 0) | b0_sprites_87D9 | a call | 1,920 | The sprite writers: frames it ran in 960, writes to the sprite page 7,488 |
| $CCC2 (bank 7) | b7_dispatch_CCC2 | a table | 1,523 | The sprite writers: frames it ran in 1,538, writes to the sprite page 69,426 |
| $C4EF (bank 7) | b7_bank_C4EF | a call | 1,257 | The bank switch: writes 6,285, in the blank 1,105, while drawing 5,180 |
| $C7AB (bank 7) | b7_bank_C7AB | a call | 996 | The bank switch: writes 4,980, in the blank 70, while drawing 4,910 |
| $87CF (bank 0) | b0_sprites_87CF | a call | 960 | The sprite writers: frames it ran in 960, writes to the sprite page 3,648 |
| $87D6 (bank 0) | b0_sprites_87D6 | a call | 960 | The sprite writers: frames it ran in 960, writes to the sprite page 3,792 |
| $D002 (bank 7) | b7_dispatch_D002 | a table | 782 | The sprite writers: frames it ran in 786, writes to the sprite page 35,340 |
| $8976 (bank 0) | b0_sprites_8976 | a call | 646 | The sprite writers: frames it ran in 646, writes to the sprite page 3,072 |
| $9147 (bank 0) | b0_dispatch_9147 | a table | 567 | The sprite writers: frames it ran in 571, writes to the sprite page 2,112 |
| $88FE (bank 0) | b0_sprites_88FE | a call | 558 | The sprite writers: frames it ran in 558, writes to the sprite page 2,232 |
| $DE47 (bank 7) | b7_sprites_DE47 | a call | 499 | The sprite writers: frames it ran in 495, writes to the sprite page 2,910 |
| $DE4A (bank 7) | b7_sprites_DE4A | a call | 392 | The sprite writers: frames it ran in 368, writes to the sprite page 192 |
| $C4E8 (bank 7) | b7_bank_C4E8 | a call | 175 | The bank switch: writes 875, in the blank 0, while drawing 875 |
| $C4B2 (bank 7) | b7_bank_C4B2 | a call | 103 | The bank switch: writes 515, in the blank 0, while drawing 515 |
| $C4FA (bank 7) | b7_bank_C4FA | a call | 103 | The bank switch: writes 515, in the blank 515, while drawing 0 |
| $C5D7 (bank 7) | b7_bank_C5D7 | a call | 103 | The bank switch: writes 515, in the blank 515, while drawing 0 |
| $FFB0 (bank 7) | b7_irq | an interrupt (IRQ) | 103 | The bank switch: writes 1,442, in the blank 1,442, while drawing 0 The sprite writers: frames it ran in 83,203, writes to the sprite page 26,368 |
| $FAB4 (bank 7) | b7_sprites_FAB4 | a call | 74 | The sprite writers: frames it ran in 74, writes to the sprite page 2,088 |
| $C604 (bank 7) | b7_bank_C604 | a call | 72 | The bank switch: writes 360, in the blank 0, while drawing 360 |
| $8071 (bank 0) | b0_dispatch_8071 | a table | 18 | The sprite writers: frames it ran in 36, writes to the sprite page 2,880 |
| $C20E (bank 7) | b7_split_C20E | a call | 18 | The split: frames it ran in 36, scroll writes while drawing 36, status reads while drawing 666 |
| $C6D6 (bank 7) | b7_bank_C6D6 | a call | 13 | The bank switch: writes 65, in the blank 0, while drawing 65 |
| $98AE (bank 0) | b0_sprites_98AE | a call | 8 | The sprite writers: frames it ran in 8, writes to the sprite page 1,280 |
| $C5DC (bank 7) | b7_bank_C5DC | a call | 1 | The bank switch: writes 5, in the blank 0, while drawing 5 |
| $E193 (bank 7) | a call | 564,380 | ||
| $F1F4 (bank 7) | a call | 530,826 | ||
| $B4BD (bank 1) | a call | 441,989 | ||
| $B4BD (bank 0) | a call | 345,582 | ||
| $DF6B (bank 7) | a call | 295,327 | ||
| $DFA3 (bank 7) | a call | 295,327 | ||
| $F1EE (bank 7) | a call | 184,732 | ||
| $FE27 (bank 7) | a call | 173,064 | ||
| $C45C (bank 7) | a table | 172,221 | ||
| $C2BF (bank 7) | a call | 158,392 | ||
| $BC53 (bank 1) | a call | 132,865 | ||
| $B4EE (bank 1) | a table | 130,466 | ||
| $BC53 (bank 0) | a call | 103,707 | ||
| $B4EE (bank 0) | a table | 103,516 | ||
| $FA18 (bank 7) | a call | 86,542 | ||
| $C0D9 (bank 7) | each frame (NMI) | 83,335 | ||
| $C97E (bank 7) | a call | 83,234 | ||
| $C2CA (bank 7) | a call | 82,808 | ||
| $C44D (bank 7) | a call | 82,808 | ||
| $C4DE (bank 7) | a call | 82,257 | ||
| $C000 (bank 7) | a call | 82,154 | ||
| $C114 (bank 7) | a call | 82,154 | ||
| $C266 (bank 7) | a call | 82,154 | ||
| $F3AA (bank 7) | a call | 79,981 | ||
| $F351 (bank 7) | a call | 72,110 | ||
| $F949 (bank 7) | a call | 72,110 | ||
| $DFDF (bank 7) | a call | 57,734 | ||
| $8B87 (bank 1) | a call | 57,688 | ||
| $FE05 (bank 7) | a call | 57,688 | ||
| $BA08 (bank 1) | a call | 55,008 | ||
| $DE3D (bank 7) | a call | 51,038 | ||
| $B3B4 (bank 1) | a call | 48,734 | ||
| $BA08 (bank 0) | a call | 48,586 | ||
| $BA41 (bank 0) | a call | 48,586 | ||
| $B31B (bank 1) | a call | 44,356 | ||
| $B34B (bank 1) | a call | 44,348 | ||
| $BC64 (bank 1) | a call | 44,289 | ||
| $B33D (bank 1) | a call | 44,286 | ||
| $BC36 (bank 1) | a call | 44,286 | ||
| $BC3D (bank 1) | a table | 44,286 | ||
| $BC4B (bank 1) | a table | 44,220 | ||
| $B35C (bank 1) | a table | 44,166 | ||
| $B322 (bank 1) | a table | 44,162 | ||
| $B344 (bank 1) | a table | 44,116 | ||
| $B329 (bank 1) | a call | 44,050 | ||
| $B364 (bank 1) | a table | 44,050 | ||
| $B330 (bank 1) | a table | 43,933 | ||
| $FAFF (bank 7) | a call | 43,266 | ||
| $FBEC (bank 7) | a call | 43,266 | ||
| $C36B (bank 7) | a call | 42,169 | ||
| $CE84 (bank 7) | a call | 41,468 | ||
| $B9F3 (bank 1) | a call | 40,549 | ||
| $BA37 (bank 1) | a call | 40,482 | ||
| $C2A8 (bank 7) | a call | 38,469 | ||
| $9AE2 (bank 1) | a call | 37,500 | ||
| $95C0 (bank 1) | a call | 35,516 | ||
| $D651 (bank 7) | a call | 35,516 | ||
| $E96A (bank 7) | a call | 35,515 | ||
| $B3B4 (bank 0) | a call | 34,599 | ||
| $B31B (bank 0) | a call | 34,598 | ||
| $B322 (bank 0) | a table | 34,598 | ||
| $B34B (bank 0) | a call | 34,586 | ||
| $B33D (bank 0) | a call | 34,569 | ||
| $BC36 (bank 0) | a call | 34,569 | ||
| $BC3D (bank 0) | a table | 34,569 | ||
| $BC4B (bank 0) | a table | 34,569 | ||
| $BC64 (bank 0) | a call | 34,569 | ||
| $B35C (bank 0) | a table | 34,549 | ||
| $B344 (bank 0) | a table | 34,540 | ||
| $B329 (bank 0) | a call | 34,502 | ||
| $B330 (bank 0) | a table | 34,502 | ||
| $B364 (bank 0) | a table | 34,502 | ||
| $9A07 (bank 0) | a call | 34,456 | ||
| $F152 (bank 7) | a call | 33,204 | ||
| $F37F (bank 7) | a call | 32,443 | ||
| $D4CB (bank 7) | a call | 28,844 | ||
| $E1F1 (bank 7) | a call | 28,844 | ||
| $F186 (bank 7) | a call | 25,982 | ||
| $E8CE (bank 7) | a call | 25,955 | ||
| $E90F (bank 7) | a call | 25,955 | ||
| $E95F (bank 7) | a call | 25,955 | ||
| $F536 (bank 7) | a call | 25,892 | ||
| $F3E6 (bank 7) | a table | 25,418 | ||
| $8009 (bank 1) | a call | 25,186 | ||
| $9A4C (bank 1) | a table | 25,186 | ||
| $DC8F (bank 7) | a call | 25,135 | ||
| $800C (bank 1) | a call | 25,118 | ||
| $B9F3 (bank 0) | a call | 24,293 | ||
| $BA37 (bank 0) | a call | 24,293 | ||
| $C2C5 (bank 7) | a call | 21,042 | ||
| $E792 (bank 7) | a call | 21,012 | ||
| $9ADA (bank 1) | a call | 19,054 | ||
| $9AA8 (bank 1) | a call | 18,750 | ||
| $9AC6 (bank 1) | a call | 18,750 | ||
| $844B (bank 1) | a call | 15,546 | ||
| $F172 (bank 7) | a call | 14,564 | ||
| $84A7 (bank 1) | a call | 14,515 | ||
| $CD9C (bank 7) | a call | 14,477 | ||
| $8B13 (bank 1) | a call | 14,422 | ||
| $8B79 (bank 1) | a call | 14,422 | ||
| $95C3 (bank 1) | a call | 14,422 | ||
| $C92B (bank 7) | a table | 14,422 | ||
| $CC0D (bank 7) | a call | 14,422 | ||
| $CC1A (bank 7) | a call | 14,422 | ||
| $CD92 (bank 7) | a call | 14,422 | ||
| $CDFA (bank 7) | a call | 14,422 | ||
| $D4BF (bank 7) | a call | 14,422 | ||
| $D7B3 (bank 7) | a call | 14,422 | ||
| $D9D4 (bank 7) | a call | 14,422 | ||
| $DB17 (bank 7) | a call | 14,422 | ||
| $DB37 (bank 7) | a call | 14,422 | ||
| $DB42 (bank 7) | a call | 14,422 | ||
| $E269 (bank 7) | a call | 14,422 | ||
| $F034 (bank 7) | a call | 14,422 | ||
| $F345 (bank 7) | a call | 14,422 | ||
| $F93B (bank 7) | a call | 14,422 | ||
| $FA9D (bank 7) | a call | 14,422 | ||
| $FAF2 (bank 7) | a call | 14,422 | ||
| $FBDD (bank 7) | a call | 14,422 | ||
| $FC65 (bank 7) | a call | 14,422 | ||
| $FDE3 (bank 7) | a call | 14,422 | ||
| $FE1B (bank 7) | a call | 14,422 | ||
| $F744 (bank 7) | a call | 13,781 | ||
| $F266 (bank 7) | a call | 13,576 | ||
| $F74B (bank 7) | a call | 13,351 | ||
| $F51E (bank 7) | a call | 12,672 | ||
| $E449 (bank 7) | a call | 12,480 | ||
| $E8F1 (bank 7) | a call | 12,390 | ||
| $F1E0 (bank 7) | a call | 11,742 | ||
| $F1BF (bank 7) | a call | 11,600 | ||
| $EF9E (bank 7) | a call | 11,242 | ||
| $F282 (bank 7) | a call | 10,552 | ||
| $CF6B (bank 7) | a call | 10,144 | ||
| $E98E (bank 7) | a call | 9,558 | ||
| $D976 (bank 7) | a call | 7,955 | ||
| $C318 (bank 7) | a call | 7,098 | ||
| $E25D (bank 7) | a call | 6,285 | ||
| $E37A (bank 7) | a call | 6,285 | ||
| $E3E5 (bank 7) | a call | 6,285 | ||
| $E8BE (bank 7) | a call | 5,469 | ||
| $9871 (bank 0) | a call | 4,696 | ||
| $8142 (bank 0) | a table | 4,421 | ||
| $84FE (bank 1) | a call | 4,408 | ||
| $C9B1 (bank 7) | a table | 4,380 | ||
| $E77B (bank 7) | a call | 4,308 | ||
| $E365 (bank 7) | a call | 3,917 | ||
| $E7AD (bank 7) | a call | 3,915 | ||
| $814D (bank 0) | a table | 3,883 | ||
| $812C (bank 0) | a table | 3,876 | ||
| $83F5 (bank 1) | a call | 3,847 | ||
| $CC36 (bank 7) | a table | 3,797 | ||
| $E668 (bank 7) | a call | 3,333 | ||
| $EA2B (bank 7) | a call | 3,192 | ||
| $C376 (bank 7) | a call | 2,955 | ||
| $C3C6 (bank 7) | a call | 2,793 | ||
| $E54A (bank 7) | a call | 2,760 | ||
| $E6D2 (bank 7) | a call | 2,550 | ||
| $E457 (bank 7) | a call | 2,479 | ||
| $8263 (bank 0) | a table | 2,438 | ||
| $E770 (bank 7) | a call | 2,390 | ||
| $981E (bank 0) | a call | 2,376 | ||
| $C3D4 (bank 7) | a call | 2,300 | ||
| $CF2E (bank 7) | a call | 2,284 | ||
| $CF4E (bank 7) | a call | 2,071 | ||
| $E8FC (bank 7) | a call | 1,916 | ||
| $B4A9 (bank 1) | a call | 1,861 | ||
| $E4A3 (bank 7) | a call | 1,816 | ||
| $8871 (bank 0) | a call | 1,728 | ||
| $80B0 (bank 1) | a call | 1,487 | ||
| $E519 (bank 7) | a call | 1,416 | ||
| $E038 (bank 7) | a call | 1,386 | ||
| $D09C (bank 7) | a call | 1,367 | ||
| $C2C0 (bank 7) | a call | 1,349 | ||
| $EB85 (bank 7) | a call | 1,338 | ||
| $E1E1 (bank 7) | a call | 1,333 | ||
| $CCB7 (bank 7) | a call | 1,274 | ||
| $8182 (bank 0) | a table | 1,266 | ||
| $8109 (bank 0) | a table | 1,261 | ||
| $C7D5 (bank 7) | a call | 1,185 | ||
| $C2B3 (bank 7) | a call | 1,179 | ||
| $C37E (bank 7) | a call | 1,179 | ||
| $F2CA (bank 7) | a call | 1,048 | ||
| $EAC0 (bank 7) | a call | 1,043 | ||
| $CDBF (bank 7) | a call | 938 | ||
| $EF8C (bank 7) | a call | 924 | ||
| $881A (bank 0) | a call | 912 | ||
| $CF4C (bank 7) | a call | 872 | ||
| $E094 (bank 7) | a call | 848 | ||
| $F7B3 (bank 7) | a call | 836 | ||
| $D79F (bank 7) | a call | 831 | ||
| $CFB7 (bank 7) | a call | 822 | ||
| $8243 (bank 0) | a table | 818 | ||
| $CF81 (bank 7) | a call | 801 | ||
| $D055 (bank 7) | a call | 782 | ||
| $CF5D (bank 7) | a call | 778 | ||
| $99FA (bank 1) | a table | 698 | ||
| $E564 (bank 7) | a call | 664 | ||
| $C434 (bank 7) | a call | 656 | ||
| $B6ED (bank 1) | a table | 641 | ||
| $CF88 (bank 7) | a call | 585 | ||
| $E626 (bank 7) | a call | 584 | ||
| $E88B (bank 7) | a call | 579 | ||
| $80FB (bank 1) | a call | 576 | ||
| $FD8F (bank 7) | a call | 558 | ||
| $EF09 (bank 7) | a call | 523 | ||
| $B493 (bank 1) | a call | 521 | ||
| $B58A (bank 1) | a table | 520 | ||
| $B7E7 (bank 1) | a table | 510 | ||
| $82A3 (bank 0) | a table | 482 | ||
| $8A8C (bank 0) | a call | 478 | ||
| $B4A2 (bank 1) | a call | 474 | ||
| $F3BE (bank 7) | a table | 474 | ||
| $D4EB (bank 7) | a table | 471 | ||
| $D5DA (bank 7) | a call | 471 | ||
| $D5FC (bank 7) | a call | 471 | ||
| $D609 (bank 7) | a call | 471 | ||
| $F483 (bank 7) | a table | 468 | ||
| $8058 (bank 1) | a call | 430 | ||
| $F844 (bank 7) | a call | 426 | ||
| $8163 (bank 0) | a table | 414 | ||
| $C158 (bank 7) | a call | 396 | ||
| $C16D (bank 7) | a call | 396 | ||
| $E7A2 (bank 7) | a call | 366 | ||
| $81F6 (bank 1) | a call | 363 | ||
| $ED7A (bank 7) | a call | 357 | ||
| $F752 (bank 7) | a call | 352 | ||
| $9A8F (bank 1) | a call | 304 | ||
| $F676 (bank 7) | a call | 273 | ||
| $F682 (bank 7) | a call | 273 | ||
| $F7BA (bank 7) | a call | 273 | ||
| $F4EE (bank 7) | a table | 264 | ||
| $EB06 (bank 7) | a table | 263 | ||
| $EB0C (bank 7) | a call | 263 | ||
| $EB7A (bank 7) | a call | 263 | ||
| $81DA (bank 1) | a call | 259 | ||
| $B368 (bank 1) | a call | 247 | ||
| $ED51 (bank 7) | a call | 238 | ||
| $ED8C (bank 7) | a call | 238 | ||
| $E5E2 (bank 7) | a table | 229 | ||
| $E6A7 (bank 7) | a call | 210 | ||
| $822B (bank 1) | a call | 209 | ||
| $8244 (bank 1) | a call | 209 | ||
| $8318 (bank 1) | a call | 209 | ||
| $C2BE (bank 7) | a call | 209 | ||
| $B43E (bank 1) | a call | 208 | ||
| $B40E (bank 1) | a call | 204 | ||
| $B41D (bank 1) | a call | 204 | ||
| $C439 (bank 7) | a call | 190 | ||
| $B370 (bank 1) | a call | 184 | ||
| $B598 (bank 1) | a table | 184 | ||
| $CB96 (bank 7) | a call | 184 | ||
| $EB28 (bank 7) | a call | 184 | ||
| $EB4D (bank 7) | a call | 184 | ||
| $FB7B (bank 7) | a call | 184 | ||
| $C43D (bank 7) | a call | 176 | ||
| $C45D (bank 7) | a call | 176 | ||
| $816E (bank 1) | a call | 174 | ||
| $CBF3 (bank 7) | a call | 173 | ||
| $B36C (bank 1) | a call | 170 | ||
| $B7D9 (bank 1) | a table | 170 | ||
| $8AA7 (bank 0) | a call | 160 | ||
| $B4A9 (bank 0) | a call | 159 | ||
| $F262 (bank 7) | a call | 156 | ||
| $DC7F (bank 7) | a call | 142 | ||
| $F1A7 (bank 7) | a call | 142 | ||
| $B3FC (bank 1) | a call | 138 | ||
| $B9E4 (bank 1) | a call | 138 | ||
| $BC80 (bank 1) | a table | 138 | ||
| $BF19 (bank 1) | a call | 138 | ||
| $F699 (bank 7) | a call | 137 | ||
| $D198 (bank 7) | a table | 121 | ||
| $E720 (bank 7) | a call | 119 | ||
| $EA05 (bank 7) | a call | 119 | ||
| $EC93 (bank 7) | a call | 119 | ||
| $EC9B (bank 7) | a call | 119 | ||
| $ED5B (bank 7) | a call | 119 | ||
| $ED65 (bank 7) | a call | 119 | ||
| $ED98 (bank 7) | a call | 119 | ||
| $EFF8 (bank 7) | a call | 119 | ||
| $F01C (bank 7) | a call | 119 | ||
| $D147 (bank 7) | a call | 118 | ||
| $B374 (bank 1) | a call | 115 | ||
| $B650 (bank 1) | a table | 114 | ||
| $F277 (bank 7) | a call | 114 | ||
| $8BD5 (bank 1) | a table | 112 | ||
| $EA26 (bank 7) | a table | 111 | ||
| $C41D (bank 7) | a call | 110 | ||
| $EF00 (bank 7) | a call | 109 | ||
| $C3FB (bank 7) | a call | 106 | ||
| $A93E (bank 0) | a call | 103 | ||
| $C531 (bank 7) | a table | 103 | ||
| $8B5F (bank 0) | a call | 102 | ||
| $C487 (bank 7) | a call | 101 | ||
| $909F (bank 0) | a call | 100 | ||
| $9449 (bank 0) | a call | 100 | ||
| $C42C (bank 7) | a call | 100 | ||
| $E880 (bank 7) | a call | 91 | ||
| $F340 (bank 7) | a call | 89 | ||
| $81D1 (bank 0) | a table | 88 | ||
| $90BA (bank 0) | a table | 87 | ||
| $C1D4 (bank 7) | a call | 73 | ||
| $C578 (bank 7) | a call | 73 | ||
| $B7E7 (bank 0) | a table | 72 | ||
| $C552 (bank 7) | a table | 72 | ||
| $C801 (bank 7) | a table | 72 | ||
| $C8B0 (bank 7) | a call | 72 | ||
| $C8BB (bank 7) | a call | 72 | ||
| $C8D1 (bank 7) | a table | 72 | ||
| $CA18 (bank 7) | a call | 72 | ||
| $CBFD (bank 7) | a call | 72 | ||
| $B3F0 (bank 1) | a call | 67 | ||
| $8134 (bank 1) | a call | 66 | ||
| $CB73 (bank 7) | a call | 66 | ||
| $D92C (bank 7) | a call | 66 | ||
| $D0B5 (bank 7) | a table | 57 | ||
| $B74F (bank 1) | a table | 54 | ||
| $F2E8 (bank 7) | a call | 54 | ||
| $CBDE (bank 7) | a call | 53 | ||
| $F338 (bank 7) | a call | 53 | ||
| $B5A5 (bank 1) | a call | 51 | ||
| $B673 (bank 1) | a table | 51 | ||
| $CBB4 (bank 7) | a call | 50 | ||
| $D1F7 (bank 7) | a call | 50 | ||
| $D2EB (bank 7) | a call | 50 | ||
| $D306 (bank 7) | a call | 50 | ||
| $D38E (bank 7) | a call | 50 | ||
| $B716 (bank 1) | a table | 49 | ||
| $B6A1 (bank 0) | a table | 47 | ||
| $D315 (bank 7) | a call | 45 | ||
| $D359 (bank 7) | a call | 45 | ||
| $B87F (bank 0) | a table | 40 | ||
| $D2FA (bank 7) | a call | 40 | ||
| $D1EE (bank 7) | a call | 39 | ||
| $B710 (bank 1) | a table | 35 | ||
| $CBB0 (bank 7) | a call | 35 | ||
| $CC98 (bank 7) | a call | 35 | ||
| $F279 (bank 7) | a call | 35 | ||
| $F332 (bank 7) | a call | 35 | ||
| $B493 (bank 0) | a call | 31 | ||
| $B703 (bank 1) | a table | 31 | ||
| $CBAC (bank 7) | a call | 31 | ||
| $B4A2 (bank 0) | a call | 30 | ||
| $CFC3 (bank 7) | a call | 30 | ||
| $B36C (bank 0) | a call | 29 | ||
| $D5C8 (bank 7) | a table | 28 | ||
| $B7D9 (bank 0) | a table | 24 | ||
| $B6D3 (bank 1) | a table | 22 | ||
| $80F9 (bank 0) | a table | 21 | ||
| $CF55 (bank 7) | a call | 21 | ||
| $B40E (bank 0) | a call | 19 | ||
| $B41D (bank 0) | a call | 19 | ||
| $B43E (bank 0) | a call | 19 | ||
| $80D0 (bank 0) | a table | 18 | ||
| $8FF1 (bank 0) | a call | 18 | ||
| $9001 (bank 0) | a call | 18 | ||
| $9011 (bank 0) | a call | 18 | ||
| $B3FC (bank 0) | a call | 18 | ||
| $B9E4 (bank 0) | a call | 18 | ||
| $BC7A (bank 0) | a table | 18 | ||
| $BF19 (bank 0) | a call | 18 | ||
| $E4F1 (bank 7) | a call | 18 | ||
| $806E (bank 0) | a table | 16 | ||
| $F68D (bank 7) | a call | 16 | ||
| $87AB (bank 0) | a call | 13 | ||
| $911A (bank 0) | a table | 13 | ||
| $940B (bank 0) | a call | 13 | ||
| $E9B7 (bank 7) | a call | 13 | ||
| $E249 (bank 7) | a call | 11 | ||
| $8897 (bank 0) | a call | 10 | ||
| $C2C4 (bank 7) | a call | 10 | ||
| $EDFE (bank 7) | a table | 10 | ||
| $EE3D (bank 7) | a call | 10 | ||
| $EE4A (bank 7) | a call | 10 | ||
| $CF77 (bank 7) | a table | 9 | ||
| $801B (bank 1) | a call | 8 | ||
| $822E (bank 0) | a table | 8 | ||
| $99B8 (bank 1) | a table | 8 | ||
| $DCFC (bank 7) | a call | 8 | ||
| $FA41 (bank 7) | a call | 8 | ||
| $CB92 (bank 7) | a call | 6 | ||
| $D210 (bank 7) | a call | 6 | ||
| $9450 (bank 0) | a call | 5 | ||
| $B878 (bank 0) | a table | 5 | ||
| $D340 (bank 7) | a call | 5 | ||
| $D38A (bank 7) | a call | 5 | ||
| $8068 (bank 0) | a table | 4 | ||
| $8283 (bank 0) | a table | 4 | ||
| $C3DA (bank 7) | a call | 4 | ||
| $8DDE (bank 0) | a call | 3 | ||
| $8E21 (bank 0) | a call | 3 | ||
| $8E4E (bank 0) | a call | 3 | ||
| $8F60 (bank 0) | a call | 3 | ||
| $CDD7 (bank 7) | a call | 3 | ||
| $D5E4 (bank 7) | a call | 3 | ||
| $8B9D (bank 1) | a table | 2 | ||
| $8CFB (bank 1) | a call | 2 | ||
| $B368 (bank 0) | a call | 2 | ||
| $B374 (bank 0) | a call | 2 | ||
| $B695 (bank 0) | a table | 2 | ||
| $B6E7 (bank 1) | a table | 2 | ||
| $CEF9 (bank 7) | a call | 2 | ||
| $CF6E (bank 7) | a call | 2 | ||
| $EB8C (bank 7) | a table | 2 | ||
| $EB92 (bank 7) | a call | 2 | ||
| $8BD4 (bank 0) | a call | 1 | ||
| $8D12 (bank 0) | a call | 1 | ||
| $8D3D (bank 0) | a call | 1 | ||
| $B404 (bank 0) | a call | 1 | ||
| $CB8E (bank 7) | a call | 1 | ||
| $CE92 (bank 7) | a call | 1 | ||
| $CFBE (bank 7) | a table | 1 | ||
| $F311 (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 | its name in the listing | what it is, and the evidence |
|---|---|---|
| $C42F (bank 7) | b7_wait_C42F | The wait for the frame: waits on the byte at $001A, times entered 100, turns 61,193, writes of it under the frame interrupt 83,234, frames in all 84,803 |
| $C442 (bank 7) | b7_wait_C442 | The wait for the frame: waits on the byte at $001A, times entered 556, turns 1,871,573, writes of it under the frame interrupt 83,234, frames in all 84,803 |
The tables it jumps through
A table of addresses the game picks one from. Some sit right after a call to a jump engine; others are anywhere in the cartridge, and we find them by where the address the game jumped through was loaded from. Some games jump by pushing an address and returning to it, and some keep a table as two, the low bytes of its addresses in one place and the high bytes in another; both are found the same way. An entry is counted as far as the runs saw one taken; the true table may be longer. The last column is the byte of memory whose value picked the entry, where we could follow it: the game's mode, or what one of its objects is doing.
| at | reached | entries | taken | chosen by the byte at |
|---|---|---|---|---|
| $802A (bank 0) | after a call | 28 | 21 | $001F |
| $8048 (bank 1) | by a return | 7 | 4 | $044A, $045A |
| $95EB (bank 1) | after a call | 6 | 3 | |
| $C141 (bank 7) | after a call | 9 | 5 | $001E |
| $C51F (bank 7) | through a pointer | 2 | 2 | $0024 |
| $CC22 (bank 7) | after a call | 7 | 4 | $0300 |
| $CC7D (bank 7) | after a call | 5 | 5 | $0300 |
| $D1D7 (bank 7) | after a call | 10 | 5 | $0300 |
| $D4D3 (bank 7) | after a call | 12 | 3 | $03E0, $03F0, $03D0, $03D3 |
| $D7BD (bank 7) | after a call | 1 | 1 | $0049, $00FF, $032C |
| $EA1C (bank 7) | after a call | 5 | 3 | $005A |
| $EAE4 (bank 7) | after a call | 3 | 2 | |
| $EDE2 (bank 7) | after a call | 3 | 2 | |
| $F36E (bank 7) | after a call | 7 | 5 |
The memory its routines share
1,248 bytes of memory were written by one routine and read by another, and 96 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 |
|---|---|---|---|
| $0301 | 225 | 4 | 1 across, 1 down |
| $0309 | 225 | 3 | 1 across |
| $0307 | 161 | 4 | 1 across, 1 down |
| $0402 | 81 | 3 | 2 across, 2 down |
| $0403 | 33 | 3 | 1 across, 1 down |
| $0300 | 255 | 24 | |
| $0200 | 253 | 5 | |
| $030C | 225 | 8 | |
| $030A | 225 | 7 | |
| $030D | 225 | 7 | |
| $030E | 225 | 7 | |
| $0302 | 225 | 4 |
What travels with a position
Arrays that at least two routines step through together with an array of positions, across the same range. That is what a table of the things on the screen looks like in memory: one array for each property, one slot for each thing. We can say which arrays hold positions, which of the others get added into them, which is what a speed does, which pick the way through a jump table, which is what a state or a kind does, and which are only ever counted down, which is what a timer does. What the rest hold is not named yet.
| slots | arrays | routines | positions across | positions down | added into them | choosing a jump | counted down | travelling with them |
|---|---|---|---|---|---|---|---|---|
| 225 | 7 | 11 | $0301 | $0301 | $0302, $0303, $030B, $030C, $030D, $030E | |||
| 161 | 3 | 3 | $0307 | $0307 | $0300 | $0300, $030A | ||
| 225 | 5 | 4 | $0309 | $0300 | $030F | $0300, $0308, $030B, $030F |
The 24 busiest shared bytes
| byte | reads and writes | routines writing | routines reading |
|---|---|---|---|
| $001A | 171,705,342 | 3 | 6 |
| $064D | 21,481,679 | 5 | 6 |
| $0000 | 16,192,651 | 6 | 6 |
| $0001 | 13,818,608 | 6 | 6 |
| $00E4 | 4,725,509 | 2 | 3 |
| $00E5 | 4,725,509 | 2 | 3 |
| $0005 | 2,920,548 | 6 | 6 |
| $00E2 | 2,369,227 | 6 | 6 |
| $00E3 | 2,369,200 | 6 | 6 |
| $0002 | 1,786,958 | 6 | 6 |
| $00E0 | 1,584,491 | 6 | 6 |
| $00E1 | 1,584,491 | 6 | 6 |
| $004B | 1,581,864 | 6 | 6 |
| $0004 | 1,117,172 | 6 | 6 |
| $0003 | 1,030,345 | 6 | 6 |
| $006B | 1,026,957 | 6 | 6 |
| $0014 | 1,014,020 | 2 | 6 |
| $002E | 904,326 | 2 | 6 |
| $00EB | 896,549 | 2 | 3 |
| $002F | 821,746 | 2 | 2 |
| $0069 | 629,096 | 3 | 6 |
| $006A | 629,096 | 3 | 6 |
| $065C | 501,725 | 3 | 6 |
| $001D | 462,252 | 3 | 6 |
This page shows none of the game's bytes. The listing these figures were read from stays with the cartridge.