Battle Chess (USA)

Battle Chess (USA) is on a MMC1 board with 262,144 bytes of program. A crawl of 400 steps from power-on kept 29 paths that found new code. Played back over 23,529 frames, they executed 7,626 bytes of it, 3 percent.

What the rules named

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

atentered bytimeswhat it is, and the evidence
$C160 (bank 15)a call47,597
The bank switch: writes 237,985, in the blank 1,020, while drawing 236,965
$C4EF (bank 15)each frame (NMI)11,271
The scroll writer: frames it ran in 11,414, writes in the blank 18,154
$D42F (bank 15)a call11,178
The sprite writers: frames it ran in 11,321, writes to the sprite page 2,813,343
$C764 (bank 15)a call11,152
The poll: port $4016, reads a frame 8, strobes a frame 2
The poll: port $4017, reads a frame 8, strobes a frame 2
$C6D0 (bank 15)a call8,977
The palette writers: frames it ran in 8,977, writes 287,264
The picture writer: frames it ran in 8,977, writes 287,264, in the blank 287,264, while drawing 0
$D4A0 (bank 15)a call3,570
The sprite writers: frames it ran in 1,933, writes to the sprite page 58,768
$D05E (bank 15)a call1,879
The sprite writers: frames it ran in 1,877, writes to the sprite page 3,754
$8000 (bank 14)a call1,877
The sound driver: frames it ran in 1,877, writes 33
$C35F (bank 15)a call1,540
The wait for the frame: waits on the byte at $0030, times entered 1,538, turns 3,941,011, writes of it under the frame interrupt 14,052, frames in all 13,029
$C9FD (bank 15)a call319
The palette writers: frames it ran in 291, writes 3,040
$C099 (bank 15)a call95
The sprite writers: frames it ran in 367, writes to the sprite page 24,320
$CD8F (bank 15)a call95
The sprite writers: frames it ran in 564, writes to the sprite page 24,064
$C000 (bank 15)power-on29
The bank switch: writes 232, in the blank 232, while drawing 0
The sprite writers: frames it ran in 4,754, writes to the sprite page 7,424
$C174 (bank 15)a call29
The bank switch: writes 145, in the blank 145, while drawing 0
$C156 (bank 15)a call16,628
$DD3C (bank 15)a call14,700
$C63C (bank 15)a call11,178
$D3BE (bank 15)a call11,178
$D3E2 (bank 15)a call11,152
$DD55 (bank 15)a call10,800
$D8EA (bank 15)a call3,528
$D36F (bank 15)a call3,460
$EA8A (bank 15)a call3,264
$EAA3 (bank 15)a call3,264
$C567 (bank 15)a call2,686
$DC7C (bank 15)a call2,450
$C149 (bank 15)a call2,380
$D93C (bank 15)a call2,352
$CC8D (bank 15)a call1,879
$E2A1 (bank 15)a call1,879
$E2BE (bank 15)a call1,879
$807A (bank 14)a call1,877
$CCC8 (bank 15)a call1,877
$8091 (bank 14)a call1,844
$E2EB (bank 15)a call1,835
$E357 (bank 15)a call1,753
$E727 (bank 15)a table1,640
$C79D (bank 15)a call1,526
$8D99 (bank 0)a call1,304
$DBE8 (bank 15)a call1,300
$8A98 (bank 0)a call1,294
$DC39 (bank 15)a call1,150
$D9C9 (bank 15)a call1,039
$DA3C (bank 15)a call825
$DAED (bank 15)a call825
$EB70 (bank 15)a call768
$80CA (bank 14)a call763
$CAD3 (bank 15)a call686
$80E9 (bank 14)a call664
$81EB (bank 14)a call664
$DB52 (bank 15)a call650
$DD73 (bank 15)a call650
$DD7F (bank 15)a call650
$DB9D (bank 15)a call575
$DD6D (bank 15)a call575
$DD79 (bank 15)a call575
$CA93 (bank 15)a call566
$D980 (bank 15)a call392
$C103 (bank 15)a call369
$C367 (bank 15)a call351
$8283 (bank 14)a call297
$C343 (bank 15)a call241
$C0EF (bank 15)a call239
$C0F8 (bank 15)a call239
$9819 (bank 0)a call232
$97E5 (bank 0)a call217
$97A7 (bank 0)a call215
$9CC1 (bank 0)a call215
$C931 (bank 15)a call176
$C9C7 (bank 15)a call176
$CDE1 (bank 15)a call161
$CDD6 (bank 15)a call160
$C0E0 (bank 15)a call157
$8C9A (bank 0)a call122
$CEE1 (bank 15)a call120
$8C6E (bank 0)a call118
$8115 (bank 14)a call99
$8CCC (bank 0)a call98
$C04C (bank 15)a call96
$C13E (bank 15)a call96
$C074 (bank 15)a call95
$C143 (bank 15)a call95
$82A9 (bank 14)a call87
$8355 (bank 14)a call87
$CAC5 (bank 15)a call77
$CACA (bank 15)a call77
$E6B2 (bank 15)a table76
$E1DF (bank 15)a call67
$C0D3 (bank 15)a call65
$CA5A (bank 15)a call64
$CA85 (bank 15)a call63
$EA66 (bank 15)a call52
$880C (bank 0)a call51
$CE13 (bank 15)a call51
$CE67 (bank 15)a call51
$CEF1 (bank 15)a call51
$CFC8 (bank 15)a call51
$D00C (bank 15)a call51
$E1FC (bank 15)a call51
$E23B (bank 15)a call51
$E373 (bank 15)a call51
$E3DF (bank 15)a call51
$EA78 (bank 15)a call51
$C8C0 (bank 15)a call38
$E6D6 (bank 15)a table38
$E6DF (bank 15)a table38
$80B9 (bank 14)a call33
$CCC0 (bank 15)a call33
$E4E4 (bank 15)a table33
$8A16 (bank 0)a call29
$C01F (bank 15)an interrupt (IRQ)29
$C3B7 (bank 15)a call29
$EB1F (bank 15)a call29
$EB43 (bank 15)a call28
$C3BE (bank 15)a call27
$8CFB (bank 13)a call26
$8D2B (bank 13)a call26
$8FAE (bank 13)a call26
$9698 (bank 0)a call26
$96B7 (bank 0)a call26
$E87F (bank 15)a call26
$EA02 (bank 15)a call26
$EA32 (bank 15)a call26
$EAFD (bank 15)a call26
$96F0 (bank 0)a call25
$D7FA (bank 15)a call25
$D826 (bank 15)a call25
$8A4F (bank 0)a call24
$9C63 (bank 0)a call23
$CC9F (bank 15)a call17
$8D41 (bank 0)a call16
$8A54 (bank 0)a call14
$8C53 (bank 0)a call10
$8B65 (bank 0)a call7
$8D7C (bank 0)a call7
$99ED (bank 0)a call4
$8BCC (bank 0)a call3
$CE87 (bank 15)a call3
$E1ED (bank 15)a call3
$8AF9 (bank 0)a call2
$8B36 (bank 0)a call2
$914E (bank 0)a table2
$9DA1 (bank 0)a table2
$9DE4 (bank 0)a call2
$E558 (bank 15)a table2
$E669 (bank 15)a table2
$E67B (bank 15)a call2
$995D (bank 0)a call1

