Blades of Steel (USA)
Blades of Steel (USA) is on a UxROM board with 131,072 bytes of program. A crawl of 8,000 steps from power-on kept 285 paths that found new code. Played back over 681,745 frames, they executed 31,083 bytes of it, 24 percent.
What the rules named
- The poll: 2
- The counting spin: 1
- The game inside the interrupt: 1
- The jump engine: 1
- The bank switch: 17
- The picture writer: 1
- The palette writers: 2
- The sprite writers: 6
- The scroll writer: 1
- The split: 1
- The sound driver: 1
- Where two things are compared: 17
The 453 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 |
|---|---|---|---|---|
| $C79A (bank 7) | b7_engine_C79A | a call | 2,875,851 | The jump engine: tables 28, jumps through them 2,875,839 |
| $81B2 (bank 0) | b0_sprites_81B2 | a call | 2,820,771 | The sprite writers: frames it ran in 378,767, writes to the sprite page 52,228,127 |
| $C2F1 (bank 7) | b7_bank_C2F1 | a call | 1,398,056 | The bank switch: writes 1,397,304, in the blank 767,029, while drawing 630,275 |
| $C61C (bank 7) | b7_poll_C61C | a call | 940,214 | The poll: port $4016, reads a frame 16, strobes a frame 4 The poll: port $4017, reads a frame 16, strobes a frame 4 |
| $854C (bank 6) | b6_sound_854C | a call | 650,213 | The sound driver: frames it ran in 287,692, writes 757,280 |
| $B47C (bank 0) | b0_compare_B47C | a call | 613,418 | Where two things are compared: instructions 1, pairs of bytes 39, bytes in all 22, times compared 223,322, Y positions at $0099,$03CF,$03D0,$03D1,$03D2,$03D3,$03D4,$03D7,$03D8,$03D9,$03DA,$0410 |
| $C022 (bank 7) | b7_palette_C022 | a call | 482,715 | The palette writers: frames it ran in 472,081, writes 377,084 |
| $C175 (bank 7) | b7_drain_C175 | a call | 482,715 | The palette writers: frames it ran in 472,081, writes 5,199,914 The picture writer: frames it ran in 472,081, writes 5,788,930, in the blank 5,788,930, while drawing 0 |
| $C204 (bank 7) | b7_nmi | each frame (NMI) | 473,028 | The game inside the interrupt: frames it ran in 473,174, frames in all 513,325, the spin is at $C1FB |
| $C2A8 (bank 7) | b7_scroll_C2A8 | a call | 470,234 | The scroll writer: frames it ran in 468,989, writes in the blank 939,559 |
| $8227 (bank 0) | b0_compare_8227 | a call | 469,957 | Where two things are compared: instructions 2, pairs of bytes 335, bytes in all 38, times compared 5,018,065, Y positions at $0042,$0099,$0312,$0313,$0314,$0315,$0316,$0317,$0318,$0319,$031A,$031B |
| $8001 (bank 0) | b0_sprites_8001 | a call | 469,951 | The sprite writers: frames it ran in 471,161, writes to the sprite page 15,909,923 |
| $B1B0 (bank 0) | b0_compare_B1B0 | a call | 338,200 | Where two things are compared: instructions 2, pairs of bytes 125, bytes in all 56, times compared 405,125, X positions at $0004,$0040,$0096,$0324,$0325,$0326,$0327,$0328,$0329,$032A,$032B,$032C, Y positions at $0042,$0099,$0312,$0313,$0314,$0315,$0316,$0317,$0318,$0319,$031A,$031B |
| $A8A6 (bank 0) | b0_dispatch_A8A6 | a table | 300,708 | Where two things are compared: instructions 1, pairs of bytes 15, bytes in all 16, times compared 131,980, X positions at $0004,$0096,$03B2,$03B3,$03B4,$0478,$0479,$047A,$047B,$047C,$047D,$047E |
| $C2F7 (bank 7) | b7_bank_C2F7 | a call | 286,087 | The bank switch: writes 285,966, in the blank 6,387, while drawing 279,579 |
| $C749 (bank 7) | b7_compare_C749 | a call | 236,546 | Where two things are compared: instructions 2, pairs of bytes 89, bytes in all 32, times compared 2,398,090, X positions at $03A9,$03AF,$03B0,$0479,$047F,$0480, Y positions at $0099,$03CF,$03D0,$03D1,$03D2,$03D3,$03D4,$03D5,$03D6,$03D7,$03D8,$03D9 |
| $EAEC (bank 7) | b7_compare_EAEC | a call | 219,438 | Where two things are compared: instructions 2, pairs of bytes 279, bytes in all 54, times compared 388,062, X positions at $0004,$0096,$0325,$032A,$03A8,$03A9,$03AA,$03AB,$03AC,$03AD,$03AE,$03AF, Y positions at $0099,$03CF,$03D0,$03D1,$03D2,$03D3,$03D4,$03D5,$03D6,$03D7,$03D8,$03D9 |
| $E8DF (bank 7) | b7_compare_E8DF | a call | 203,007 | Where two things are compared: instructions 2, pairs of bytes 290, bytes in all 55, times compared 284,556, X positions at $0004,$0096,$03A8,$03A9,$03AA,$03AB,$03AC,$03AD,$03AE,$03AF,$03B0,$03B1, Y positions at $0099,$03CF,$03D0,$03D1,$03D2,$03D3,$03D4,$03D5,$03D6,$03D7,$03D8,$03D9 |
| $80C0 (bank 0) | b0_sprites_80C0 | a call | 199,385 | The sprite writers: frames it ran in 199,385, writes to the sprite page 3,237,495 |
| $CD6A (bank 7) | b7_dispatch_CD6A | a table | 129,728 | The bank switch: writes 129,728, in the blank 0, while drawing 129,728 |
| $C41C (bank 7) | b7_bank_C41C | a call | 127,998 | The bank switch: writes 127,932, in the blank 0, while drawing 127,932 |
| $C3E5 (bank 7) | b7_bank_C3E5 | a call | 125,444 | The bank switch: writes 125,442, in the blank 0, while drawing 125,442 |
| $914C (bank 0) | b0_compare_914C | a call | 121,675 | Where two things are compared: instructions 4, pairs of bytes 324, bytes in all 54, times compared 1,193,201, X positions at $0004,$0040,$0325,$0326,$0327,$0328,$0329,$032A,$032B,$032C,$032D,$032E, Y positions at $0042,$0313,$0314,$0315,$0316,$0317,$0318,$0319,$031A,$031B,$031C,$03CF |
| $C389 (bank 7) | b7_bank_C389 | a call | 121,675 | The bank switch: writes 121,666, in the blank 0, while drawing 121,666 |
| $9C06 (bank 0) | b0_compare_9C06 | a call | 113,960 | Where two things are compared: instructions 2, pairs of bytes 7, bytes in all 9, times compared 4,622, X positions at $0096,$03B3,$0480, Y positions at $0099,$03D4,$03D7,$03D9,$03DA,$0460 |
| $C4CD (bank 7) | b7_dispatch_C4CD | a table | 112,795 | The bank switch: writes 93, in the blank 0, while drawing 93 |
| $82AD (bank 0) | b0_sprites_82AD | a call | 88,984 | The sprite writers: frames it ran in 68,322, writes to the sprite page 1,272,765 |
| $C39F (bank 7) | b7_bank_C39F | a call | 87,468 | The bank switch: writes 87,468, in the blank 0, while drawing 87,468 |
| $B192 (bank 0) | b0_compare_B192 | a call | 69,073 | Where two things are compared: instructions 5, pairs of bytes 22, bytes in all 17, times compared 20,148, X positions at $0040,$0096,$0324,$0327,$0328,$0329,$03B2,$03B3, Y positions at $0042,$0099,$0312,$0315,$0317,$03D2,$03D4,$03D9,$03DA |
| $99D2 (bank 0) | b0_compare_99D2 | a call | 61,471 | Where two things are compared: instructions 2, pairs of bytes 14, bytes in all 23, times compared 26,567, X positions at $03B2,$03B3,$047D,$047E, Y positions at $03CF,$03D0,$03D1,$03D2,$03D3,$03D4,$03D7,$03D8,$03D9,$03DA,$045E,$045F |
| $9A10 (bank 0) | b0_compare_9A10 | a call | 56,981 | Where two things are compared: instructions 1, pairs of bytes 28, bytes in all 11, times compared 42,859, X positions at $0004,$0478,$0479,$047A,$047B,$047C,$047D,$047E,$047F,$0480,$0481 |
| $EB51 (bank 7) | b7_compare_EB51 | a call | 45,710 | Where two things are compared: instructions 3, pairs of bytes 27, bytes in all 47, times compared 65,192, X positions at $0004,$0096,$03A8,$03A9,$03AA,$03AB,$03AC,$03AD,$03AE,$03AF,$03B0,$03B1, Y positions at $0099,$03CF,$03D0,$03D1,$03D2,$03D3,$03D4,$03D5,$03D6,$03D7,$03D8,$03DB |
| $C512 (bank 7) | b7_dispatch_C512 | a table | 44,953 | The bank switch: writes 44,765, in the blank 182, while drawing 44,583 |
| $C42D (bank 7) | b7_bank_C42D | a call | 38,853 | The bank switch: writes 38,840, in the blank 11,412, while drawing 27,428 |
| $811A (bank 0) | b0_dispatch_811A | a table | 37,486 | The sprite writers: frames it ran in 37,486, writes to the sprite page 1,199,551 |
| $8101 (bank 1) | b1_split_8101 | a call | 26,291 | The split: frames it ran in 26,576, scroll writes while drawing 52,556, status reads while drawing 13,661,945 |
| $C3CB (bank 7) | b7_bank_C3CB | a call | 20,154 | The bank switch: writes 20,154, in the blank 0, while drawing 20,154 |
| $EAB9 (bank 7) | b7_compare_EAB9 | a call | 18,229 | Where two things are compared: instructions 1, pairs of bytes 74, bytes in all 31, times compared 4,917, X positions at $0096,$047A,$047B,$047C,$047D,$047E,$047F,$0480,$0481, Y positions at $0099,$03CF,$03D0,$03D1,$03D2,$03D3,$03D4,$03D5,$03D6,$03D7,$03D8,$03D9 |
| $C3F0 (bank 7) | b7_bank_C3F0 | a call | 15,531 | The bank switch: writes 15,531, in the blank 1, while drawing 15,530 |
| $C3FB (bank 7) | b7_bank_C3FB | a call | 3,240 | The bank switch: writes 3,239, in the blank 0, while drawing 3,239 |
| $E5B5 (bank 7) | b7_compare_E5B5 | a call | 1,460 | Where two things are compared: instructions 2, pairs of bytes 91, bytes in all 45, times compared 2,535, X positions at $0004,$0096,$03B2,$03B3,$03B4,$0478,$0479,$047A,$047B,$047C,$047D,$047E, Y positions at $0099,$03CF,$03D0,$03D1,$03D2,$03D3,$03D4,$03D5,$03D7,$03D8,$03D9,$03DA |
| $EA14 (bank 7) | b7_compare_EA14 | a call | 1,409 | Where two things are compared: instructions 3, pairs of bytes 89, bytes in all 37, times compared 2,868, X positions at $0004,$03B2,$03B3,$0478,$0479,$047A,$047B,$047C,$047D,$047E,$047F,$0480, Y positions at $03CF,$03D0,$03D1,$03D2,$03D3,$03D4,$03D5,$03D6,$03D7,$03D8,$03D9,$03DA |
| $C818 (bank 7) | b7_bank_C818 | a call | 1,397 | The bank switch: writes 1,396, in the blank 10, while drawing 1,386 |
| $C2DE (bank 7) | b7_sprites_C2DE | a call | 570 | The sprite writers: frames it ran in 570, writes to the sprite page 72,960 |
| $C816 (bank 7) | b7_bank_C816 | a call | 483 | The bank switch: writes 483, in the blank 0, while drawing 483 |
| $C37E (bank 7) | b7_bank_C37E | a call | 234 | The bank switch: writes 234, in the blank 0, while drawing 234 |
| $C373 (bank 7) | b7_bank_C373 | a call | 231 | The bank switch: writes 231, in the blank 138, while drawing 93 |
| $9313 (bank 0) | b0_compare_9313 | a call | 171 | Where two things are compared: instructions 1, pairs of bytes 1, bytes in all 2, times compared 110, Y positions at $0410,$0411 |
| $E095 (bank 7) | a call | 3,683,068 | ||
| $DE1E (bank 7) | a call | 3,068,360 | ||
| $D7D2 (bank 7) | a call | 2,671,070 | ||
| $D8F7 (bank 7) | a call | 2,671,070 | ||
| $EBED (bank 7) | a call | 2,072,958 | ||
| $E053 (bank 7) | a call | 2,058,970 | ||
| $E0B5 (bank 7) | a call | 2,058,970 | ||
| $D9CE (bank 7) | a call | 1,529,480 | ||
| $890A (bank 6) | a call | 1,300,107 | ||
| $DAFB (bank 7) | a call | 1,147,813 | ||
| $886A (bank 6) | a call | 1,113,829 | ||
| $82BD (bank 6) | a call | 1,110,842 | ||
| $C786 (bank 7) | a call | 615,826 | ||
| $C7AF (bank 7) | a call | 593,658 | ||
| $A569 (bank 0) | a call | 570,795 | ||
| $B390 (bank 0) | a call | 534,214 | ||
| $85A5 (bank 6) | a call | 531,386 | ||
| $B453 (bank 0) | a call | 491,679 | ||
| $C956 (bank 7) | a call | 482,431 | ||
| $8283 (bank 6) | a call | 472,844 | ||
| $81C3 (bank 6) | a call | 472,843 | ||
| $823C (bank 6) | a call | 472,841 | ||
| $9D6F (bank 0) | a call | 470,988 | ||
| $C5E2 (bank 7) | a call | 470,122 | ||
| $C464 (bank 7) | a call | 469,996 | ||
| $B562 (bank 0) | a call | 467,336 | ||
| $8071 (bank 0) | a call | 401,198 | ||
| $807D (bank 0) | a call | 401,198 | ||
| $80A3 (bank 0) | a call | 401,198 | ||
| $A5B2 (bank 0) | a table | 387,942 | ||
| $873E (bank 6) | a call | 367,734 | ||
| $865F (bank 6) | a call | 359,155 | ||
| $A882 (bank 0) | a call | 347,423 | ||
| $AB4F (bank 0) | a call | 300,708 | ||
| $9DB6 (bank 0) | a table | 268,521 | ||
| $8002 (bank 5) | a call | 257,726 | ||
| $86F3 (bank 6) | a call | 227,590 | ||
| $813A (bank 1) | a call | 209,143 | ||
| $817A (bank 1) | a call | 209,143 | ||
| $E8A3 (bank 7) | a call | 203,007 | ||
| $8535 (bank 1) | a call | 200,312 | ||
| $956B (bank 0) | a call | 192,113 | ||
| $DDF1 (bank 7) | a call | 188,841 | ||
| $A03C (bank 0) | a table | 175,664 | ||
| $893D (bank 6) | a call | 160,346 | ||
| $E71B (bank 7) | a call | 156,518 | ||
| $ADB7 (bank 0) | a call | 149,360 | ||
| $85FA (bank 6) | a call | 148,983 | ||
| $A5E9 (bank 0) | a call | 135,070 | ||
| $CD77 (bank 7) | a call | 129,728 | ||
| $C641 (bank 7) | a call | 127,382 | ||
| $AF53 (bank 4) | a call | 125,444 | ||
| $CF62 (bank 7) | a table | 121,733 | ||
| $D5D9 (bank 7) | a call | 121,733 | ||
| $94BE (bank 0) | a call | 121,675 | ||
| $94C4 (bank 0) | a call | 121,675 | ||
| $9CC0 (bank 0) | a call | 121,675 | ||
| $ACE1 (bank 0) | a call | 121,675 | ||
| $ACFC (bank 0) | a call | 121,675 | ||
| $ADB3 (bank 0) | a call | 121,675 | ||
| $ADEA (bank 0) | a call | 121,675 | ||
| $AFA5 (bank 0) | a call | 121,675 | ||
| $B019 (bank 0) | a call | 121,675 | ||
| $B01F (bank 0) | a call | 121,675 | ||
| $B12A (bank 0) | a call | 121,675 | ||
| $C6AD (bank 7) | a call | 121,675 | ||
| $D65F (bank 7) | a call | 121,675 | ||
| $D677 (bank 7) | a call | 121,675 | ||
| $E252 (bank 7) | a call | 121,675 | ||
| $E7B7 (bank 7) | a call | 121,675 | ||
| $9CD1 (bank 0) | a call | 117,747 | ||
| $9CFC (bank 0) | a call | 117,747 | ||
| $9D13 (bank 0) | a call | 117,747 | ||
| $A55A (bank 0) | a call | 114,159 | ||
| $CE3A (bank 7) | a call | 114,159 | ||
| $CCA2 (bank 7) | a call | 112,702 | ||
| $8537 (bank 1) | a call | 110,867 | ||
| $A5F9 (bank 0) | a table | 98,953 | ||
| $E1E5 (bank 7) | a call | 87,475 | ||
| $8681 (bank 1) | a call | 87,468 | ||
| $E73C (bank 7) | a call | 87,468 | ||
| $DCB8 (bank 7) | a call | 72,866 | ||
| $EAD2 (bank 7) | a call | 70,246 | ||
| $DB5C (bank 7) | a call | 70,184 | ||
| $9674 (bank 0) | a table | 69,908 | ||
| $9A60 (bank 0) | a call | 69,908 | ||
| $96AC (bank 0) | a table | 69,224 | ||
| $9AAE (bank 0) | a table | 62,625 | ||
| $9AC6 (bank 0) | a table | 62,088 | ||
| $97BB (bank 0) | a call | 61,471 | ||
| $8555 (bank 1) | a call | 61,044 | ||
| $A57F (bank 0) | a table | 59,531 | ||
| $9CF3 (bank 0) | a table | 58,973 | ||
| $9CEA (bank 0) | a table | 58,774 | ||
| $C958 (bank 7) | a call | 56,529 | ||
| $8001 (bank 1) | a call | 52,556 | ||
| $8123 (bank 1) | a call | 52,556 | ||
| $9BBC (bank 0) | a table | 51,872 | ||
| $9E2B (bank 1) | a call | 51,000 | ||
| $A64D (bank 0) | a call | 50,342 | ||
| $8532 (bank 1) | a call | 49,471 | ||
| $857F (bank 1) | a call | 48,491 | ||
| $A597 (bank 0) | a table | 48,275 | ||
| $A8C3 (bank 0) | a table | 46,485 | ||
| $A8D0 (bank 0) | a call | 46,485 | ||
| $871C (bank 1) | a call | 44,771 | ||
| $8EAA (bank 1) | a call | 44,771 | ||
| $A647 (bank 0) | a table | 44,276 | ||
| $AE3F (bank 0) | a call | 42,375 | ||
| $8524 (bank 1) | a call | 41,204 | ||
| $8512 (bank 1) | a call | 41,196 | ||
| $C107 (bank 7) | a call | 39,720 | ||
| $C48D (bank 7) | a table | 39,151 | ||
| $800C (bank 1) | a call | 38,853 | ||
| $84F1 (bank 6) | a call | 38,312 | ||
| $A627 (bank 0) | a table | 37,183 | ||
| $E57A (bank 7) | a call | 34,858 | ||
| $CEFF (bank 7) | a table | 34,840 | ||
| $E6C8 (bank 7) | a call | 34,552 | ||
| $E6F4 (bank 7) | a call | 34,552 | ||
| $E450 (bank 7) | a call | 34,516 | ||
| $E2CE (bank 7) | a call | 34,511 | ||
| $E31F (bank 7) | a call | 34,506 | ||
| $CEB6 (bank 7) | a table | 32,326 | ||
| $C8FD (bank 7) | a call | 31,264 | ||
| $C95A (bank 7) | a call | 31,012 | ||
| $86FE (bank 6) | a call | 28,327 | ||
| $A619 (bank 0) | a table | 27,428 | ||
| $A5DA (bank 0) | a call | 27,014 | ||
| $9D94 (bank 0) | a table | 26,803 | ||
| $8578 (bank 1) | a call | 26,132 | ||
| $8F2E (bank 1) | a table | 23,349 | ||
| $856F (bank 1) | a call | 23,339 | ||
| $E897 (bank 7) | a call | 23,062 | ||
| $E8B0 (bank 7) | a call | 23,062 | ||
| $AA42 (bank 0) | a call | 21,711 | ||
| $8EF6 (bank 1) | a table | 21,055 | ||
| $CE61 (bank 7) | a table | 20,756 | ||
| $AEF1 (bank 0) | a table | 20,536 | ||
| $8001 (bank 2) | a call | 20,154 | ||
| $AA9B (bank 0) | a table | 19,987 | ||
| $AEF2 (bank 0) | a call | 19,750 | ||
| $9FEC (bank 1) | a call | 18,868 | ||
| $8E10 (bank 1) | a call | 18,691 | ||
| $8803 (bank 1) | a table | 18,231 | ||
| $EAFB (bank 7) | a call | 18,229 | ||
| $835C (bank 1) | a call | 16,652 | ||
| $A026 (bank 1) | a call | 15,670 | ||
| $9CC4 (bank 1) | a call | 15,531 | ||
| $A68F (bank 0) | a call | 15,460 | ||
| $EC1E (bank 7) | a call | 15,375 | ||
| $C4B5 (bank 7) | a call | 14,674 | ||
| $C4A9 (bank 7) | a table | 14,392 | ||
| $C5C8 (bank 7) | a call | 14,392 | ||
| $C15D (bank 7) | a call | 14,220 | ||
| $8048 (bank 1) | a table | 13,885 | ||
| $82A8 (bank 1) | a call | 13,859 | ||
| $9F30 (bank 1) | a call | 13,240 | ||
| $99AA (bank 0) | a call | 12,907 | ||
| $A9BA (bank 0) | a table | 12,731 | ||
| $871D (bank 6) | a call | 12,676 | ||
| $A639 (bank 0) | a table | 12,578 | ||
| $C4E4 (bank 7) | a table | 12,052 | ||
| $C114 (bank 7) | a call | 11,860 | ||
| $8573 (bank 6) | a call | 11,748 | ||
| $85AD (bank 1) | a call | 11,573 | ||
| $CD16 (bank 7) | a table | 11,507 | ||
| $819B (bank 6) | a call | 10,658 | ||
| $8795 (bank 6) | a table | 10,371 | ||
| $C304 (bank 7) | a call | 10,129 | ||
| $9EB1 (bank 1) | a call | 9,480 | ||
| $9EE9 (bank 1) | a call | 9,480 | ||
| $803F (bank 6) | a call | 9,268 | ||
| $80EA (bank 1) | a table | 9,040 | ||
| $88CF (bank 1) | a table | 8,809 | ||
| $C31F (bank 7) | a call | 8,809 | ||
| $E891 (bank 7) | a call | 8,595 | ||
| $E8B8 (bank 7) | a call | 8,595 | ||
| $AA22 (bank 0) | a table | 8,527 | ||
| $9D81 (bank 1) | a table | 8,498 | ||
| $A040 (bank 1) | a call | 8,374 | ||
| $8C2D (bank 1) | a table | 7,648 | ||
| $CE43 (bank 7) | a call | 7,631 | ||
| $C76C (bank 7) | a call | 7,392 | ||
| $E661 (bank 7) | a call | 7,392 | ||
| $83DD (bank 1) | a call | 6,929 | ||
| $8095 (bank 1) | a table | 6,826 | ||
| $A3FD (bank 4) | a call | 6,430 | ||
| $87D0 (bank 6) | a table | 6,310 | ||
| $EC21 (bank 7) | a call | 6,238 | ||
| $985A (bank 0) | a call | 5,974 | ||
| $888E (bank 6) | a table | 5,965 | ||
| $8DE5 (bank 1) | a call | 5,630 | ||
| $8D79 (bank 1) | a call | 5,485 | ||
| $95B3 (bank 0) | a table | 4,968 | ||
| $CF56 (bank 7) | a call | 4,963 | ||
| $9EFB (bank 1) | a call | 4,740 | ||
| $9F36 (bank 1) | a call | 4,740 | ||
| $A6C3 (bank 0) | a table | 4,578 | ||
| $80BF (bank 1) | a table | 4,544 | ||
| $A606 (bank 4) | a call | 4,386 | ||
| $A471 (bank 4) | a table | 4,368 | ||
| $A480 (bank 4) | a call | 4,368 | ||
| $A5BE (bank 4) | a call | 4,368 | ||
| $A718 (bank 4) | a call | 4,368 | ||
| $C16A (bank 7) | a call | 4,345 | ||
| $883C (bank 6) | a table | 4,307 | ||
| $80D0 (bank 1) | a table | 4,260 | ||
| $8C7B (bank 1) | a table | 3,877 | ||
| $846E (bank 1) | a call | 3,756 | ||
| $E978 (bank 7) | a call | 3,720 | ||
| $CFFF (bank 7) | a table | 3,709 | ||
| $D013 (bank 7) | a call | 3,709 | ||
| $8871 (bank 1) | a table | 3,404 | ||
| $A318 (bank 4) | a call | 3,240 | ||
| $D35D (bank 7) | a table | 3,240 | ||
| $A3B1 (bank 4) | a table | 3,215 | ||
| $A847 (bank 4) | a call | 3,215 | ||
| $88DB (bank 6) | a call | 3,210 | ||
| $88E5 (bank 6) | a table | 3,210 | ||
| $885D (bank 6) | a call | 3,094 | ||
| $A680 (bank 0) | a call | 3,092 | ||
| $87A2 (bank 1) | a table | 3,043 | ||
| $8964 (bank 1) | a table | 2,957 | ||
| $89B0 (bank 1) | a table | 2,880 | ||
| $879B (bank 6) | a table | 2,851 | ||
| $88F3 (bank 1) | a table | 2,819 | ||
| $C2B5 (bank 7) | a call | 2,793 | ||
| $D744 (bank 7) | a call | 2,772 | ||
| $88CB (bank 6) | a table | 2,740 | ||
| $8813 (bank 1) | a table | 2,686 | ||
| $A0B5 (bank 1) | a call | 2,672 | ||
| $C2C8 (bank 7) | a call | 2,581 | ||
| $C298 (bank 7) | a call | 2,580 | ||
| $92F7 (bank 0) | a call | 2,540 | ||
| $D76D (bank 7) | a call | 2,532 | ||
| $960C (bank 0) | a table | 2,244 | ||
| $AEB0 (bank 0) | a table | 2,244 | ||
| $E637 (bank 7) | a call | 2,223 | ||
| $B597 (bank 0) | a call | 2,116 | ||
| $87F8 (bank 6) | a table | 2,109 | ||
| $AAC0 (bank 0) | a table | 2,070 | ||
| $B7F8 (bank 1) | a call | 2,069 | ||
| $AACC (bank 0) | a table | 2,068 | ||
| $9E2D (bank 1) | a call | 1,960 | ||
| $87B4 (bank 6) | a table | 1,944 | ||
| $A544 (bank 4) | a table | 1,857 | ||
| $E69E (bank 7) | a call | 1,848 | ||
| $8C3A (bank 1) | a table | 1,820 | ||
| $8C58 (bank 1) | a table | 1,813 | ||
| $887C (bank 1) | a table | 1,705 | ||
| $9CF0 (bank 1) | a table | 1,677 | ||
| $9D15 (bank 1) | a table | 1,677 | ||
| $9DBC (bank 1) | a table | 1,651 | ||
| $9DE3 (bank 1) | a table | 1,644 | ||
| $B32B (bank 0) | a call | 1,634 | ||
| $87AB (bank 1) | a table | 1,611 | ||
| $992D (bank 0) | a call | 1,602 | ||
| $8893 (bank 1) | a table | 1,546 | ||
| $B0FF (bank 0) | a call | 1,539 | ||
| $E974 (bank 7) | a call | 1,490 | ||
| $87C6 (bank 1) | a table | 1,432 | ||
| $881C (bank 1) | a table | 1,422 | ||
| $8208 (bank 6) | a call | 1,383 | ||
| $88DE (bank 6) | a call | 1,382 | ||
| $A06F (bank 1) | a call | 1,336 | ||
| $A4B9 (bank 4) | a table | 1,287 | ||
| $8833 (bank 1) | a table | 1,264 | ||
| $B0C6 (bank 0) | a call | 1,220 | ||
| $A447 (bank 4) | a table | 1,152 | ||
| $B2F6 (bank 0) | a call | 1,054 | ||
| $AF84 (bank 0) | a call | 1,038 | ||
| $88F1 (bank 6) | a call | 942 | ||
| $8003 (bank 6) | a call | 939 | ||
| $C340 (bank 7) | a call | 939 | ||
| $D0C6 (bank 7) | a table | 934 | ||
| $B312 (bank 0) | a call | 917 | ||
| $E70C (bank 7) | a call | 917 | ||
| $9F81 (bank 1) | a call | 888 | ||
| $A7A4 (bank 4) | a table | 828 | ||
| $884B (bank 1) | a table | 768 | ||
| $D627 (bank 7) | a call | 713 | ||
| $9426 (bank 0) | a call | 684 | ||
| $968C (bank 0) | a table | 684 | ||
| $A901 (bank 0) | a table | 652 | ||
| $AF91 (bank 0) | a call | 622 | ||
| $A435 (bank 4) | a table | 602 | ||
| $8D8A (bank 1) | a call | 583 | ||
| $A6A1 (bank 0) | a table | 581 | ||
| $A58C (bank 4) | a table | 579 | ||
| $E9BC (bank 7) | a call | 563 | ||
| $9AB8 (bank 0) | a table | 537 | ||
| $C225 (bank 7) | a call | 514 | ||
| $EC72 (bank 7) | a call | 501 | ||
| $9E3F (bank 1) | a call | 490 | ||
| $B83C (bank 1) | a call | 458 | ||
| $B844 (bank 1) | a call | 458 | ||
| $C68C (bank 7) | a call | 457 | ||
| $8E02 (bank 1) | a call | 433 | ||
| $E89D (bank 7) | a call | 422 | ||
| $E8CA (bank 7) | a call | 422 | ||
| $C5D9 (bank 7) | a call | 418 | ||
| $85E9 (bank 1) | a call | 416 | ||
| $87EF (bank 6) | a table | 414 | ||
| $85C0 (bank 1) | a call | 413 | ||
| $A57C (bank 4) | a table | 413 | ||
| $E6FA (bank 7) | a call | 375 | ||
| $D6C1 (bank 7) | a call | 371 | ||
| $A24A (bank 0) | a call | 355 | ||
| $A2BF (bank 0) | a call | 355 | ||
| $AF7F (bank 0) | a call | 342 | ||
| $8D46 (bank 1) | a call | 322 | ||
| $C6E3 (bank 7) | a call | 309 | ||
| $801D (bank 1) | a table | 298 | ||
| $8D57 (bank 1) | a call | 298 | ||
| $C7C5 (bank 7) | a call | 298 | ||
| $C7D1 (bank 7) | a call | 298 | ||
| $C7D5 (bank 7) | a call | 298 | ||
| $9581 (bank 0) | a table | 292 | ||
| $A45F (bank 4) | a table | 288 | ||
| $A7AD (bank 4) | a table | 288 | ||
| $C1C5 (bank 7) | power-on | 285 | ||
| $C28D (bank 7) | a call | 285 | ||
| $D5FF (bank 7) | a call | 234 | ||
| $D60E (bank 7) | a call | 234 | ||
| $CCD3 (bank 7) | a table | 231 | ||
| $CCE8 (bank 7) | a call | 231 | ||
| $D72D (bank 7) | a call | 231 | ||
| $A88E (bank 0) | a table | 230 | ||
| $A8F0 (bank 0) | a table | 230 | ||
| $AC1F (bank 0) | a call | 230 | ||
| $AC31 (bank 0) | a call | 230 | ||
| $AC41 (bank 0) | a call | 230 | ||
| $AC79 (bank 0) | a call | 230 | ||
| $A86F (bank 0) | a call | 227 | ||
| $CE97 (bank 7) | a table | 215 | ||
| $9478 (bank 0) | a call | 211 | ||
| $97F0 (bank 0) | a call | 211 | ||
| $B575 (bank 0) | a call | 211 | ||
| $E206 (bank 7) | a call | 211 | ||
| $EA04 (bank 7) | a call | 211 | ||
| $AA89 (bank 0) | a table | 210 | ||
| $E1E9 (bank 7) | a call | 207 | ||
| $A87E (bank 0) | a call | 206 | ||
| $B0C1 (bank 0) | a call | 205 | ||
| $95BA (bank 0) | a table | 204 | ||
| $C66C (bank 7) | a call | 203 | ||
| $8ED0 (bank 1) | a table | 196 | ||
| $873C (bank 1) | a table | 182 | ||
| $C674 (bank 7) | a call | 182 | ||
| $93E2 (bank 0) | a call | 181 | ||
| $B588 (bank 0) | a call | 173 | ||
| $8EFF (bank 1) | a table | 171 | ||
| $B344 (bank 0) | a call | 171 | ||
| $A52C (bank 4) | a table | 163 | ||
| $946F (bank 0) | a call | 159 | ||
| $88AB (bank 1) | a table | 153 | ||
| $88DC (bank 1) | a table | 153 | ||
| $E1F1 (bank 7) | a call | 143 | ||
| $8CB1 (bank 1) | a table | 138 | ||
| $C68E (bank 7) | a call | 138 | ||
| $D6B6 (bank 7) | a call | 138 | ||
| $B593 (bank 0) | a call | 136 | ||
| $9CDB (bank 1) | a table | 129 | ||
| $9D2A (bank 1) | a table | 129 | ||
| $9FF7 (bank 1) | a call | 129 | ||
| $D6D6 (bank 7) | a call | 129 | ||
| $D6F9 (bank 7) | a call | 129 | ||
| $D6A6 (bank 7) | a call | 127 | ||
| $D715 (bank 7) | a call | 127 | ||
| $9DF0 (bank 1) | a table | 126 | ||
| $92EA (bank 0) | a call | 125 | ||
| $D6EB (bank 7) | a call | 125 | ||
| $D472 (bank 7) | a table | 114 | ||
| $B78E (bank 2) | a call | 93 | ||
| $CC8F (bank 7) | a call | 93 | ||
| $CD63 (bank 7) | a call | 92 | ||
| $A5A5 (bank 4) | a call | 88 | ||
| $A4B0 (bank 4) | a table | 69 | ||
| $A5E4 (bank 4) | a call | 43 | ||
| $A733 (bank 4) | a call | 40 | ||
| $92DD (bank 0) | a call | 28 | ||
| $A40D (bank 4) | a table | 20 | ||
| $A77A (bank 4) | a table | 18 | ||
| $A24D (bank 0) | a call | 16 | ||
| $B351 (bank 0) | a call | 16 | ||
| $C70B (bank 7) | a call | 16 | ||
| $C726 (bank 7) | a call | 16 | ||
| $9409 (bank 0) | a call | 14 | ||
| $E624 (bank 7) | a call | 13 | ||
| $A325 (bank 4) | a table | 11 | ||
| $A350 (bank 4) | a table | 11 | ||
| $C34B (bank 7) | a call | 11 | ||
| $D601 (bank 7) | a call | 11 | ||
| $AADF (bank 0) | a table | 7 | ||
| $8909 (bank 6) | a table | 4 | ||
| $A3C2 (bank 4) | a table | 3 | ||
| $A871 (bank 0) | a call | 3 | ||
| $B0D4 (bank 0) | a call | 3 | ||
| $C6E7 (bank 7) | a call | 3 | ||
| $E9B6 (bank 7) | a call | 3 | ||
| $AB01 (bank 0) | a table | 2 | ||
| $AB0C (bank 0) | a table | 1 | ||
| $AE5C (bank 0) | a table | 1 | ||
| $D693 (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 |
|---|---|---|
| $C1FB (bank 7) | b7_spin_C1FB | The counting spin: counts in the byte at $0024, turns 541,600,089, turns a frame 1,055, reads of it from outside the loop 3,007 |
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 |
|---|---|---|---|---|
| $8112 (bank 0) | after a call | 1 | 1 | $0036 |
| $957B (bank 0) | after a call | 3 | 3 | $0368, $0367 |
| $9604 (bank 0) | after a call | 4 | 4 | |
| $9688 (bank 0) | after a call | 2 | 2 | $036C, $0368, $0367, $036A |
| $9AB4 (bank 0) | after a call | 2 | 2 | $036C, $036D, $0367, $036B |
| $9CE6 (bank 0) | after a call | 2 | 2 | |
| $9D8E (bank 0) | after a call | 3 | 3 | |
| $A56F (bank 0) | after a call | 8 | 8 | $0367, $0369, $036B, $036D |
| $A5EF (bank 0) | after a call | 5 | 5 | $0367, $0369, $036B, $036D |
| $A695 (bank 0) | after a call | 6 | 6 | $0368, $036A, $036C, $036E |
| $A888 (bank 0) | after a call | 3 | 3 | $0373 |
| $A8D6 (bank 0) | after a call | 13 | 11 | $0491 |
| $AE42 (bank 0) | after a call | 13 | 4 | $049F, $04A4, $04A0, $04A3 |
| $8011 (bank 1) | after a call | 6 | 6 | $0080 |
| $8724 (bank 1) | after a call | 11 | 8 | $0060 |
| $87A7 (bank 1) | after a call | 2 | 2 | $0061 |
| $8818 (bank 1) | after a call | 2 | 2 | $0061 |
| $8876 (bank 1) | after a call | 3 | 3 | $0061 |
| $88D4 (bank 1) | after a call | 4 | 4 | $0061 |
| $8C32 (bank 1) | after a call | 4 | 4 | $0061 |
| $8EC8 (bank 1) | after a call | 4 | 4 | $0367 |
| $9CC9 (bank 1) | after a call | 8 | 8 | $0066 |
| $A31D (bank 4) | after a call | 4 | 4 | $0080 |
| $A403 (bank 4) | after a call | 5 | 5 | $0640, $0641 |
| $A4A4 (bank 4) | after a call | 6 | 6 | $064C, $064D |
| $A774 (bank 4) | after a call | 3 | 3 | $0656, $0657 |
| $876F (bank 6) | through a pointer | 19 | 8 | |
| $88BD (bank 6) | through a pointer | 7 | 3 | |
| $C47A (bank 7) | after a call | 5 | 5 | $0018 |
| $CCAB (bank 7) | after a call | 19 | 12 | $0030 |
The memory its routines share
790 bytes of memory were written by one routine and read by another, and 159 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 |
|---|---|---|---|
| $0000 | 240 | 2 | 1 across, 1 down |
| $03A8 | 13 | 54 | 11 across |
| $03CF | 13 | 53 | 11 down |
| $0410 | 13 | 27 | 2 down |
| $0478 | 13 | 18 | 11 across |
| $045E | 13 | 17 | 11 down |
| $0312 | 13 | 5 | 1 down |
| $0094 | 13 | 2 | 1 across, 1 down |
| $0324 | 13 | 2 | 1 across |
| $0325 | 12 | 8 | 10 across |
| $0313 | 12 | 7 | 12 down |
| $059E | 2 | 8 | 2 down |
| $0598 | 2 | 6 | 2 across |
| $0004 | 2 | 4 | 1 across |
| $03B2 | 2 | 1 | 2 across |
| $03D9 | 2 | 1 | 2 down |
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 |
|---|---|---|---|---|---|---|---|---|
| 13 | 4 | 3 | $0324 | $0312 | $0300, $0336 | |||
| 12 | 4 | 4 | $0325 | $0313 | $049F | $0301, $049F | ||
| 13 | 42 | 58 | $03A8, $0478 | $03CF, $0410, $045E | $039B, $03C2, $03E9, $03F6, $0403 | $0367, $049F | $0451, $0485, $0492, $04D3, $0507, $0514, $0521, $0589 | $0301, $0337, $035A, $0367, $0374, $0381, $038E, $039B, $03B5, $03C2, $03E9, $03F6, $0403, $041D, $042A, $0437, $0444, $0451, $046B, $0485, $0492, $049F, $04AC, $04D3, $04E0, $04ED, $0507, $0514, $0521, $052E, $053B, $0548, $0555, $0562, $056F, $057C, $0589 |
| 2 | 15 | 6 | $0598 | $059E | $05A2, $05A6 | $030E, $0320, $0332, $0344, $0596, $059A, $059C, $05A0, $05A2, $05A4, $05A6, $05A8, $0604 |
The 24 busiest shared bytes
| byte | reads and writes | routines writing | routines reading |
|---|---|---|---|
| $0024 | 915,000,312 | 3 | 6 |
| $001A | 546,075,412 | 2 | 6 |
| $00E5 | 122,866,345 | 6 | 6 |
| $0008 | 90,243,962 | 6 | 6 |
| $0009 | 79,759,347 | 6 | 6 |
| $0000 | 78,088,601 | 6 | 6 |
| $0001 | 73,836,310 | 6 | 6 |
| $0003 | 55,754,530 | 6 | 6 |
| $0002 | 44,588,379 | 6 | 6 |
| $0004 | 39,453,349 | 6 | 6 |
| $0005 | 39,324,887 | 6 | 6 |
| $0007 | 34,583,791 | 6 | 6 |
| $000C | 19,832,365 | 6 | 6 |
| $00E6 | 17,081,745 | 6 | 6 |
| $00E4 | 14,697,771 | 6 | 6 |
| $00C4 | 11,188,299 | 4 | 4 |
| $0010 | 10,154,564 | 6 | 6 |
| $00D2 | 7,586,071 | 4 | 4 |
| $00E2 | 7,173,993 | 5 | 6 |
| $000B | 6,763,183 | 6 | 6 |
| $0040 | 6,011,265 | 5 | 6 |
| $0006 | 5,229,469 | 6 | 6 |
| $0041 | 5,196,570 | 5 | 6 |
| $003B | 3,237,488 | 6 | 3 |
This page shows none of the game's bytes. The listing these figures were read from stays with the cartridge.