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 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.

atits name in the listingentered bytimeswhat it is, and the evidence
$C79A (bank 7)b7_engine_C79Aa call2,875,851
The jump engine: tables 28, jumps through them 2,875,839
$81B2 (bank 0)b0_sprites_81B2a call2,820,771
The sprite writers: frames it ran in 378,767, writes to the sprite page 52,228,127
$C2F1 (bank 7)b7_bank_C2F1a call1,398,056
The bank switch: writes 1,397,304, in the blank 767,029, while drawing 630,275
$C61C (bank 7)b7_poll_C61Ca call940,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_854Ca call650,213
The sound driver: frames it ran in 287,692, writes 757,280
$B47C (bank 0)b0_compare_B47Ca call613,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_C022a call482,715
The palette writers: frames it ran in 472,081, writes 377,084
$C175 (bank 7)b7_drain_C175a call482,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_nmieach 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_C2A8a call470,234
The scroll writer: frames it ran in 468,989, writes in the blank 939,559
$8227 (bank 0)b0_compare_8227a call469,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_8001a call469,951
The sprite writers: frames it ran in 471,161, writes to the sprite page 15,909,923
$B1B0 (bank 0)b0_compare_B1B0a call338,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_A8A6a table300,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_C2F7a call286,087
The bank switch: writes 285,966, in the blank 6,387, while drawing 279,579
$C749 (bank 7)b7_compare_C749a call236,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_EAECa call219,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_E8DFa call203,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_80C0a call199,385
The sprite writers: frames it ran in 199,385, writes to the sprite page 3,237,495
$CD6A (bank 7)b7_dispatch_CD6Aa table129,728
The bank switch: writes 129,728, in the blank 0, while drawing 129,728
$C41C (bank 7)b7_bank_C41Ca call127,998
The bank switch: writes 127,932, in the blank 0, while drawing 127,932
$C3E5 (bank 7)b7_bank_C3E5a call125,444
The bank switch: writes 125,442, in the blank 0, while drawing 125,442
$914C (bank 0)b0_compare_914Ca call121,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_C389a call121,675
The bank switch: writes 121,666, in the blank 0, while drawing 121,666
$9C06 (bank 0)b0_compare_9C06a call113,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_C4CDa table112,795
The bank switch: writes 93, in the blank 0, while drawing 93
$82AD (bank 0)b0_sprites_82ADa call88,984
The sprite writers: frames it ran in 68,322, writes to the sprite page 1,272,765
$C39F (bank 7)b7_bank_C39Fa call87,468
The bank switch: writes 87,468, in the blank 0, while drawing 87,468
$B192 (bank 0)b0_compare_B192a call69,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_99D2a call61,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_9A10a call56,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_EB51a call45,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_C512a table44,953
The bank switch: writes 44,765, in the blank 182, while drawing 44,583
$C42D (bank 7)b7_bank_C42Da call38,853
The bank switch: writes 38,840, in the blank 11,412, while drawing 27,428
$811A (bank 0)b0_dispatch_811Aa table37,486
The sprite writers: frames it ran in 37,486, writes to the sprite page 1,199,551
$8101 (bank 1)b1_split_8101a call26,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_C3CBa call20,154
The bank switch: writes 20,154, in the blank 0, while drawing 20,154
$EAB9 (bank 7)b7_compare_EAB9a call18,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_C3F0a call15,531
The bank switch: writes 15,531, in the blank 1, while drawing 15,530
$C3FB (bank 7)b7_bank_C3FBa call3,240
The bank switch: writes 3,239, in the blank 0, while drawing 3,239
$E5B5 (bank 7)b7_compare_E5B5a call1,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_EA14a call1,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_C818a call1,397
The bank switch: writes 1,396, in the blank 10, while drawing 1,386
$C2DE (bank 7)b7_sprites_C2DEa call570
The sprite writers: frames it ran in 570, writes to the sprite page 72,960
$C816 (bank 7)b7_bank_C816a call483
The bank switch: writes 483, in the blank 0, while drawing 483
$C37E (bank 7)b7_bank_C37Ea call234
The bank switch: writes 234, in the blank 0, while drawing 234
$C373 (bank 7)b7_bank_C373a call231
The bank switch: writes 231, in the blank 138, while drawing 93
$9313 (bank 0)b0_compare_9313a call171
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 call3,683,068
$DE1E (bank 7)a call3,068,360
$D7D2 (bank 7)a call2,671,070
$D8F7 (bank 7)a call2,671,070
$EBED (bank 7)a call2,072,958
$E053 (bank 7)a call2,058,970
$E0B5 (bank 7)a call2,058,970
$D9CE (bank 7)a call1,529,480
$890A (bank 6)a call1,300,107
$DAFB (bank 7)a call1,147,813
$886A (bank 6)a call1,113,829
$82BD (bank 6)a call1,110,842
$C786 (bank 7)a call615,826
$C7AF (bank 7)a call593,658
$A569 (bank 0)a call570,795
$B390 (bank 0)a call534,214
$85A5 (bank 6)a call531,386
$B453 (bank 0)a call491,679
$C956 (bank 7)a call482,431
$8283 (bank 6)a call472,844
$81C3 (bank 6)a call472,843
$823C (bank 6)a call472,841
$9D6F (bank 0)a call470,988
$C5E2 (bank 7)a call470,122
$C464 (bank 7)a call469,996
$B562 (bank 0)a call467,336
$8071 (bank 0)a call401,198
$807D (bank 0)a call401,198
$80A3 (bank 0)a call401,198
$A5B2 (bank 0)a table387,942
$873E (bank 6)a call367,734
$865F (bank 6)a call359,155
$A882 (bank 0)a call347,423
$AB4F (bank 0)a call300,708
$9DB6 (bank 0)a table268,521
$8002 (bank 5)a call257,726
$86F3 (bank 6)a call227,590
$813A (bank 1)a call209,143
$817A (bank 1)a call209,143
$E8A3 (bank 7)a call203,007
$8535 (bank 1)a call200,312
$956B (bank 0)a call192,113
$DDF1 (bank 7)a call188,841
$A03C (bank 0)a table175,664
$893D (bank 6)a call160,346
$E71B (bank 7)a call156,518
$ADB7 (bank 0)a call149,360
$85FA (bank 6)a call148,983
$A5E9 (bank 0)a call135,070
$CD77 (bank 7)a call129,728
$C641 (bank 7)a call127,382
$AF53 (bank 4)a call125,444
$CF62 (bank 7)a table121,733
$D5D9 (bank 7)a call121,733
$94BE (bank 0)a call121,675
$94C4 (bank 0)a call121,675
$9CC0 (bank 0)a call121,675
$ACE1 (bank 0)a call121,675
$ACFC (bank 0)a call121,675
$ADB3 (bank 0)a call121,675
$ADEA (bank 0)a call121,675
$AFA5 (bank 0)a call121,675
$B019 (bank 0)a call121,675
$B01F (bank 0)a call121,675
$B12A (bank 0)a call121,675
$C6AD (bank 7)a call121,675
$D65F (bank 7)a call121,675
$D677 (bank 7)a call121,675
$E252 (bank 7)a call121,675
$E7B7 (bank 7)a call121,675
$9CD1 (bank 0)a call117,747
$9CFC (bank 0)a call117,747
$9D13 (bank 0)a call117,747
$A55A (bank 0)a call114,159
$CE3A (bank 7)a call114,159
$CCA2 (bank 7)a call112,702
$8537 (bank 1)a call110,867
$A5F9 (bank 0)a table98,953
$E1E5 (bank 7)a call87,475
$8681 (bank 1)a call87,468
$E73C (bank 7)a call87,468
$DCB8 (bank 7)a call72,866
$EAD2 (bank 7)a call70,246
$DB5C (bank 7)a call70,184
$9674 (bank 0)a table69,908
$9A60 (bank 0)a call69,908
$96AC (bank 0)a table69,224
$9AAE (bank 0)a table62,625
$9AC6 (bank 0)a table62,088
$97BB (bank 0)a call61,471
$8555 (bank 1)a call61,044
$A57F (bank 0)a table59,531
$9CF3 (bank 0)a table58,973
$9CEA (bank 0)a table58,774
$C958 (bank 7)a call56,529
$8001 (bank 1)a call52,556
$8123 (bank 1)a call52,556
$9BBC (bank 0)a table51,872
$9E2B (bank 1)a call51,000
$A64D (bank 0)a call50,342
$8532 (bank 1)a call49,471
$857F (bank 1)a call48,491
$A597 (bank 0)a table48,275
$A8C3 (bank 0)a table46,485
$A8D0 (bank 0)a call46,485
$871C (bank 1)a call44,771
$8EAA (bank 1)a call44,771
$A647 (bank 0)a table44,276
$AE3F (bank 0)a call42,375
$8524 (bank 1)a call41,204
$8512 (bank 1)a call41,196
$C107 (bank 7)a call39,720
$C48D (bank 7)a table39,151
$800C (bank 1)a call38,853
$84F1 (bank 6)a call38,312
$A627 (bank 0)a table37,183
$E57A (bank 7)a call34,858
$CEFF (bank 7)a table34,840
$E6C8 (bank 7)a call34,552
$E6F4 (bank 7)a call34,552
$E450 (bank 7)a call34,516
$E2CE (bank 7)a call34,511
$E31F (bank 7)a call34,506
$CEB6 (bank 7)a table32,326
$C8FD (bank 7)a call31,264
$C95A (bank 7)a call31,012
$86FE (bank 6)a call28,327
$A619 (bank 0)a table27,428
$A5DA (bank 0)a call27,014
$9D94 (bank 0)a table26,803
$8578 (bank 1)a call26,132
$8F2E (bank 1)a table23,349
$856F (bank 1)a call23,339
$E897 (bank 7)a call23,062
$E8B0 (bank 7)a call23,062
$AA42 (bank 0)a call21,711
$8EF6 (bank 1)a table21,055
$CE61 (bank 7)a table20,756
$AEF1 (bank 0)a table20,536
$8001 (bank 2)a call20,154
$AA9B (bank 0)a table19,987
$AEF2 (bank 0)a call19,750
$9FEC (bank 1)a call18,868
$8E10 (bank 1)a call18,691
$8803 (bank 1)a table18,231
$EAFB (bank 7)a call18,229
$835C (bank 1)a call16,652
$A026 (bank 1)a call15,670
$9CC4 (bank 1)a call15,531
$A68F (bank 0)a call15,460
$EC1E (bank 7)a call15,375
$C4B5 (bank 7)a call14,674
$C4A9 (bank 7)a table14,392
$C5C8 (bank 7)a call14,392
$C15D (bank 7)a call14,220
$8048 (bank 1)a table13,885
$82A8 (bank 1)a call13,859
$9F30 (bank 1)a call13,240
$99AA (bank 0)a call12,907
$A9BA (bank 0)a table12,731
$871D (bank 6)a call12,676
$A639 (bank 0)a table12,578
$C4E4 (bank 7)a table12,052
$C114 (bank 7)a call11,860
$8573 (bank 6)a call11,748
$85AD (bank 1)a call11,573
$CD16 (bank 7)a table11,507
$819B (bank 6)a call10,658
$8795 (bank 6)a table10,371
$C304 (bank 7)a call10,129
$9EB1 (bank 1)a call9,480
$9EE9 (bank 1)a call9,480
$803F (bank 6)a call9,268
$80EA (bank 1)a table9,040
$88CF (bank 1)a table8,809
$C31F (bank 7)a call8,809
$E891 (bank 7)a call8,595
$E8B8 (bank 7)a call8,595
$AA22 (bank 0)a table8,527
$9D81 (bank 1)a table8,498
$A040 (bank 1)a call8,374
$8C2D (bank 1)a table7,648
$CE43 (bank 7)a call7,631
$C76C (bank 7)a call7,392
$E661 (bank 7)a call7,392
$83DD (bank 1)a call6,929
$8095 (bank 1)a table6,826
$A3FD (bank 4)a call6,430
$87D0 (bank 6)a table6,310
$EC21 (bank 7)a call6,238
$985A (bank 0)a call5,974
$888E (bank 6)a table5,965
$8DE5 (bank 1)a call5,630
$8D79 (bank 1)a call5,485
$95B3 (bank 0)a table4,968
$CF56 (bank 7)a call4,963
$9EFB (bank 1)a call4,740
$9F36 (bank 1)a call4,740
$A6C3 (bank 0)a table4,578
$80BF (bank 1)a table4,544
$A606 (bank 4)a call4,386
$A471 (bank 4)a table4,368
$A480 (bank 4)a call4,368
$A5BE (bank 4)a call4,368
$A718 (bank 4)a call4,368
$C16A (bank 7)a call4,345
$883C (bank 6)a table4,307
$80D0 (bank 1)a table4,260
$8C7B (bank 1)a table3,877
$846E (bank 1)a call3,756
$E978 (bank 7)a call3,720
$CFFF (bank 7)a table3,709
$D013 (bank 7)a call3,709
$8871 (bank 1)a table3,404
$A318 (bank 4)a call3,240
$D35D (bank 7)a table3,240
$A3B1 (bank 4)a table3,215
$A847 (bank 4)a call3,215
$88DB (bank 6)a call3,210
$88E5 (bank 6)a table3,210
$885D (bank 6)a call3,094
$A680 (bank 0)a call3,092
$87A2 (bank 1)a table3,043
$8964 (bank 1)a table2,957
$89B0 (bank 1)a table2,880
$879B (bank 6)a table2,851
$88F3 (bank 1)a table2,819
$C2B5 (bank 7)a call2,793
$D744 (bank 7)a call2,772
$88CB (bank 6)a table2,740
$8813 (bank 1)a table2,686
$A0B5 (bank 1)a call2,672
$C2C8 (bank 7)a call2,581
$C298 (bank 7)a call2,580
$92F7 (bank 0)a call2,540
$D76D (bank 7)a call2,532
$960C (bank 0)a table2,244
$AEB0 (bank 0)a table2,244
$E637 (bank 7)a call2,223
$B597 (bank 0)a call2,116
$87F8 (bank 6)a table2,109
$AAC0 (bank 0)a table2,070
$B7F8 (bank 1)a call2,069
$AACC (bank 0)a table2,068
$9E2D (bank 1)a call1,960
$87B4 (bank 6)a table1,944
$A544 (bank 4)a table1,857
$E69E (bank 7)a call1,848
$8C3A (bank 1)a table1,820
$8C58 (bank 1)a table1,813
$887C (bank 1)a table1,705
$9CF0 (bank 1)a table1,677
$9D15 (bank 1)a table1,677
$9DBC (bank 1)a table1,651
$9DE3 (bank 1)a table1,644
$B32B (bank 0)a call1,634
$87AB (bank 1)a table1,611
$992D (bank 0)a call1,602
$8893 (bank 1)a table1,546
$B0FF (bank 0)a call1,539
$E974 (bank 7)a call1,490
$87C6 (bank 1)a table1,432
$881C (bank 1)a table1,422
$8208 (bank 6)a call1,383
$88DE (bank 6)a call1,382
$A06F (bank 1)a call1,336
$A4B9 (bank 4)a table1,287
$8833 (bank 1)a table1,264
$B0C6 (bank 0)a call1,220
$A447 (bank 4)a table1,152
$B2F6 (bank 0)a call1,054
$AF84 (bank 0)a call1,038
$88F1 (bank 6)a call942
$8003 (bank 6)a call939
$C340 (bank 7)a call939
$D0C6 (bank 7)a table934
$B312 (bank 0)a call917
$E70C (bank 7)a call917
$9F81 (bank 1)a call888
$A7A4 (bank 4)a table828
$884B (bank 1)a table768
$D627 (bank 7)a call713
$9426 (bank 0)a call684
$968C (bank 0)a table684
$A901 (bank 0)a table652
$AF91 (bank 0)a call622
$A435 (bank 4)a table602
$8D8A (bank 1)a call583
$A6A1 (bank 0)a table581
$A58C (bank 4)a table579
$E9BC (bank 7)a call563
$9AB8 (bank 0)a table537
$C225 (bank 7)a call514
$EC72 (bank 7)a call501
$9E3F (bank 1)a call490
$B83C (bank 1)a call458
$B844 (bank 1)a call458
$C68C (bank 7)a call457
$8E02 (bank 1)a call433
$E89D (bank 7)a call422
$E8CA (bank 7)a call422
$C5D9 (bank 7)a call418
$85E9 (bank 1)a call416
$87EF (bank 6)a table414
$85C0 (bank 1)a call413
$A57C (bank 4)a table413
$E6FA (bank 7)a call375
$D6C1 (bank 7)a call371
$A24A (bank 0)a call355
$A2BF (bank 0)a call355
$AF7F (bank 0)a call342
$8D46 (bank 1)a call322
$C6E3 (bank 7)a call309
$801D (bank 1)a table298
$8D57 (bank 1)a call298
$C7C5 (bank 7)a call298
$C7D1 (bank 7)a call298
$C7D5 (bank 7)a call298
$9581 (bank 0)a table292
$A45F (bank 4)a table288
$A7AD (bank 4)a table288
$C1C5 (bank 7)power-on285
$C28D (bank 7)a call285
$D5FF (bank 7)a call234
$D60E (bank 7)a call234
$CCD3 (bank 7)a table231
$CCE8 (bank 7)a call231
$D72D (bank 7)a call231
$A88E (bank 0)a table230
$A8F0 (bank 0)a table230
$AC1F (bank 0)a call230
$AC31 (bank 0)a call230
$AC41 (bank 0)a call230
$AC79 (bank 0)a call230
$A86F (bank 0)a call227
$CE97 (bank 7)a table215
$9478 (bank 0)a call211
$97F0 (bank 0)a call211
$B575 (bank 0)a call211
$E206 (bank 7)a call211
$EA04 (bank 7)a call211
$AA89 (bank 0)a table210
$E1E9 (bank 7)a call207
$A87E (bank 0)a call206
$B0C1 (bank 0)a call205
$95BA (bank 0)a table204
$C66C (bank 7)a call203
$8ED0 (bank 1)a table196
$873C (bank 1)a table182
$C674 (bank 7)a call182
$93E2 (bank 0)a call181
$B588 (bank 0)a call173
$8EFF (bank 1)a table171
$B344 (bank 0)a call171
$A52C (bank 4)a table163
$946F (bank 0)a call159
$88AB (bank 1)a table153
$88DC (bank 1)a table153
$E1F1 (bank 7)a call143
$8CB1 (bank 1)a table138
$C68E (bank 7)a call138
$D6B6 (bank 7)a call138
$B593 (bank 0)a call136
$9CDB (bank 1)a table129
$9D2A (bank 1)a table129
$9FF7 (bank 1)a call129
$D6D6 (bank 7)a call129
$D6F9 (bank 7)a call129
$D6A6 (bank 7)a call127
$D715 (bank 7)a call127
$9DF0 (bank 1)a table126
$92EA (bank 0)a call125
$D6EB (bank 7)a call125
$D472 (bank 7)a table114
$B78E (bank 2)a call93
$CC8F (bank 7)a call93
$CD63 (bank 7)a call92
$A5A5 (bank 4)a call88
$A4B0 (bank 4)a table69
$A5E4 (bank 4)a call43
$A733 (bank 4)a call40
$92DD (bank 0)a call28
$A40D (bank 4)a table20
$A77A (bank 4)a table18
$A24D (bank 0)a call16
$B351 (bank 0)a call16
$C70B (bank 7)a call16
$C726 (bank 7)a call16
$9409 (bank 0)a call14
$E624 (bank 7)a call13
$A325 (bank 4)a table11
$A350 (bank 4)a table11
$C34B (bank 7)a call11
$D601 (bank 7)a call11
$AADF (bank 0)a table7
$8909 (bank 6)a table4
$A3C2 (bank 4)a table3
$A871 (bank 0)a call3
$B0D4 (bank 0)a call3
$C6E7 (bank 7)a call3
$E9B6 (bank 7)a call3
$AB01 (bank 0)a table2
$AB0C (bank 0)a table1
$AE5C (bank 0)a table1
$D693 (bank 7)a call1