Where it waits

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

atwhat it is, and the evidence
$C150 (bank 15)
The wait for the frame: waits on the byte at $03E9, times entered 1,790, turns 6,623,410, writes of it under the frame interrupt 18,110, frames in all 13,029
$C3B9 (bank 15)
The wait for the frame: waits on the byte at $0030, times entered 28, turns 10,692,043, writes of it under the frame interrupt 14,052, frames in all 13,029
$C3C0 (bank 15)
The wait for the frame: waits on the byte at $0663, times entered 26, turns 5,429,565, writes of it under the frame interrupt 178,432, frames in all 13,029
$C3CA (bank 15)
The wait for the frame: waits on the byte at $0663, times entered 26, turns 1,907,047, writes of it under the frame interrupt 178,432, frames in all 13,029
$C568 (bank 15)
The wait for the frame: waits on the byte at $002B, times entered 3,454, turns 2,557,546, writes of it under the frame interrupt 2,101, frames in all 13,029
$D82A (bank 15)
The wait for the frame: waits on the byte at $002B, times entered 392, turns 1,199,685, writes of it under the frame interrupt 2,101, frames in all 13,029
$DA9B (bank 15)
The wait for the frame: waits on the byte at $002B, times entered 825, turns 1,265,075, writes of it under the frame interrupt 2,101, frames in all 13,029

The memory its routines share

634 bytes of memory were written by one routine and read by another, and 90 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

frombytes reachedinstructionspositions it holds
$07002566
$02002563
$00002561
$03002561
$04002561
$05002561
$06002561
$00042313
$05601201
$00051131
$000A1131
$000B1131

The 24 busiest shared bytes

bytereads and writesroutines writingroutines reading
$06637,603,82834
$03E96,660,50523
$002B5,046,92866
$005D972,09154
$0032769,77066
$0033314,88766
$000E248,47766
$0007187,29166
$0664177,11133
$00A4169,17955
$00A2162,18656
$00A3161,90856
$006F123,51955
$00A6118,74756
$039075,19866
$039375,19866
$039174,84866
$039474,84866
$000473,76965
$000D70,58666
$000F54,72066
$002641,75866
$000C41,30966
$00A535,22654

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

All the games