Goonies II, The (USA)
Goonies II, The (USA) is on a UxROM board with 131,072 bytes of program. A crawl of 400 steps from power-on kept 17 paths that found new code. Played back over 13,297 frames, they executed 2,998 bytes of it, 2 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: 4
- The picture writer: 1
- The palette writers: 1
- The sprite writers: 9
- The scroll writer: 1
- The sound driver: 1
- The random byte: 1
The 61 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.
| at | entered by | times | what it is, and the evidence |
|---|---|---|---|
| $D4D7 (bank 7) | a call | 4,692 | The jump engine: tables 3, jumps through them 4,692 |
| $C1BC (bank 7) | a call | 3,478 | The bank switch: writes 3,478, in the blank 2,018, while drawing 1,460 |
| $82E8 (bank 2) | a call | 3,279 | The sound driver: frames it ran in 1,017, writes 1,070 |
| $C1BE (bank 7) | a call | 2,586 | The bank switch: writes 2,586, in the blank 2,436, while drawing 150 |
| $C1C0 (bank 7) | a call | 2,586 | The bank switch: writes 2,586, in the blank 2,511, while drawing 75 |
| $D18F (bank 7) | a call | 2,521 | The poll: port $4016, reads a frame 16, strobes a frame 4 The poll: port $4017, reads a frame 16, strobes a frame 4 The random byte: frames it ran in 2,513, bytes $006C,$006D, rotates 2, exclusive-ors 1 |
| $C07C (bank 7) | each frame (NMI) | 2,512 | The game inside the interrupt: frames it ran in 2,543, frames in all 2,797, the spin is at $C072 |
| $C10E (bank 7) | a call | 2,512 | The scroll writer: frames it ran in 2,511, writes in the blank 5,022 |
| $DF97 (bank 7) | a call | 2,504 | The palette writers: frames it ran in 2,504, writes 624 The picture writer: frames it ran in 2,504, writes 1,051, in the blank 1,025, while drawing 26 |
| $A3CC (bank 2) | a call | 2,497 | The sprite writers: frames it ran in 2,513, writes to the sprite page 149,340 |
| $C1A9 (bank 7) | a call | 1,565 | The sprite writers: frames it ran in 1,565, writes to the sprite page 6,260 |
| $8CF0 (bank 6) | a call | 938 | The sprite writers: frames it ran in 938, writes to the sprite page 1,876 |
| $CE6C (bank 7) | a call | 318 | The sprite writers: frames it ran in 318, writes to the sprite page 636 |
| $C219 (bank 7) | a call | 63 | The bank switch: writes 454, in the blank 34, while drawing 420 |
| $C008 (bank 7) | power-on | 17 | The sprite writers: frames it ran in 2,571, writes to the sprite page 3,840 |
| $D11B (bank 7) | a call | 15 | The sprite writers: frames it ran in 15, writes to the sprite page 240 |
| $CE38 (bank 7) | a table | 9 | The sprite writers: frames it ran in 27, writes to the sprite page 9 |
| $CE53 (bank 7) | a table | 9 | The sprite writers: frames it ran in 9, writes to the sprite page 18 |
| $CEE8 (bank 7) | a table | 7 | The sprite writers: frames it ran in 21, writes to the sprite page 21 |
| $A453 (bank 2) | a call | 44,822 | |
| $CC77 (bank 7) | a call | 34,323 | |
| $C19A (bank 7) | a call | 2,627 | |
| $C1F7 (bank 7) | a call | 2,529 | |
| $8179 (bank 2) | a call | 2,512 | |
| $C47D (bank 7) | a call | 2,489 | |
| $CCFC (bank 7) | a call | 2,489 | |
| $817F (bank 2) | a call | 1,962 | |
| $861F (bank 2) | a call | 1,375 | |
| $CE21 (bank 7) | a table | 1,272 | |
| $D1FF (bank 7) | a call | 1,226 | |
| $CEFD (bank 7) | a table | 938 | |
| $CD1E (bank 7) | a table | 931 | |
| $CD4F (bank 7) | a table | 624 | |
| $CE81 (bank 7) | a table | 309 | |
| $CDC8 (bank 7) | a table | 286 | |
| $85F7 (bank 2) | a call | 238 | |
| $CD58 (bank 7) | a table | 212 | |
| $8592 (bank 2) | a call | 199 | |
| $DE81 (bank 7) | a call | 172 | |
| $817C (bank 2) | a call | 131 | |
| $CD6D (bank 7) | a table | 91 | |
| $C481 (bank 7) | a call | 70 | |
| $C1CA (bank 7) | a call | 48 | |
| $C1CC (bank 7) | a call | 41 | |
| $D227 (bank 7) | a call | 41 | |
| $C424 (bank 7) | a call | 37 | |
| $D50B (bank 7) | a call | 33 | |
| $DE42 (bank 7) | a call | 33 | |
| $C0DD (bank 7) | a call | 31 | |
| $C212 (bank 7) | a call | 31 | |
| $DDFE (bank 7) | a call | 26 | |
| $C483 (bank 7) | a call | 24 | |
| $CBA3 (bank 7) | a call | 17 | |
| $D1FA (bank 7) | a call | 17 | |
| $C0D3 (bank 7) | a call | 15 | |
| $823A (bank 2) | a call | 14 | |
| $DE40 (bank 7) | a call | 10 | |
| $DDE5 (bank 7) | a call | 7 | |
| $CD37 (bank 7) | a table | 4 | |
| $81AF (bank 2) | a call | 2 | |
| $CC70 (bank 7) | a call | 2 |
Where it waits
Loops a rule named that sit inside a routine and are not themselves a place the code is entered.
| at | what it is, and the evidence |
|---|---|
| $C072 (bank 7) | The counting spin: counts in the byte at $000F, turns 4,254,722, turns a frame 1,521, reads of it from outside the loop 0 |
The jump engine's tables
Each table sits right after a call to the engine. 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 | entries | taken | chosen by the byte at |
|---|---|---|---|
| $CD0C (bank 7) | 4 | 3 | $0000 |
| $CD27 (bank 7) | 4 | 4 | $0001 |
| $CE26 (bank 7) | 7 | 5 | $0001 |
The memory its routines share
308 bytes of memory were written by one routine and read by another, and 27 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 |
|---|---|---|---|
| $0700 | 256 | 13 | |
| $0200 | 253 | 3 | |
| $0002 | 209 | 6 | |
| $0007 | 193 | 14 | |
| $0008 | 193 | 11 | |
| $0000 | 193 | 9 | |
| $0001 | 193 | 6 | |
| $0009 | 193 | 6 | |
| $0004 | 193 | 5 | |
| $0003 | 193 | 4 | |
| $0006 | 193 | 3 | |
| $0005 | 161 | 2 |
The 24 busiest shared bytes
| byte | reads and writes | routines writing | routines reading |
|---|---|---|---|
| $000F | 4,777,332 | 1 | 2 |
| $0002 | 4,279,124 | 2 | 6 |
| $006A | 278,768 | 6 | 6 |
| $006B | 217,310 | 6 | 6 |
| $0069 | 125,569 | 6 | 6 |
| $0070 | 94,820 | 3 | 3 |
| $0071 | 89,674 | 2 | 2 |
| $00AB | 23,012 | 2 | 6 |
| $00AC | 18,052 | 2 | 4 |
| $0003 | 16,618 | 2 | 6 |
| $00BA | 16,009 | 2 | 4 |
| $0000 | 13,436 | 2 | 6 |
| $0004 | 12,400 | 3 | 6 |
| $0006 | 10,582 | 3 | 6 |
| $0017 | 9,566 | 2 | 3 |
| $00BB | 8,732 | 2 | 4 |
| $000D | 6,351 | 6 | 6 |
| $0015 | 5,837 | 1 | 4 |
| $0010 | 5,219 | 6 | 3 |
| $0008 | 4,568 | 3 | 4 |
| $0007 | 3,781 | 2 | 5 |
| $000B | 3,559 | 2 | 2 |
| $0001 | 3,397 | 6 | 6 |
| $0009 | 3,349 | 1 | 3 |
This page shows none of the game's bytes. The listing these figures were read from stays with the cartridge.