Where it waits

Loops a rule named that sit inside a routine and are not themselves a place the code is entered.

atits name in the listingwhat 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.

atreachedentriestakenchosen by the byte at
$8112 (bank 0)after a call11$0036
$957B (bank 0)after a call33$0368, $0367
$9604 (bank 0)after a call44
$9688 (bank 0)after a call22$036C, $0368, $0367, $036A
$9AB4 (bank 0)after a call22$036C, $036D, $0367, $036B
$9CE6 (bank 0)after a call22
$9D8E (bank 0)after a call33
$A56F (bank 0)after a call88$0367, $0369, $036B, $036D
$A5EF (bank 0)after a call55$0367, $0369, $036B, $036D
$A695 (bank 0)after a call66$0368, $036A, $036C, $036E
$A888 (bank 0)after a call33$0373
$A8D6 (bank 0)after a call1311$0491
$AE42 (bank 0)after a call134$049F, $04A4, $04A0, $04A3
$8011 (bank 1)after a call66$0080
$8724 (bank 1)after a call118$0060
$87A7 (bank 1)after a call22$0061
$8818 (bank 1)after a call22$0061
$8876 (bank 1)after a call33$0061
$88D4 (bank 1)after a call44$0061
$8C32 (bank 1)after a call44$0061
$8EC8 (bank 1)after a call44$0367
$9CC9 (bank 1)after a call88$0066
$A31D (bank 4)after a call44$0080
$A403 (bank 4)after a call55$0640, $0641
$A4A4 (bank 4)after a call66$064C, $064D
$A774 (bank 4)after a call33$0656, $0657
$876F (bank 6)through a pointer198
$88BD (bank 6)through a pointer73
$C47A (bank 7)after a call55$0018
$CCAB (bank 7)after a call1912$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.

