Super Mario Bros. 3 (USA) (Rev 1)
Super Mario Bros. 3 (USA) (Rev 1) is on a MMC3 board with 262,144 bytes of program. A crawl of 6,400 steps from power-on kept 160 paths that found new code. Played back over 337,580 frames, they executed 26,553 bytes of it, 10 percent.
What the rules named
- The poll: 2
- The wait for the frame: 3
- The jump engine: 1
- The bank switch: 13
- The picture writer: 1
- The palette writers: 2
- The sprite writers: 35
- The scroll writer: 1
- The sound driver: 1
- The random byte: 1
- Where two things are compared: 7
The 264 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 |
|---|---|---|---|---|
| $FE99 (bank 31) | b31_engine_FE99 | a call | 665,700 | The jump engine: tables 26, jumps through them 665,700 |
| $FF12 (bank 31) | b31_poll_FF12 | a call | 645,037 | The poll: port $4016, reads a frame 16, strobes a frame 8 The poll: port $4017, reads a frame 16, strobes a frame 8 |
| $FC6F (bank 31) | b31_bank_FC6F | a call | 272,042 | The bank switch: writes 1,087,584, in the blank 444,508, while drawing 643,076 |
| $F486 (bank 31) | b31_nmi | each frame (NMI) | 164,787 | The bank switch: writes 1,644,876, in the blank 1,381,116, while drawing 263,760 The scroll writer: frames it ran in 164,933, writes in the blank 337,383 |
| $FFAD (bank 31) | b31_bank_FFAD | a call | 164,787 | The bank switch: writes 1,976,913, in the blank 1,976,913, while drawing 0 |
| $E34F (bank 31) | b31_sound_E34F | a call | 164,317 | The sound driver: frames it ran in 163,985, writes 441,159 |
| $F795 (bank 31) | b31_irq | an interrupt (IRQ) | 164,264 | The bank switch: writes 1,041,437, in the blank 0, while drawing 1,041,437 |
| $B293 (bank 26) | b26_drain_B293 | a call | 162,225 | The palette writers: frames it ran in 160,953, writes 386,958 The picture writer: frames it ran in 160,953, writes 784,082, in the blank 719,936, while drawing 64,146 |
| $9984 (bank 30) | b30_random_9984 | a call | 160,679 | The random byte: frames it ran in 160,679, bytes $0781,$0782,$0783,$0784, rotates 4, exclusive-ors 1 |
| $FFC2 (bank 31) | b31_bank_FFC2 | a call | 136,931 | The bank switch: writes 273,813, in the blank 3,984, while drawing 269,829 |
| $A41A (bank 9) | b9_sprites_A41A | a call | 117,854 | The sprite writers: frames it ran in 58,932, writes to the sprite page 25,948 |
| $A9D3 (bank 9) | b9_sprites_A9D3 | a call | 113,562 | The sprite writers: frames it ran in 57,648, writes to the sprite page 911,386 |
| $FD84 (bank 31) | b31_sprites_FD84 | a call | 104,161 | The sprite writers: frames it ran in 104,017, writes to the sprite page 13,324,022 |
| $B117 (bank 9) | b9_sprites_B117 | a call | 98,058 | The sprite writers: frames it ran in 42,214, writes to the sprite page 784,075 |
| $B5E2 (bank 9) | b9_sprites_B5E2 | a call | 58,932 | The sprite writers: frames it ran in 58,932, writes to the sprite page 471,105 |
| $B9AA (bank 11) | b11_sprites_B9AA | a call | 45,720 | The sprite writers: frames it ran in 5,715, writes to the sprite page 365,338 |
| $B754 (bank 24) | b24_sprites_B754 | a call | 44,841 | The sprite writers: frames it ran in 10,094, writes to the sprite page 23,982 |
| $B5BE (bank 11) | b11_dispatch_B5BE | a table | 44,174 | The sprite writers: frames it ran in 22,087, writes to the sprite page 399,487 |
| $C3C3 (bank 10) | b10_sprites_C3C3 | a call | 43,740 | The sprite writers: frames it ran in 43,740, writes to the sprite page 252 |
| $B20B (bank 24) | b24_sprites_B20B | a call | 38,755 | The sprite writers: frames it ran in 19,385, writes to the sprite page 1,154,351 |
| $B36E (bank 24) | b24_sprites_B36E | a call | 33,048 | The sprite writers: frames it ran in 16,524, writes to the sprite page 2,565 |
| $AF44 (bank 24) | b24_sprites_AF44 | a call | 32,947 | The sprite writers: frames it ran in 32,947, writes to the sprite page 2,108,608 |
| $AE7C (bank 11) | b11_dispatch_AE7C | a table | 22,087 | Where two things are compared: instructions 1, pairs of bytes 2, bytes in all 3, times compared 234, Y positions at $0075,$0076,$0502 |
| $CDCA (bank 10) | b10_dispatch_CDCA | a table | 20,893 | Where two things are compared: instructions 2, pairs of bytes 2, bytes in all 4, times compared 166, X positions at $0079,$007A, Y positions at $0075,$0076 The sprite writers: frames it ran in 20,893, writes to the sprite page 376,181 |
| $C52B (bank 10) | b10_sprites_C52B | a call | 16,447 | The sprite writers: frames it ran in 16,447, writes to the sprite page 164,385 |
| $B7D6 (bank 24) | b24_sprites_B7D6 | a call | 14,947 | The sprite writers: frames it ran in 10,094, writes to the sprite page 358,728 |
| $AC35 (bank 24) | b24_dispatch_AC35 | a table | 13,292 | The sprite writers: frames it ran in 20,200, writes to the sprite page 60,076 |
| $FFD1 (bank 31) | b31_bank_FFD1 | a call | 9,930 | The bank switch: writes 19,860, in the blank 1,736, while drawing 18,124 |
| $9BD5 (bank 30) | b30_bank_9BD5 | a call | 7,180 | The bank switch: writes 14,360, in the blank 1,738, while drawing 12,622 |
| $B6EE (bank 24) | b24_sprites_B6EE | a call | 6,299 | The sprite writers: frames it ran in 3,030, writes to the sprite page 61,846 |
| $B820 (bank 11) | b11_dispatch_B820 | a table | 5,842 | Where two things are compared: instructions 2, pairs of bytes 3, bytes in all 5, times compared 8,763, X positions at $0079,$00B1,$0722, Y positions at $0075,$00B2 |
| $B50C (bank 24) | b24_dispatch_B50C | a table | 5,705 | Where two things are compared: instructions 1, pairs of bytes 1, bytes in all 2, times compared 5,165, X positions at $008B,$008C The sprite writers: frames it ran in 5,705, writes to the sprite page 58,010 |
| $C6C4 (bank 10) | b10_dispatch_C6C4 | a table | 4,953 | The sprite writers: frames it ran in 4,953, writes to the sprite page 2,622 |
| $B58C (bank 24) | b24_dispatch_B58C | a table | 4,476 | The sprite writers: frames it ran in 4,476, writes to the sprite page 52,378 |
| $B4C0 (bank 24) | b24_dispatch_B4C0 | a table | 4,309 | The sprite writers: frames it ran in 4,309, writes to the sprite page 42,202 |
| $A859 (bank 24) | b24_palette_A859 | a call | 4,164 | The palette writers: frames it ran in 300, writes 9,600 |
| $B5AE (bank 24) | b24_dispatch_B5AE | a table | 2,204 | The sprite writers: frames it ran in 2,204, writes to the sprite page 22,829 |
| $94CD (bank 30) | b30_bank_94CD | a call | 1,546 | The bank switch: writes 3,092, in the blank 0, while drawing 3,092 |
| $B600 (bank 24) | b24_dispatch_B600 | a table | 1,389 | Where two things are compared: instructions 1, pairs of bytes 1, bytes in all 2, times compared 264, X positions at $0085,$008C |
| $B7BE (bank 9) | b9_sprites_B7BE | a call | 1,289 | The sprite writers: frames it ran in 1,289, writes to the sprite page 10,307 |
| $B628 (bank 24) | b24_sprites_B628 | a call | 1,013 | The sprite writers: frames it ran in 1,013, writes to the sprite page 10,307 |
| $B568 (bank 24) | b24_dispatch_B568 | a table | 976 | The sprite writers: frames it ran in 976, writes to the sprite page 9,790 |
| $CF29 (bank 10) | b10_sprites_CF29 | a call | 910 | The sprite writers: frames it ran in 910, writes to the sprite page 18,057 |
| $B5D9 (bank 24) | b24_dispatch_B5D9 | a table | 804 | The sprite writers: frames it ran in 804, writes to the sprite page 7,966 |
| $CB84 (bank 10) | b10_dispatch_CB84 | a table | 710 | The sprite writers: frames it ran in 142, writes to the sprite page 93,720 |
| $FFBF (bank 31) | b31_bank_FFBF | a call | 612 | The bank switch: writes 1,224, in the blank 0, while drawing 1,224 |
| $94BB (bank 30) | b30_bank_94BB | a call | 369 | The bank switch: writes 738, in the blank 0, while drawing 738 |
| $96CE (bank 30) | b30_sprites_96CE | a call | 332 | The sprite writers: frames it ran in 824, writes to the sprite page 84,992 |
| $CAA2 (bank 10) | b10_dispatch_CAA2 | a table | 284 | The sprite writers: frames it ran in 142, writes to the sprite page 37,488 |
| $B9F4 (bank 11) | b11_compare_B9F4 | a call | 254 | Where two things are compared: instructions 2, pairs of bytes 3, bytes in all 5, times compared 762, X positions at $0079,$00B1,$0722, Y positions at $0075,$00B2 |
| $9ABA (bank 30) | b30_bank_9ABA | a call | 225 | The bank switch: writes 446, in the blank 0, while drawing 446 |
| $F4F0 (bank 31) | b31_bank_F4F0 | a call | 201 | The bank switch: writes 2,009, in the blank 1,377, while drawing 632 |
| $FF40 (bank 31) | b31_reset | power-on | 160 | The bank switch: writes 1,244, in the blank 800, while drawing 444 Where two things are compared: instructions 1, pairs of bytes 1, bytes in all 2, times compared 19,700, X positions at $00B1,$0722 The sprite writers: frames it ran in 110,242, writes to the sprite page 5,285 |
| $D1AC (bank 10) | b10_sprites_D1AC | a call | 144 | The sprite writers: frames it ran in 144, writes to the sprite page 19,008 |
| $C7A0 (bank 10) | b10_dispatch_C7A0 | a table | 127 | The sprite writers: frames it ran in 127, writes to the sprite page 2,622 |
| $B599 (bank 9) | b9_dispatch_B599 | a table | 30 | The sprite writers: frames it ran in 30, writes to the sprite page 240 |
| $CA2B (bank 10) | b10_dispatch_CA2B | a table | 16 | The sprite writers: frames it ran in 16, writes to the sprite page 432 |
| $A996 (bank 9) | a call | 1,257,258 | ||
| $AD1B (bank 9) | a call | 707,184 | ||
| $B8D0 (bank 9) | a call | 707,184 | ||
| $B89C (bank 9) | a call | 396,626 | ||
| $AB30 (bank 9) | a call | 307,912 | ||
| $AB4D (bank 9) | a call | 286,871 | ||
| $A7D2 (bank 9) | a call | 209,543 | ||
| $E785 (bank 31) | a call | 201,466 | ||
| $A000 (bank 28) | a call | 164,745 | ||
| $A661 (bank 28) | a call | 164,427 | ||
| $A2AB (bank 28) | a call | 164,343 | ||
| $A449 (bank 28) | a call | 164,343 | ||
| $A0A1 (bank 28) | a call | 164,342 | ||
| $FEBE (bank 31) | a call | 160,679 | ||
| $B327 (bank 9) | a call | 150,624 | ||
| $B265 (bank 9) | a call | 150,535 | ||
| $B9D4 (bank 11) | a call | 137,160 | ||
| $B071 (bank 24) | a call | 128,794 | ||
| $B2DC (bank 26) | a call | 121,769 | ||
| $A0A7 (bank 9) | a call | 117,864 | ||
| $A4A8 (bank 9) | a table | 111,828 | ||
| $B890 (bank 9) | a call | 111,828 | ||
| $96E5 (bank 30) | a call | 111,519 | ||
| $B3E6 (bank 26) | a call | 107,411 | ||
| $E2C0 (bank 31) | a call | 105,103 | ||
| $B24D (bank 9) | a call | 98,053 | ||
| $B34F (bank 9) | a call | 98,053 | ||
| $A9B5 (bank 9) | a call | 97,715 | ||
| $B98B (bank 11) | a call | 91,440 | ||
| $B035 (bank 9) | a call | 89,338 | ||
| $AD3B (bank 9) | a table | 88,361 | ||
| $B87E (bank 9) | a call | 85,689 | ||
| $B884 (bank 9) | a call | 85,689 | ||
| $B027 (bank 9) | a call | 77,297 | ||
| $AF04 (bank 9) | a call | 76,320 | ||
| $AF7F (bank 9) | a call | 76,320 | ||
| $AFB9 (bank 9) | a table | 76,320 | ||
| $9734 (bank 30) | a call | 60,912 | ||
| $A1A7 (bank 9) | a call | 59,013 | ||
| $A018 (bank 9) | a call | 58,932 | ||
| $A026 (bank 9) | a call | 58,932 | ||
| $A09C (bank 9) | a call | 58,932 | ||
| $A106 (bank 9) | a call | 58,932 | ||
| $A2C1 (bank 9) | a table | 58,932 | ||
| $A2E5 (bank 9) | a table | 58,932 | ||
| $A3F1 (bank 9) | a call | 58,932 | ||
| $AB94 (bank 9) | a call | 58,932 | ||
| $ACF6 (bank 9) | a call | 58,932 | ||
| $B789 (bank 9) | a call | 58,932 | ||
| $AA4E (bank 9) | a call | 58,918 | ||
| $9705 (bank 30) | a call | 56,592 | ||
| $A806 (bank 24) | a call | 53,268 | ||
| $B8F3 (bank 11) | a call | 45,720 | ||
| $BC29 (bank 11) | a call | 44,518 | ||
| $C4E0 (bank 10) | a call | 44,376 | ||
| $ADF5 (bank 11) | a call | 44,174 | ||
| $B58D (bank 11) | a call | 44,174 | ||
| $BA8A (bank 11) | a call | 44,174 | ||
| $B0C1 (bank 24) | a call | 39,310 | ||
| $B76E (bank 24) | a call | 38,695 | ||
| $A9B4 (bank 24) | a call | 37,674 | ||
| $AF6D (bank 24) | a call | 33,048 | ||
| $AFF8 (bank 24) | a call | 33,048 | ||
| $B0A0 (bank 24) | a call | 33,048 | ||
| $B340 (bank 24) | a call | 33,048 | ||
| $AA7D (bank 24) | a call | 31,871 | ||
| $B421 (bank 24) | a call | 26,162 | ||
| $B0AC (bank 24) | a call | 24,003 | ||
| $B776 (bank 24) | a call | 24,003 | ||
| $C4FA (bank 10) | a table | 22,416 | ||
| $ADBD (bank 11) | a call | 22,087 | ||
| $B53B (bank 11) | a call | 22,087 | ||
| $BB6D (bank 11) | a call | 22,087 | ||
| $ADF4 (bank 11) | a table | 21,970 | ||
| $B03C (bank 26) | a call | 21,486 | ||
| $B073 (bank 26) | a call | 21,470 | ||
| $B175 (bank 26) | a call | 21,470 | ||
| $AF9D (bank 26) | a call | 21,468 | ||
| $B256 (bank 26) | a call | 21,468 | ||
| $B44A (bank 26) | a call | 21,468 | ||
| $D1FE (bank 10) | a call | 20,753 | ||
| $D280 (bank 10) | a call | 20,743 | ||
| $B691 (bank 24) | a call | 20,421 | ||
| $AEC5 (bank 24) | a call | 19,655 | ||
| $B3C3 (bank 24) | a call | 19,655 | ||
| $AAB2 (bank 24) | a table | 16,524 | ||
| $AB81 (bank 24) | a call | 16,524 | ||
| $C506 (bank 10) | a table | 16,447 | ||
| $B6AD (bank 24) | a call | 15,960 | ||
| $AB9A (bank 24) | a table | 13,855 | ||
| $E33B (bank 31) | a call | 13,333 | ||
| $B78E (bank 24) | a call | 13,292 | ||
| $E756 (bank 31) | a call | 11,050 | ||
| $B556 (bank 24) | a table | 9,849 | ||
| $B501 (bank 9) | a table | 9,697 | ||
| $B583 (bank 9) | a call | 9,369 | ||
| $E835 (bank 31) | a call | 7,895 | ||
| $E7BF (bank 31) | a call | 7,494 | ||
| $A9CF (bank 24) | a table | 7,448 | ||
| $9C78 (bank 30) | a call | 7,180 | ||
| $E831 (bank 31) | a call | 6,624 | ||
| $B76C (bank 11) | a call | 4,953 | ||
| $D369 (bank 10) | a call | 4,096 | ||
| $ACD1 (bank 26) | a call | 4,025 | ||
| $AD68 (bank 26) | a call | 4,025 | ||
| $ABDC (bank 26) | a call | 3,563 | ||
| $E7AB (bank 31) | a call | 3,297 | ||
| $B45A (bank 24) | a table | 3,030 | ||
| $B444 (bank 24) | a table | 2,028 | ||
| $A77B (bank 9) | a table | 1,734 | ||
| $FDC7 (bank 31) | a call | 1,382 | ||
| $B878 (bank 9) | a call | 1,289 | ||
| $B431 (bank 24) | a table | 1,241 | ||
| $AD76 (bank 26) | a table | 1,068 | ||
| $A459 (bank 9) | a table | 1,048 | ||
| $C54A (bank 10) | a table | 1,016 | ||
| $C566 (bank 10) | a call | 1,016 | ||
| $CA8C (bank 10) | a call | 994 | ||
| $ADBB (bank 26) | a table | 987 | ||
| $E7B2 (bank 31) | a call | 987 | ||
| $ADA6 (bank 26) | a table | 985 | ||
| $ADD6 (bank 26) | a table | 985 | ||
| $9935 (bank 30) | a call | 972 | ||
| $A1AC (bank 28) | a call | 762 | ||
| $ABAD (bank 24) | a table | 756 | ||
| $FDBF (bank 31) | a call | 691 | ||
| $ABF7 (bank 24) | a table | 646 | ||
| $A070 (bank 26) | a call | 636 | ||
| $AB9B (bank 24) | a table | 621 | ||
| $FDA9 (bank 31) | a call | 610 | ||
| $9A49 (bank 30) | a call | 567 | ||
| $C42C (bank 14) | a table | 567 | ||
| $C576 (bank 14) | a table | 567 | ||
| $AB26 (bank 24) | a call | 515 | ||
| $FD97 (bank 31) | a call | 448 | ||
| $FCD8 (bank 31) | a call | 432 | ||
| $A40E (bank 26) | a table | 406 | ||
| $9A75 (bank 30) | a call | 405 | ||
| $C489 (bank 14) | a table | 405 | ||
| $ABC0 (bank 24) | a table | 296 | ||
| $ABCA (bank 24) | a table | 295 | ||
| $968E (bank 30) | a call | 286 | ||
| $AC2A (bank 26) | a call | 236 | ||
| $951B (bank 30) | a call | 225 | ||
| $ABA3 (bank 26) | a call | 223 | ||
| $AC69 (bank 26) | a call | 223 | ||
| $B83F (bank 27) | a call | 223 | ||
| $E7B9 (bank 31) | a call | 214 | ||
| $AB5E (bank 24) | a call | 197 | ||
| $AC1A (bank 9) | a call | 187 | ||
| $AC8C (bank 9) | a table | 187 | ||
| $A990 (bank 24) | a call | 162 | ||
| $B0C4 (bank 26) | a call | 162 | ||
| $B108 (bank 26) | a call | 162 | ||
| $C5AB (bank 14) | a table | 162 | ||
| $C5B8 (bank 14) | a table | 162 | ||
| $A8AF (bank 24) | a call | 160 | ||
| $B7A8 (bank 24) | a call | 158 | ||
| $A756 (bank 11) | a table | 157 | ||
| $A40E (bank 12) | a call | 144 | ||
| $A45D (bank 12) | a call | 144 | ||
| $FCBF (bank 31) | a call | 144 | ||
| $E82B (bank 31) | a call | 143 | ||
| $AC1A (bank 24) | a table | 142 | ||
| $AAF4 (bank 24) | a table | 138 | ||
| $A2C4 (bank 26) | a table | 136 | ||
| $A399 (bank 26) | a call | 136 | ||
| $C2C4 (bank 10) | a call | 132 | ||
| $C34D (bank 10) | a call | 132 | ||
| $A1D8 (bank 11) | a call | 130 | ||
| $A299 (bank 11) | a call | 130 | ||
| $ACBB (bank 24) | a table | 130 | ||
| $B792 (bank 11) | a table | 127 | ||
| $B363 (bank 11) | a call | 117 | ||
| $C9E5 (bank 10) | a table | 117 | ||
| $B3E8 (bank 24) | a call | 102 | ||
| $A398 (bank 26) | a table | 100 | ||
| $B818 (bank 9) | a call | 96 | ||
| $9553 (bank 30) | a call | 83 | ||
| $9A1D (bank 30) | a call | 81 | ||
| $A200 (bank 9) | a table | 81 | ||
| $A23C (bank 9) | a table | 81 | ||
| $B805 (bank 9) | a call | 81 | ||
| $C408 (bank 14) | a table | 81 | ||
| $C5F2 (bank 14) | a table | 81 | ||
| $FDB1 (bank 31) | a call | 81 | ||
| $B409 (bank 24) | a table | 68 | ||
| $A0CF (bank 26) | a table | 64 | ||
| $ACC2 (bank 9) | a call | 61 | ||
| $B30F (bank 9) | a call | 60 | ||
| $ABE4 (bank 24) | a table | 51 | ||
| $A328 (bank 26) | a call | 36 | ||
| $A3B1 (bank 26) | a table | 18 | ||
| $A3CD (bank 26) | a table | 18 | ||
| $B31B (bank 9) | a call | 18 | ||
| $B40A (bank 24) | a table | 17 | ||
| $B41B (bank 24) | a table | 17 | ||
| $A118 (bank 26) | a table | 16 | ||
| $AC20 (bank 26) | a call | 16 | ||
| $ACAA (bank 26) | a call | 16 | ||
| $B43B (bank 11) | a call | 16 | ||
| $A092 (bank 26) | a table | 14 | ||
| $A383 (bank 9) | a call | 5 | ||
| $B39D (bank 11) | a call | 5 | ||
| $AC13 (bank 24) | a table | 4 | ||
| $A181 (bank 9) | a call | 2 | ||
| $A522 (bank 26) | a call | 2 |
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 |
|---|---|---|
| $A81C (bank 24) | b24_wait_A81C | The wait for the frame: waits on the byte at $0010, times entered 53,258, turns 221,261,149, writes of it under the frame interrupt 329,192, frames in all 169,160 |
| $A04B (bank 28) | b28_wait_A04B | The wait for the frame: waits on the byte at $04E0, times entered 4, turns 4, writes of it under the frame interrupt 5,597, frames in all 169,160 |
| $96FB (bank 30) | b30_wait_96FB | The wait for the frame: waits on the byte at $0010, times entered 111,474, turns 339,706,037, writes of it under the frame interrupt 329,192, frames in all 169,160 |
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 |
|---|---|---|---|---|
| $A1F0 (bank 9) | after a call | 2 | 2 | $0075 |
| $A224 (bank 9) | after a call | 11 | 1 | |
| $A2CD (bank 9) | after a call | 11 | 1 | |
| $A44B (bank 9) | after a call | 3 | 3 | |
| $AC5E (bank 9) | after a call | 1 | 1 | |
| $AD33 (bank 9) | after a call | 4 | 3 | |
| $AD89 (bank 9) | after a call | 3 | 1 | |
| $C4B2 (bank 10) | after a call | 2 | 6 | $0729 |
| $C500 (bank 10) | after a call | 3 | 3 | $0728 |
| $CA92 (bank 10) | after a call | 4 | 2 | $03E1 |
| $AE0E (bank 11) | after a call | 12 | 2 | |
| $B59C (bank 11) | after a call | 17 | 1 | |
| $B772 (bank 11) | after a call | 3 | 2 | $008B |
| $C447 (bank 14) | after a call | 2 | 1 | $0706 |
| $C496 (bank 14) | after a call | 4 | 3 | $000E, $0706 |
| $A9BF (bank 24) | after a call | 7 | 6 | $00DE |
| $AB86 (bank 24) | after a call | 10 | 8 | $00EE |
| $B3FD (bank 24) | after a call | 6 | 3 | |
| $B425 (bank 24) | after a call | 6 | 6 | |
| $B55E (bank 24) | after a call | 5 | 5 | $00DD |
| $A088 (bank 26) | after a call | 5 | 5 | $03E6 |
| $A3A1 (bank 26) | after a call | 8 | 3 | $03E5 |
| $AD6E (bank 26) | after a call | 4 | 4 | $044F |
The memory its routines share
1,127 bytes of memory were written by one routine and read by another, and 148 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 |
|---|---|---|---|
| $0075 | 129 | 19 | 2 down |
| $00A5 | 16 | 2 | 1 across, 1 down |
| $0500 | 14 | 8 | 1 down |
| $0087 | 6 | 15 | 1 across |
| $0079 | 2 | 12 | 2 across |
| $0722 | 2 | 6 | 1 across |
| $0084 | 2 | 3 | 1 across |
| $008C | 2 | 1 | 1 across |
| $0201 | 253 | 16 | |
| $0200 | 253 | 15 | |
| $0203 | 253 | 10 | |
| $0000 | 246 | 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 |
|---|---|---|---|---|---|---|---|---|
| 129 | 14 | 16 | $0079, $0084, $008C, $0722 | $0075 | $0095 | $00CB | $0077, $0085, $008D, $0095, $00B7, $00CB, $0724, $0736, $073E | |
| 6 | 8 | 16 | $0087 | $0097 | $00D8 | $0097 | $0077, $008F, $0097, $009F, $00D2, $00D8, $051F | |
| 14 | 6 | 6 | $0500 | $050F, $053C | $050F, $051E, $052D, $053C, $0782 |
The 24 busiest shared bytes
| byte | reads and writes | routines writing | routines reading |
|---|---|---|---|
| $0000 | 30,868,275 | 6 | 6 |
| $0001 | 29,115,727 | 6 | 6 |
| $000E | 9,318,015 | 6 | 6 |
| $0002 | 8,850,623 | 6 | 6 |
| $000F | 6,232,384 | 6 | 6 |
| $0003 | 4,510,847 | 6 | 6 |
| $000C | 3,186,128 | 6 | 6 |
| $6910 | 2,176,068 | 6 | 6 |
| $0005 | 1,705,676 | 6 | 6 |
| $0006 | 1,395,816 | 6 | 6 |
| $0007 | 1,395,013 | 6 | 6 |
| $0004 | 1,173,136 | 6 | 6 |
| $68CB | 1,006,639 | 4 | 5 |
| $6814 | 997,842 | 6 | 6 |
| $6813 | 981,549 | 6 | 6 |
| $00F7 | 948,344 | 3 | 3 |
| $68CA | 890,520 | 5 | 6 |
| $7E98 | 855,844 | 2 | 4 |
| $0015 | 793,312 | 4 | 6 |
| $6824 | 717,315 | 5 | 6 |
| $6825 | 715,619 | 5 | 6 |
| $0075 | 706,632 | 6 | 6 |
| $00F8 | 679,388 | 3 | 4 |
| $6836 | 679,331 | 6 | 6 |
This page shows none of the game's bytes. The listing these figures were read from stays with the cartridge.