Super Mario Bros. + Duck Hunt (USA)
Super Mario Bros. + Duck Hunt (USA) is on a GxROM board with 65,536 bytes of program. A crawl of 8,000 steps from power-on kept 188 paths that found new code. Played back over 317,948 frames, they executed 18,801 bytes of it, 29 percent.
What the rules named
- The poll: 5
- The idle spin: 1
- The game inside the interrupt: 1
- The wait for the frame: 4
- The jump engine: 2
- The bank switch: 1
- The picture writer: 1
- The palette writers: 3
- The sprite writers: 37
- The scroll writer: 2
- The split: 2
- The sound driver: 1
- The random byte: 2
- Where two things are compared: 3
The 360 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 |
|---|---|---|---|---|
| $C588 (bank 1) | b1_random_C588 | a call | 8,510,911 | The random byte: frames it ran in 34,995, bytes $05EC,$05ED,$05EE,$05EF, rotates 4, exclusive-ors 1 |
| $D10E (bank 1) | b1_compare_D10E | a call | 636,885 | Where two things are compared: instructions 1, pairs of bytes 1, bytes in all 2, times compared 319, X positions at $0032,$0033, Y positions at $0032,$0033 |
| $8E04 (bank 0) | b0_engine_8E04 | a call | 244,538 | The jump engine: tables 12, jumps through them 244,538 |
| $84C3 (bank 0) | b0_sprites_84C3 | a call | 234,696 | The sprite writers: frames it ran in 39,116, writes to the sprite page 6,672 |
| $EBB2 (bank 0) | b0_sprites_EBB2 | a call | 161,620 | The sprite writers: frames it ran in 39,087, writes to the sprite page 1,292,960 |
| $C35E (bank 1) | b1_engine_C35E | a call | 82,521 | The jump engine: tables 5, jumps through them 82,521 |
| $8082 (bank 0) | b0_nmi | each frame (NMI) | 57,832 | The game inside the interrupt: frames it ran in 58,008, frames in all 107,528, the spin is at $8057 The random byte: frames it ran in 58,008, bytes $07A7,$07A8,$07A9,$07AA, rotates 4, exclusive-ors 1 The split: frames it ran in 58,008, scroll writes while drawing 95,422, status reads while drawing 9,533,847 |
| $8EDD (bank 0) | b0_drain_8EDD | a call | 57,832 | The palette writers: frames it ran in 57,832, writes 29,344 The scroll writer: frames it ran in 57,832, writes in the blank 111,030 The picture writer: frames it ran in 57,832, writes 344,760, in the blank 248,703, while drawing 96,057 |
| $8EE6 (bank 0) | b0_scroll_8EE6 | a call | 57,832 | The scroll writer: frames it ran in 57,832, writes in the blank 115,664 |
| $8E5C (bank 0) | b0_poll_8E5C | a call | 57,827 | The poll: port $4017, reads a frame 8, strobes a frame 2 |
| $8E6A (bank 0) | b0_poll_8E6A | a call | 57,827 | The poll: port $4016, reads a frame 8, strobes a frame 0 |
| $F2D0 (bank 0) | b0_sound_F2D0 | a call | 57,827 | The sound driver: frames it ran in 57,384, writes 120,430 |
| $EBAA (bank 0) | b0_sprites_EBAA | a call | 40,524 | The sprite writers: frames it ran in 12,126, writes to the sprite page 324,192 |
| $8222 (bank 0) (inside another instruction) | b0_routine_8223 | a call | 39,273 | The sprite writers: frames it ran in 39,370, writes to the sprite page 2,474,199 |
| $F0E9 (bank 0) | b0_sprites_F0E9 | a call | 39,010 | The sprite writers: frames it ran in 39,010, writes to the sprite page 53,706 |
| $C284 (bank 1) | b1_poll_C284 | a call | 34,783 | The poll: port $4017, reads a frame 8, strobes a frame 2 |
| $C291 (bank 1) | b1_poll_C291 | a call | 34,783 | The poll: port $4016, reads a frame 8, strobes a frame 0 |
| $CE4D (bank 1) | b1_sprites_CE4D | a call | 20,509 | The sprite writers: frames it ran in 20,509, writes to the sprite page 3,801,664 |
| $D853 (bank 0) | b0_compare_D853 | a call | 15,456 | Where two things are compared: instructions 1, pairs of bytes 3, bytes in all 4, times compared 8, X positions at $0057,$0059,$0086,$0087 |
| $E87D (bank 0) | b0_sprites_E87D | a call | 13,508 | The sprite writers: frames it ran in 12,126, writes to the sprite page 4,360 |
| $8158 (bank 1) | b1_poll_8158 | a call | 11,641 | The poll: port $4016, reads a frame 8, strobes a frame 3 |
| $CA19 (bank 1) | b1_dispatch_CA19 | a table | 8,429 | The sprite writers: frames it ran in 6,858, writes to the sprite page 490,094 |
| $EBC1 (bank 0) | b0_sprites_EBC1 | a call | 7,680 | The sprite writers: frames it ran in 3,959, writes to the sprite page 7,680 |
| $EC4A (bank 0) | b0_sprites_EC4A | a call | 7,680 | The sprite writers: frames it ran in 3,959, writes to the sprite page 15,360 |
| $E325 (bank 0) | b0_compare_E325 | a call | 5,502 | Where two things are compared: instructions 5, pairs of bytes 12, bytes in all 9, times compared 15,260, X positions at $0057,$0058,$0059,$005A,$0086,$0087, Y positions at $00CE,$00CF,$00D4 |
| $E5C1 (bank 0) | b0_sprites_E5C1 | a call | 4,654 | The sprite writers: frames it ran in 3,210, writes to the sprite page 9,308 |
| $CD5C (bank 1) | b1_dispatch_CD5C | a table | 2,196 | The sprite writers: frames it ran in 2,196, writes to the sprite page 403,106 |
| $E686 (bank 0) | b0_sprites_E686 | a call | 1,862 | The sprite writers: frames it ran in 1,852, writes to the sprite page 11,172 |
| $CEF9 (bank 1) | b1_dispatch_CEF9 | a table | 1,084 | The sprite writers: frames it ran in 1,084, writes to the sprite page 125,748 |
| $E5BB (bank 0) | b0_sprites_E5BB | a call | 834 | The sprite writers: frames it ran in 734, writes to the sprite page 3,336 |
| $82BC (bank 1) | b1_sprites_82BC | a call | 714 | The sprite writers: frames it ran in 714, writes to the sprite page 34,272 |
| $EBD1 (bank 0) | b0_sprites_EBD1 | a call | 688 | The sprite writers: frames it ran in 688, writes to the sprite page 2,536 |
| $CD6C (bank 1) | b1_dispatch_CD6C | a table | 512 | The sprite writers: frames it ran in 512, writes to the sprite page 1,528 |
| $90CC (bank 0) | b0_sprites_90CC | a call | 380 | The sprite writers: frames it ran in 757, writes to the sprite page 97,280 |
| $82B7 (bank 1) | b1_sprites_82B7 | a call | 354 | The sprite writers: frames it ran in 354, writes to the sprite page 16,992 |
| $8220 (bank 0) | b0_sprites_8220 | a call | 350 | The sprite writers: frames it ran in 350, writes to the sprite page 22,400 |
| $C23B (bank 1) | b1_sprites_C23B | a call | 272 | The sprite writers: frames it ran in 272, writes to the sprite page 17,408 |
| $C3B8 (bank 1) | b1_palette_C3B8 | a call | 270 | The palette writers: frames it ran in 262, writes 7,664 |
| $8000 (bank 0) | b0_reset | power-on | 188 | The bank switch: writes 188, in the blank 188, while drawing 0 The sprite writers: frames it ran in 105,723, writes to the sprite page 18,176 |
| $80EF (bank 1) | b1_sprites_80EF | a call | 188 | The sprite writers: frames it ran in 376, writes to the sprite page 48,128 |
| $822C (bank 1) | b1_palette_822C | a call | 188 | The palette writers: frames it ran in 188, writes 6,016 |
| $8268 (bank 1) | b1_sprites_8268 | a call | 188 | The sprite writers: frames it ran in 188, writes to the sprite page 752 |
| $82B2 (bank 1) | b1_sprites_82B2 | a call | 179 | The sprite writers: frames it ran in 179, writes to the sprite page 8,592 |
| $CD16 (bank 1) | b1_dispatch_CD16 | a table | 168 | The sprite writers: frames it ran in 168, writes to the sprite page 32,088 |
| $C617 (bank 1) | b1_split_C617 | a call | 136 | The split: frames it ran in 272, scroll writes while drawing 272, status reads while drawing 7,532 |
| $CD3C (bank 1) | b1_dispatch_CD3C | a table | 111 | The sprite writers: frames it ran in 111, writes to the sprite page 21,201 |
| $EC53 (bank 0) | b0_sprites_EC53 | a call | 100 | The sprite writers: frames it ran in 100, writes to the sprite page 600 |
| $9061 (bank 0) | b0_dispatch_9061 | a table | 97 | The sprite writers: frames it ran in 97, writes to the sprite page 388 |
| $EFA4 (bank 0) | b0_sprites_EFA4 | a call | 77 | The sprite writers: frames it ran in 77, writes to the sprite page 77 |
| $9071 (bank 0) | b0_dispatch_9071 | a table | 70 | The sprite writers: frames it ran in 70, writes to the sprite page 280 |
| $CD4C (bank 1) | b1_dispatch_CD4C | a table | 50 | The sprite writers: frames it ran in 50, writes to the sprite page 9,550 |
| $CD52 (bank 1) | b1_dispatch_CD52 | a table | 48 | The sprite writers: frames it ran in 48, writes to the sprite page 9,168 |
| $CE40 (bank 1) | b1_dispatch_CE40 | a table | 44 | The sprite writers: frames it ran in 44, writes to the sprite page 8,404 |
| $CF00 (bank 1) | b1_dispatch_CF00 | a table | 44 | The sprite writers: frames it ran in 44, writes to the sprite page 8,395 |
| $CC8B (bank 1) | b1_dispatch_CC8B | a table | 12 | The sprite writers: frames it ran in 12, writes to the sprite page 756 |
| $D12B (bank 1) | a call | 676,358 | ||
| $D114 (bank 1) | a call | 636,885 | ||
| $9BE1 (bank 0) | a call | 293,155 | ||
| $C047 (bank 0) | a call | 234,696 | ||
| $F26D (bank 0) | a call | 224,498 | ||
| $E3EB (bank 0) (inside another instruction) | a call | 148,340 | ||
| $F1F6 (bank 0) | a call | 132,940 | ||
| $F171 (bank 0) | a call | 95,869 | ||
| $F1D7 (bank 0) | a call | 95,081 | ||
| $BE70 (bank 0) | a call | 78,232 | ||
| $F12A (bank 0) | a call | 76,975 | ||
| $F180 (bank 0) | a call | 76,975 | ||
| $E3E8 (bank 0) | a call | 74,270 | ||
| $C426 (bank 1) | a call | 58,623 | ||
| $8182 (bank 0) | a call | 57,827 | ||
| $8F97 (bank 0) | a call | 57,825 | ||
| $8F9E (bank 0) | a call | 57,825 | ||
| $8212 (bank 0) | a call | 52,939 | ||
| $E29C (bank 0) | a call | 51,646 | ||
| $C086 (bank 1) | each frame (NMI) | 47,850 | ||
| $C5F7 (bank 1) | a call | 46,552 | ||
| $C607 (bank 1) | a call | 46,496 | ||
| $81C6 (bank 0) | a call | 39,273 | ||
| $AEEA (bank 0) | a call | 39,118 | ||
| $B04A (bank 0) | a call | 39,118 | ||
| $89E1 (bank 0) | a call | 39,116 | ||
| $B624 (bank 0) | a call | 39,116 | ||
| $B74F (bank 0) | a call | 39,116 | ||
| $B7B8 (bank 0) | a call | 39,116 | ||
| $B855 (bank 0) | a call | 39,116 | ||
| $B9BC (bank 0) | a call | 39,116 | ||
| $BB96 (bank 0) | a call | 39,116 | ||
| $BED4 (bank 0) | a call | 39,116 | ||
| $EEE9 (bank 0) | a call | 39,116 | ||
| $EFBE (bank 0) | a call | 39,010 | ||
| $B29A (bank 0) | a call | 38,742 | ||
| $AF93 (bank 0) | a call | 37,859 | ||
| $B329 (bank 0) | a call | 37,859 | ||
| $B450 (bank 0) | a call | 37,859 | ||
| $DC64 (bank 0) | a call | 37,859 | ||
| $BF09 (bank 0) | a call | 37,820 | ||
| $EFEC (bank 0) | a call | 37,645 | ||
| $F091 (bank 0) | a call | 37,645 | ||
| $DFA1 (bank 0) | a call | 37,432 | ||
| $8EED (bank 0) | a call | 37,149 | ||
| $E3E9 (bank 0) | a call | 37,126 | ||
| $B0E9 (bank 0) | a table | 37,096 | ||
| $C3C1 (bank 1) | a call | 35,503 | ||
| $C249 (bank 1) | a call | 35,438 | ||
| $C263 (bank 1) | a call | 35,438 | ||
| $C2BF (bank 1) | a call | 35,438 | ||
| $C61E (bank 1) | a call | 35,375 | ||
| $F56C (bank 1) | a call | 34,804 | ||
| $F591 (bank 1) | a call | 34,804 | ||
| $F621 (bank 1) | a call | 34,804 | ||
| $F6CF (bank 1) | a call | 34,804 | ||
| $F7CC (bank 1) | a call | 34,804 | ||
| $C348 (bank 1) | a call | 34,783 | ||
| $C0B3 (bank 1) | a call | 34,781 | ||
| $D131 (bank 1) | a call | 34,266 | ||
| $D160 (bank 1) | a call | 34,266 | ||
| $B5CC (bank 0) | a call | 34,201 | ||
| $C86E (bank 1) | a table | 32,675 | ||
| $CC94 (bank 1) | a call | 32,674 | ||
| $C6C4 (bank 1) | a call | 32,618 | ||
| $C6F5 (bank 1) | a call | 32,618 | ||
| $C7FB (bank 1) | a call | 32,618 | ||
| $C890 (bank 1) | a call | 32,618 | ||
| $CCA9 (bank 1) | a call | 32,618 | ||
| $CFBA (bank 1) | a call | 32,618 | ||
| $CFC5 (bank 1) | a call | 32,618 | ||
| $D3D2 (bank 1) | a call | 32,618 | ||
| $D428 (bank 1) | a call | 32,618 | ||
| $D3DF (bank 1) | a call | 32,565 | ||
| $DFB0 (bank 0) | a call | 31,974 | ||
| $DF9A (bank 0) | a call | 31,917 | ||
| $DEBD (bank 0) | a call | 31,787 | ||
| $DEDD (bank 0) | a call | 31,780 | ||
| $DEC4 (bank 0) | a call | 31,641 | ||
| $DEE8 (bank 0) | a call | 31,641 | ||
| $B35A (bank 0) | a table | 31,477 | ||
| $B58F (bank 0) | a call | 31,477 | ||
| $E3F0 (bank 0) | a call | 28,764 | ||
| $8231 (bank 0) | a table | 26,524 | ||
| $AEDC (bank 0) | a table | 26,415 | ||
| $F41B (bank 0) | a call | 26,365 | ||
| $F57C (bank 0) | a call | 26,365 | ||
| $F667 (bank 0) | a call | 26,365 | ||
| $F694 (bank 0) | a call | 26,365 | ||
| $F8F4 (bank 0) | a call | 25,761 | ||
| $8245 (bank 0) | a table | 23,930 | ||
| $92B0 (bank 0) | a call | 18,615 | ||
| $92C8 (bank 0) | a call | 18,615 | ||
| $E243 (bank 0) | a call | 15,456 | ||
| $F152 (bank 0) | a call | 15,456 | ||
| $F1AF (bank 0) | a call | 15,456 | ||
| $DFC1 (bank 0) | a call | 14,610 | ||
| $E15B (bank 0) | a call | 14,610 | ||
| $E1AE (bank 0) | a call | 14,610 | ||
| $E1B5 (bank 0) | a call | 14,399 | ||
| $E388 (bank 0) | a call | 14,154 | ||
| $9595 (bank 0) | a call | 13,965 | ||
| $C902 (bank 1) | a call | 13,878 | ||
| $C8E0 (bank 0) | a table | 13,508 | ||
| $DA33 (bank 0) | a call | 13,508 | ||
| $CD1D (bank 1) | a table | 13,460 | ||
| $CA77 (bank 0) | a call | 13,428 | ||
| $8567 (bank 0) | a table | 13,395 | ||
| $BF0F (bank 0) | a call | 13,178 | ||
| $BF02 (bank 0) | a call | 12,978 | ||
| $C5E0 (bank 1) | a table | 12,520 | ||
| $8129 (bank 1) | a call | 12,412 | ||
| $C905 (bank 0) | a call | 12,326 | ||
| $84F4 (bank 1) | a call | 11,660 | ||
| $827C (bank 1) | a call | 10,868 | ||
| $DC52 (bank 0) | a call | 10,492 | ||
| $889D (bank 0) | a table | 9,416 | ||
| $88AE (bank 0) | a table | 9,308 | ||
| $836B (bank 0) | a call | 8,782 | ||
| $D81B (bank 1) | a call | 8,421 | ||
| $F062 (bank 0) | a call | 8,134 | ||
| $DC41 (bank 0) | a call | 7,738 | ||
| $B038 (bank 0) | a call | 7,728 | ||
| $B376 (bank 0) | a table | 5,952 | ||
| $93FC (bank 0) | a table | 4,655 | ||
| $9508 (bank 0) | a call | 4,655 | ||
| $92DB (bank 0) | a table | 4,652 | ||
| $F1A8 (bank 0) | a call | 3,724 | ||
| $C932 (bank 1) | a table | 3,309 | ||
| $C71D (bank 1) | a call | 3,055 | ||
| $F564 (bank 1) | a call | 3,020 | ||
| $F544 (bank 1) | a call | 2,769 | ||
| $F42E (bank 1) | a table | 2,654 | ||
| $F550 (bank 1) | a call | 2,654 | ||
| $F4EE (bank 1) | a table | 2,518 | ||
| $F502 (bank 1) | a call | 2,518 | ||
| $F8C5 (bank 0) | a call | 2,341 | ||
| $896A (bank 0) | a call | 2,325 | ||
| $F49B (bank 1) | a table | 2,309 | ||
| $F568 (bank 1) | a call | 2,309 | ||
| $BC85 (bank 0) | a table | 2,281 | ||
| $86E6 (bank 0) | a table | 2,041 | ||
| $D67A (bank 0) | a call | 1,948 | ||
| $E6D2 (bank 0) | a call | 1,948 | ||
| $E236 (bank 0) | a call | 1,862 | ||
| $F148 (bank 0) | a call | 1,862 | ||
| $F19B (bank 0) | a call | 1,862 | ||
| $F8D8 (bank 0) | a call | 1,555 | ||
| $9BBB (bank 0) | a call | 1,494 | ||
| $F3A9 (bank 0) | a call | 1,129 | ||
| $F381 (bank 0) | a call | 1,104 | ||
| $D4EE (bank 1) | a call | 1,052 | ||
| $F39F (bank 0) | a call | 1,050 | ||
| $F3AD (bank 0) | a call | 1,008 | ||
| $8F11 (bank 0) | a call | 969 | ||
| $F8CB (bank 0) | a call | 906 | ||
| $9589 (bank 0) | a call | 897 | ||
| $BFA4 (bank 0) | a call | 888 | ||
| $F366 (bank 1) | a call | 858 | ||
| $B233 (bank 0) | a table | 828 | ||
| $BFD7 (bank 0) | a call | 820 | ||
| $B269 (bank 0) | a table | 803 | ||
| $F159 (bank 0) | a call | 788 | ||
| $F165 (bank 0) | a call | 788 | ||
| $F1B6 (bank 0) | a call | 788 | ||
| $F38B (bank 0) | a call | 786 | ||
| $8F5F (bank 0) | a call | 720 | ||
| $9A2E (bank 0) | a table | 709 | ||
| $9BAC (bank 0) | a call | 709 | ||
| $9B0E (bank 0) | a table | 669 | ||
| $9B36 (bank 0) | a call | 669 | ||
| $C5D9 (bank 1) | a call | 655 | ||
| $CF0B (bank 1) | a call | 641 | ||
| $810F (bank 1) | a call | 606 | ||
| $811C (bank 1) | a call | 564 | ||
| $F0B0 (bank 0) | a call | 558 | ||
| $E327 (bank 0) | a call | 440 | ||
| $F4E5 (bank 1) | a table | 416 | ||
| $B36D (bank 0) | a table | 391 | ||
| $81C5 (bank 1) | a call | 376 | ||
| $8218 (bank 1) | a call | 376 | ||
| $B288 (bank 0) | a call | 374 | ||
| $85F1 (bank 0) | a call | 348 | ||
| $8F06 (bank 0) | a call | 334 | ||
| $8E19 (bank 0) | a call | 278 | ||
| $8E2D (bank 0) | a call | 278 | ||
| $8808 (bank 0) | a call | 256 | ||
| $8407 (bank 1) | a call | 246 | ||
| $BF63 (bank 0) | a call | 227 | ||
| $BFAD (bank 0) | a call | 227 | ||
| $CEED (bank 1) | a table | 196 | ||
| $80A9 (bank 1) | a call | 188 | ||
| $80EE (bank 1) | a table | 188 | ||
| $8478 (bank 1) | a call | 188 | ||
| $84A1 (bank 1) | a call | 188 | ||
| $84F3 (bank 1) | a table | 188 | ||
| $8511 (bank 1) | a call | 188 | ||
| $858B (bank 0) | a table | 180 | ||
| $859B (bank 0) | a table | 180 | ||
| $9C03 (bank 0) | a call | 180 | ||
| $9C09 (bank 0) | a call | 180 | ||
| $9C13 (bank 0) | a call | 180 | ||
| $9C22 (bank 0) | a call | 180 | ||
| $8652 (bank 0) | a table | 179 | ||
| $865A (bank 0) | a table | 179 | ||
| $8693 (bank 0) | a table | 179 | ||
| $86A8 (bank 0) | a table | 179 | ||
| $BC30 (bank 0) | a call | 179 | ||
| $85BF (bank 0) | a table | 167 | ||
| $85E3 (bank 0) | a table | 167 | ||
| $8643 (bank 0) | a table | 167 | ||
| $86FF (bank 0) | a table | 167 | ||
| $90ED (bank 0) | a call | 167 | ||
| $9131 (bank 0) | a table | 167 | ||
| $92AA (bank 0) | a call | 167 | ||
| $92AF (bank 0) | a call | 167 | ||
| $B069 (bank 0) | a table | 167 | ||
| $F388 (bank 0) | a call | 163 | ||
| $F3A6 (bank 0) | a call | 150 | ||
| $F383 (bank 1) | a call | 147 | ||
| $F3D0 (bank 1) | a call | 147 | ||
| $D52C (bank 1) | a call | 139 | ||
| $DF4B (bank 0) | a call | 139 | ||
| $C22B (bank 1) | a call | 136 | ||
| $C232 (bank 1) | a call | 136 | ||
| $C5E1 (bank 1) | a call | 136 | ||
| $D528 (bank 1) | a call | 134 | ||
| $C64B (bank 1) | a call | 130 | ||
| $D4D9 (bank 1) | a call | 130 | ||
| $98E5 (bank 0) | a table | 116 | ||
| $9939 (bank 0) | a call | 116 | ||
| $9BAF (bank 0) | a call | 116 | ||
| $BDF6 (bank 0) | a call | 103 | ||
| $8A97 (bank 0) | a call | 102 | ||
| $8FCF (bank 0) | a table | 102 | ||
| $8325 (bank 0) | a call | 101 | ||
| $EC46 (bank 0) | a call | 100 | ||
| $8732 (bank 0) | a table | 97 | ||
| $8749 (bank 0) | a table | 97 | ||
| $BC36 (bank 0) | a call | 97 | ||
| $CF44 (bank 1) | a call | 90 | ||
| $8FE4 (bank 0) | a table | 78 | ||
| $88A5 (bank 0) | a call | 77 | ||
| $EFDC (bank 0) | a call | 77 | ||
| $D4E2 (bank 1) | a call | 76 | ||
| $C230 (bank 1) | a call | 71 | ||
| $C303 (bank 1) | a call | 71 | ||
| $C5AA (bank 1) | a table | 71 | ||
| $D509 (bank 1) | a call | 71 | ||
| $F581 (bank 1) | a call | 71 | ||
| $C4BF (bank 1) | a call | 65 | ||
| $C502 (bank 1) | a call | 65 | ||
| $C5EE (bank 1) | a call | 65 | ||
| $C641 (bank 1) | a call | 65 | ||
| $C793 (bank 1) | a call | 65 | ||
| $C7B3 (bank 1) | a call | 65 | ||
| $C81D (bank 1) | a table | 65 | ||
| $C839 (bank 1) | a table | 65 | ||
| $C854 (bank 1) | a table | 65 | ||
| $CCD4 (bank 1) | a table | 65 | ||
| $D2A4 (bank 1) | a call | 65 | ||
| $C919 (bank 1) | a table | 62 | ||
| $C271 (bank 1) | a table | 60 | ||
| $DF8F (bank 0) | a call | 57 | ||
| $C26C (bank 0) | a call | 56 | ||
| $C2F1 (bank 0) | a table | 56 | ||
| $C30E (bank 0) | a call | 56 | ||
| $B245 (bank 0) | a table | 55 | ||
| $8A6B (bank 0) | a call | 53 | ||
| $BCED (bank 0) | a call | 53 | ||
| $BD84 (bank 0) | a call | 53 | ||
| $BE1F (bank 0) | a call | 53 | ||
| $BD9B (bank 0) | a call | 50 | ||
| $8A61 (bank 0) | a call | 49 | ||
| $8A6D (bank 0) | a call | 49 | ||
| $C226 (bank 0) | a call | 46 | ||
| $CD9A (bank 1) | a table | 45 | ||
| $C998 (bank 0) | a call | 42 | ||
| $BC27 (bank 0) | a call | 31 | ||
| $F423 (bank 1) | a table | 30 | ||
| $DA11 (bank 0) | a call | 29 | ||
| $BB38 (bank 0) | a table | 27 | ||
| $BB84 (bank 0) | a call | 27 | ||
| $BBFE (bank 0) | a call | 27 | ||
| $C363 (bank 0) | a call | 20 | ||
| $E14F (bank 0) | a call | 20 | ||
| $BDD2 (bank 0) | a table | 19 | ||
| $D464 (bank 1) | a call | 19 | ||
| $D948 (bank 0) | a call | 15 | ||
| $B273 (bank 0) | a call | 14 | ||
| $CF39 (bank 1) | a call | 8 | ||
| $CF96 (bank 1) | a call | 8 | ||
| $D446 (bank 1) | a call | 8 | ||
| $D4FA (bank 1) | a call | 8 | ||
| $F362 (bank 1) | a call | 8 | ||
| $F4A7 (bank 0) | a call | 6 | ||
| $F571 (bank 0) | a call | 6 | ||
| $CE18 (bank 1) | a table | 5 | ||
| $DB1C (bank 0) | a call | 5 | ||
| $DAB4 (bank 0) | a call | 4 | ||
| $BE02 (bank 0) | a call | 3 | ||
| $BE41 (bank 0) | a call | 3 | ||
| $91CD (bank 0) | a table | 2 | ||
| $9282 (bank 0) | a call | 2 | ||
| $9B01 (bank 0) | a table | 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 |
|---|---|---|
| $8057 (bank 0) | b0_spin_8057 | The idle spin: turns 362,815,896, turns a frame 3,374 |
| $F312 (bank 0) | b0_wait_F312 | The wait for the frame: waits on the byte at $07BB, times entered 11, turns 11, writes of it under the frame interrupt 6,162, frames in all 107,528 |
| $813D (bank 1) | b1_wait_813D | The wait for the frame: waits on the byte at $0020, times entered 12,412, turns 29,590,426, writes of it under the frame interrupt 48,232, frames in all 107,528 |
| $C07C (bank 1) | b1_wait_C07C | The wait for the frame: waits on the byte at $0020, times entered 34,791, turns 8,510,709, calls on each turn 1, writes of it under the frame interrupt 48,232, frames in all 107,528 |
| $C5DC (bank 1) | b1_wait_C5DC | The wait for the frame: waits on the byte at $0020, times entered 655, turns 2,443,491, writes of it under the frame interrupt 48,232, frames in all 107,528 |
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 |
|---|---|---|---|---|
| $8218 (bank 0) | after a call | 2 | 2 | $0770 |
| $8237 (bank 0) | after a call | 4 | 4 | $0772 |
| $856D (bank 0) | after a call | 15 | 14 | $073C |
| $92CB (bank 0) | after a call | 8 | 3 | $071F |
| $9667 (bank 0) | after a call | 26 | 4 | |
| $AEE2 (bank 0) | after a call | 4 | 4 | $0772 |
| $B04F (bank 0) | after a call | 12 | 7 | $000E |
| $B351 (bank 0) | after a call | 3 | 3 | $001D |
| $BDC0 (bank 0) | after a call | 8 | 2 | |
| $C282 (bank 0) | after a call | 7 | 1 | $0016 |
| $C892 (bank 0) | after a call | 27 | 2 | $001B |
| $C90A (bank 0) | after a call | 19 | 1 | $0016 |
| $C128 (bank 1) | after a call | 18 | 6 | $0025 |
| $C227 (bank 1) | after a call | 2 | 2 | $0026 |
| $C907 (bank 1) | after a call | 9 | 5 | $0031, $0301, $0351 |
| $CCAE (bank 1) | after a call | 19 | 13 | $0031, $03A1 |
| $CE66 (bank 1) | after a call | 6 | 3 |
The memory its routines share
918 bytes of memory were written by one routine and read by another, and 136 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 |
|---|---|---|---|
| $0030 | 80 | 4 | 1 across, 1 down |
| $0086 | 22 | 7 | 1 across |
| $00CE | 22 | 6 | 1 down |
| $0057 | 12 | 2 | 1 across |
| $002A | 9 | 11 | 1 across, 1 down |
| $00CF | 6 | 10 | 1 down |
| $0058 | 6 | 7 | 3 across |
| $0087 | 6 | 6 | 1 across |
| $00D4 | 4 | 2 | 1 down |
| $0200 | 256 | 14 | |
| $0300 | 256 | 10 | |
| $0400 | 256 | 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 |
|---|---|---|---|---|---|---|---|---|
| 9 | 6 | 6 | $002A | $002A | $00DB | $007A, $0093, $00AC, $00DB, $0430 | ||
| 22 | 9 | 16 | $0057, $0086 | $00CE | $009F, $0400, $0433 | $009F, $00B5, $0400 | $006D, $009F, $00B5, $0400, $0416, $0433 | |
| 6 | 4 | 6 | $0058 | $0016 | $0046 | $0016, $001E, $0046 | ||
| 6 | 3 | 4 | $0087 | $0016 | $0016, $006E | |||
| 6 | 4 | 7 | $00CF | $0016 | $0046 | $0016, $001E, $0046 | ||
| 4 | 3 | 3 | $00D4 | $00E0 | $00D0, $00E0 |
The 24 busiest shared bytes
| byte | reads and writes | routines writing | routines reading |
|---|---|---|---|
| $0007 | 20,830,612 | 6 | 6 |
| $0020 | 18,020,286 | 6 | 6 |
| $0000 | 8,476,945 | 6 | 6 |
| $0030 | 7,578,351 | 6 | 6 |
| $0004 | 3,208,577 | 6 | 6 |
| $0006 | 2,988,988 | 6 | 6 |
| $0037 | 2,489,461 | 6 | 6 |
| $0003 | 2,395,630 | 6 | 6 |
| $0005 | 1,985,874 | 6 | 6 |
| $0086 | 1,713,652 | 6 | 6 |
| $00CE | 1,702,344 | 6 | 6 |
| $0034 | 1,461,216 | 6 | 6 |
| $0008 | 1,328,052 | 6 | 6 |
| $006D | 1,323,356 | 6 | 6 |
| $0033 | 963,567 | 6 | 6 |
| $0032 | 917,728 | 6 | 6 |
| $0002 | 885,351 | 6 | 6 |
| $00EA | 801,697 | 6 | 5 |
| $00E9 | 800,807 | 6 | 4 |
| $006E | 719,432 | 6 | 6 |
| $071B | 518,686 | 3 | 6 |
| $071D | 518,686 | 3 | 6 |
| $00B5 | 511,129 | 6 | 6 |
| $0087 | 493,222 | 4 | 6 |
This page shows none of the game's bytes. The listing these figures were read from stays with the cartridge.