004080C0$0000$0100$0200$0300$0400$0500$0600$0700142Y42X43433→3333+3X33+3Y3+3+3+3Y33333↓3Y33X3↓3↓2,3→3↓333↓3↓3↓33333333↓444+4
The console's 2,048 bytes of memory, one row for each 256. A numbered span is a column of one of the object tables drawn below, counted in the same order, as long as the table and filled as it is there. Where a table's columns overlap, its things lie one after another, each with all its properties, so the table is one outline with a mark where each property starts. A dark square is a position a rule saw compared. A tick under a row is one of the 24 busiest shared bytes. The second row is the page the processor keeps its stack in. Reaches through an index that belong to no table are not drawn: the loops that clear memory reach nearly every byte. 12 labels are left out where columns sit too close to name each one; the drawings below name them all.

Reaches through an index: those that hold positions, then the longest

frombytes reachedinstructionspositions it holds
$000024021 across, 1 down
$03A8135411 across
$03CF135311 down
$041013272 down
$0478131811 across
$045E131711 down
$03121351 down
$00941321 across, 1 down
$03241321 across
$032512810 across
$031312712 down
$059E282 down
$0598262 across
$0004241 across
$03B2212 across
$03D9212 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.

0123456789101112$0300+78$0312Y$0324X$0336
Table 1: 4 arrays of up to 13 slots that 3 routines step through together. Each column is an array at its address and each row a slot, so one thing on the screen is one row across all of them. A number under a column is how many more bytes that array was reached across than the table is long. X and Y are positions, and the darker squares are the slots a rule saw compared. + is added into a position, which is what a speed does. → chose a jump, which is what a state or a kind does. ↓ is only ever counted down, which is what a timer does. A plain outline travels with them and is not named yet.
01234567891011$0301$0313Y$0325X$049F→
Table 2: 4 arrays of up to 12 slots that 4 routines step through together. Each column is an array at its address and each row a slot, so one thing on the screen is one row across all of them. X and Y are positions, and the darker squares are the slots a rule saw compared. + is added into a position, which is what a speed does. → chose a jump, which is what a state or a kind does. ↓ is only ever counted down, which is what a timer does. A plain outline travels with them and is not named yet.
0123456789101112$0301$0337$035A$0367→$0374$0381$038E$039B+$03A8X$03B5$03C2+$03CFY$03E9+$03F6+$0403+$0410Y$041D$042A$0437$0444$0451↓$045EY$046B$0478X$0485↓$0492↓$049F→$04AC$04D3↓$04E0$04ED$0507↓$0514↓$0521↓$052E$053B$0548+3$0555$0562$056F$057C$0589↓
Table 3: 42 arrays of up to 13 slots that 58 routines step through together. Each column is an array at its address and each row a slot, so one thing on the screen is one row across all of them. A number under a column is how many more bytes that array was reached across than the table is long. X and Y are positions, and the darker squares are the slots a rule saw compared. + is added into a position, which is what a speed does. → chose a jump, which is what a state or a kind does. ↓ is only ever counted down, which is what a timer does. A plain outline travels with them and is not named yet.
01$030E$0320$0332$0344$0596$0598X$059A$059C$059EY$05A0$05A2+$05A4$05A6+$05A8$0604
Table 4: 15 arrays of up to 2 slots that 6 routines step through together. Each column is an array at its address and each row a slot, so one thing on the screen is one row across all of them. X and Y are positions, and the darker squares are the slots a rule saw compared. + is added into a position, which is what a speed does. → chose a jump, which is what a state or a kind does. ↓ is only ever counted down, which is what a timer does. A plain outline travels with them and is not named yet.
slotsarraysroutinespositions acrosspositions downadded into themchoosing a jumpcounted downtravelling with them
1343$0324$0312$0300, $0336
1244$0325$0313$049F$0301, $049F
134258$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
2156$0598$059E$05A2, $05A6$030E, $0320, $0332, $0344, $0596, $059A, $059C, $05A0, $05A2, $05A4, $05A6, $05A8, $0604

The 24 busiest shared bytes

bytereads and writesroutines writingroutines reading
$0024915,000,31236
$001A546,075,41226
$00E5122,866,34566
$000890,243,96266
$000979,759,34766
$000078,088,60166
$000173,836,31066
$000355,754,53066
$000244,588,37966
$000439,453,34966
$000539,324,88766
$000734,583,79166
$000C19,832,36566
$00E617,081,74566
$00E414,697,77166
$00C411,188,29944
$001010,154,56466
$00D27,586,07144
$00E27,173,99356
$000B6,763,18366
$00406,011,26556
$00065,229,46966
$00415,196,57056
$003B3,237,48863

This page shows none of the game's bytes. The listing these figures were read from stays with the cartridge.

All the games