Fester's Quest (USA)

Fester's Quest (USA) is on a MMC1 board with 131,072 bytes of program. A crawl of 400 steps from power-on kept 29 paths that found new code. Played back over 24,629 frames, they executed 5,843 bytes of it, 4 percent.

What the rules named

The 36 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
$8605 (bank 3)a call53,515
The sound driver: frames it ran in 13,736, writes 25,288
$C024 (bank 7)a call28,249
The poll: port $4016, reads a frame 16, strobes a frame 4
The poll: port $4017, reads a frame 16, strobes a frame 4
$C9D2 (bank 7)a call28,057
The bank switch: writes 140,222, in the blank 71,047, while drawing 69,175
$C364 (bank 7)each frame (NMI)14,042
The scroll writer: frames it ran in 14,042, writes in the blank 27,914
$C3FC (bank 7)a call14,013
The palette writers: frames it ran in 14,013, writes 418,208
The picture writer: frames it ran in 14,013, writes 418,208, in the blank 418,208, while drawing 0
$C968 (bank 7)a call14,013
The bank switch: writes 139,840, in the blank 139,840, while drawing 0
$CA0F (bank 7)a call117
The sprite writers: frames it ran in 106, writes to the sprite page 1,480
$C0CC (bank 7)a call106
The sprite writers: frames it ran in 106, writes to the sprite page 6,689
$C0C7 (bank 7)a call84
The sprite writers: frames it ran in 84, writes to the sprite page 5,376
$C9BE (bank 7)a call84
The bank switch: writes 420, in the blank 145, while drawing 275
$FFF3 (bank 7)an interrupt (IRQ)29
The bank switch: writes 58, in the blank 58, while drawing 0
The sprite writers: frames it ran in 118, writes to the sprite page 7,424
$81A3 (bank 3)a call111,679
$856F (bank 3)a call53,518
$C046 (bank 7)a call28,249
$8000 (bank 3)a call14,013
$C053 (bank 7)a call14,013
$C9E8 (bank 7)a call14,013
$E0A8 (bank 7)a call14,013
$C000 (bank 7)a call13,884
$A857 (bank 5)a call772
$8891 (bank 3)a call241
$80C8 (bank 3)a call89
$C088 (bank 7)a call67
$C091 (bank 7)a call62
$C144 (bank 7)a call57
$80F3 (bank 3)a call55
$C3C5 (bank 7)a call55
$C379 (bank 7)a call47
$8009 (bank 5)a call29
$C13F (bank 7)a call29
$B63A (bank 6)a call26
$A8E8 (bank 5)a call11
$A974 (bank 5)a call11
$8003 (bank 4)a call5
$C09A (bank 7)a call5
$C106 (bank 7)a call5

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
$B6B2 (bank 6)
The wait for the frame: waits on the byte at $0080, times entered 2, turns 22, calls on each turn 1, writes of it under the frame interrupt 303, frames in all 14,129
$C004 (bank 7)
The wait for the frame: waits on the byte at $00F0, times entered 14,003, turns 61,079,258, writes of it under the frame interrupt 13,984, frames in all 14,129

The memory its routines share

96 bytes of memory were written by one routine and read by another, and 31 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
$02002566
$070025516
$00002401
$0080151
$072494
$074893
$001151
$0787414
$0763411
$077549
$070948
$073644

The 24 busiest shared bytes

bytereads and writesroutines writingroutines reading
$00F5902,72736
$0020706,06622
$0021705,94122
$000095,42466
$008995,06832
$008489,05243
$070046,92546
$078845,43645
$00ED43,14736
$00C842,09722
$070135,49845
$07FA33,49336
$008732,83833
$00FB28,27811
$074928,04135
$074A27,32935
$074B27,32935
$078925,09745
$078A22,03145
$000115,63064
$06BD14,63323
$00FE14,36856
$07EF14,33723
$072814,19623

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

All the games