Double Dribble (USA) (Rev 1)
Double Dribble (USA) (Rev 1) は UxROM の基板に載り、プログラムは 131,072 バイト。電源投入から 400 歩のクロールが、新しいコードを見つけた道筋を 26 本残した。それらを 18,226 フレームにわたって再生すると、プログラムのうち 15,960 バイト、12 パーセントが実行された。
規則が名付けたもの
- パッドの読み取り: 2
- 数える待機ループ: 1
- 割り込みの中のゲーム: 1
- ジャンプエンジン: 1
- バンク切り替え: 3
- 画面メモリへの書き手: 1
- パレットの書き手: 1
- スプライトの書き手: 4
- スクロールの書き手: 1
- サウンドドライバ: 1
- 二つのものを比べる所: 3
走行が入った 154 個のルーチン
ゲームのコードに入った場所のすべて。呼び出し、割り込み、テーブル経由のジャンプのどれかで入る。規則が名付けたものを先に、規則が見たものと一緒に並べる。
| 場所 | 入り方 | 回数 | 何であるか、その証拠 |
|---|---|---|---|
| $80E8 (バンク 2) | 呼び出し | 35,346 | スプライトの書き手: 走ったフレーム 7,194、スプライトのページへの書き込み 801,499 |
| $C159 (バンク 7) | 呼び出し | 32,337 | バンク切り替え: 書き込み 32,337、ブランク中 7,304、描画中 25,033 |
| $C314 (バンク 7) | 呼び出し | 14,556 | パッドの読み取り: ポート $4016、一フレームの読み 16、一フレームのストローブ 4 パッドの読み取り: ポート $4017、一フレームの読み 16、一フレームのストローブ 4 |
| $80ED (バンク 1) | 呼び出し | 11,915 | サウンドドライバ: 走ったフレーム 3,912、書き込み 7,083 |
| $C41C (バンク 7) | 呼び出し | 10,745 | ジャンプエンジン: テーブル 7、そこを通った跳躍 10,745 |
| $C15E (バンク 7) | 呼び出し | 7,462 | バンク切り替え: 書き込み 7,462、ブランク中 7,304、描画中 158 |
| $C036 (バンク 7) | 毎フレーム(NMI) | 7,307 | 割り込みの中のゲーム: 走ったフレーム 7,369、全フレーム 7,726、待機の場所 $C02B |
| $C100 (バンク 7) | 呼び出し | 7,307 | スプライトの書き手: 走ったフレーム 7,307、スプライトのページへの書き込み 29,228 |
| $D350 (バンク 7) | 呼び出し | 7,307 | スクロールの書き手: 走ったフレーム 7,307、ブランク中の書き込み 13,946 |
| $CB63 (バンク 7) | 呼び出し | 7,278 | パレットの書き手: 走ったフレーム 7,278、書き込み 1,936 画面メモリへの書き手: 走ったフレーム 7,278、書き込み 5,565、ブランク中 5,565、描画中 0 |
| $824B (バンク 2) | 呼び出し | 7,276 | 二つのものを比べる所: 命令 1、バイトの組 32、バイトの総数 10、比べた回数 31,550、縦の位置のバイト $03C2,$03C3,$03C4,$03C5,$03C6,$03C7,$03CA,$03CB,$03CE,$03E0 |
| $8209 (バンク 2) | 呼び出し | 7,254 | 二つのものを比べる所: 命令 1、バイトの組 23、バイトの総数 9、比べた回数 14,824、縦の位置のバイト $03C2,$03C3,$03C4,$03C6,$03C8,$03C9,$03CA,$03CB,$03CE |
| $8154 (バンク 2) | 呼び出し | 7,252 | スプライトの書き手: 走ったフレーム 7,252、スプライトのページへの書き込み 256,366 |
| $C165 (バンク 7) | 呼び出し | 183 | バンク切り替え: 書き込み 183、ブランク中 26、描画中 157 |
| $C10C (バンク 7) | 呼び出し | 42 | スプライトの書き手: 走ったフレーム 68、スプライトのページへの書き込み 10,752 |
| $ACB6 (バンク 0) | 呼び出し | 3 | 二つのものを比べる所: 命令 1、バイトの組 1、バイトの総数 2、比べた回数 19、縦の位置のバイト $03E0,$041E |
| $C43A (バンク 7) | 呼び出し | 65,297 | |
| $847D (バンク 1) | 呼び出し | 11,934 | |
| $8493 (バンク 1) | 呼び出し | 9,020 | |
| $C0F3 (バンク 7) | 呼び出し | 7,503 | |
| $D371 (バンク 7) | 呼び出し | 7,307 | |
| $8029 (バンク 1) | 呼び出し | 7,281 | |
| $807A (バンク 1) | 呼び出し | 7,281 | |
| $81C9 (バンク 2) | 呼び出し | 7,278 | |
| $C2E6 (バンク 7) | 呼び出し | 7,278 | |
| $C339 (バンク 7) | 呼び出し | 7,278 | |
| $C355 (バンク 7) | 呼び出し | 7,278 | |
| $C187 (バンク 7) | 呼び出し | 7,252 | |
| $C77F (バンク 7) | 呼び出し | 7,252 | |
| $CDA4 (バンク 7) | テーブル | 3,356 | |
| $C35A (バンク 7) | 呼び出し | 2,428 | |
| $C1BF (バンク 7) | テーブル | 2,407 | |
| $CE05 (バンク 7) | テーブル | 2,174 | |
| $C783 (バンク 7) | 呼び出し | 1,579 | |
| $C220 (バンク 7) | テーブル | 1,447 | |
| $C27D (バンク 7) | 呼び出し | 1,201 | |
| $83B2 (バンク 1) | 呼び出し | 1,117 | |
| $CDFD (バンク 7) | テーブル | 916 | |
| $8436 (バンク 1) | 呼び出し | 760 | |
| $CD9B (バンク 7) | 呼び出し | 625 | |
| $8128 (バンク 1) | 呼び出し | 507 | |
| $83E9 (バンク 1) | テーブル | 489 | |
| $810D (バンク 1) | 呼び出し | 443 | |
| $A73C (バンク 1) | 呼び出し | 336 | |
| $A7BF (バンク 1) | 呼び出し | 260 | |
| $C785 (バンク 7) | 呼び出し | 260 | |
| $83C0 (バンク 1) | テーブル | 233 | |
| $D31F (バンク 7) | テーブル | 204 | |
| $C724 (バンク 7) | 呼び出し | 185 | |
| $C549 (バンク 7) | 呼び出し | 180 | |
| $9CF6 (バンク 0) | 呼び出し | 179 | |
| $AA20 (バンク 0) | 呼び出し | 152 | |
| $9B42 (バンク 0) | 呼び出し | 141 | |
| $A896 (バンク 0) | 呼び出し | 130 | |
| $9CA0 (バンク 0) | 呼び出し | 99 | |
| $CBE0 (バンク 7) | 呼び出し | 92 | |
| $8491 (バンク 0) | 呼び出し | 90 | |
| $8BC5 (バンク 0) | テーブル | 80 | |
| $A84C (バンク 0) | 呼び出し | 80 | |
| $C16A (バンク 7) | 呼び出し | 63 | |
| $C17B (バンク 7) | 呼び出し | 63 | |
| $CC99 (バンク 7) | 呼び出し | 63 | |
| $8340 (バンク 1) | テーブル | 57 | |
| $C450 (バンク 7) | 呼び出し | 56 | |
| $C3C5 (バンク 7) | 呼び出し | 53 | |
| $8397 (バンク 1) | テーブル | 52 | |
| $843A (バンク 1) | 呼び出し | 52 | |
| $89B2 (バンク 0) | 呼び出し | 50 | |
| $91A6 (バンク 0) | 呼び出し | 50 | |
| $9EBD (バンク 0) | 呼び出し | 50 | |
| $AB53 (バンク 0) | 呼び出し | 45 | |
| $AB72 (バンク 0) | 呼び出し | 45 | |
| $9FA3 (バンク 0) | 呼び出し | 41 | |
| $C141 (バンク 7) | 呼び出し | 41 | |
| $9D2D (バンク 0) | 呼び出し | 34 | |
| $AAEE (バンク 0) | 呼び出し | 34 | |
| $A85A (バンク 0) | 呼び出し | 30 | |
| $C0E0 (バンク 7) | 呼び出し | 29 | |
| $CD6F (バンク 7) | 呼び出し | 29 | |
| $D33F (バンク 7) | 呼び出し | 29 | |
| $C001 (バンク 7) | 電源投入 | 26 | |
| $C0B9 (バンク 7) | 呼び出し | 26 | |
| $C128 (バンク 7) | 呼び出し | 26 | |
| $C135 (バンク 7) | 呼び出し | 26 | |
| $C1AD (バンク 7) | テーブル | 26 | |
| $C38A (バンク 7) | 呼び出し | 26 | |
| $C4FA (バンク 7) | 呼び出し | 26 | |
| $CEB6 (バンク 7) | 呼び出し | 26 | |
| $9A87 (バンク 0) | 呼び出し | 23 | |
| $9EA5 (バンク 0) | 呼び出し | 23 | |
| $AA4A (バンク 0) | 呼び出し | 22 | |
| $B11F (バンク 0) | 呼び出し | 22 | |
| $B3E9 (バンク 0) | 呼び出し | 22 | |
| $852F (バンク 0) | 呼び出し | 20 | |
| $93AE (バンク 0) | 呼び出し | 20 | |
| $949F (バンク 0) | 呼び出し | 20 | |
| $94A5 (バンク 0) | 呼び出し | 20 | |
| $955E (バンク 0) | 呼び出し | 20 | |
| $9583 (バンク 0) | 呼び出し | 20 | |
| $95E0 (バンク 0) | 呼び出し | 20 | |
| $993A (バンク 0) | 呼び出し | 20 | |
| $9E70 (バンク 0) | 呼び出し | 20 | |
| $AAA8 (バンク 0) | 呼び出し | 20 | |
| $AAC4 (バンク 0) | 呼び出し | 20 | |
| $AADB (バンク 0) | 呼び出し | 20 | |
| $AC7F (バンク 0) | 呼び出し | 20 | |
| $B51D (バンク 0) | 呼び出し | 20 | |
| $CDC7 (バンク 7) | テーブル | 20 | |
| $CE90 (バンク 7) | 呼び出し | 20 | |
| $8488 (バンク 1) | 呼び出し | 19 | |
| $914E (バンク 0) | 呼び出し | 19 | |
| $9B84 (バンク 0) | 呼び出し | 19 | |
| $9BB0 (バンク 0) | 呼び出し | 19 | |
| $AE25 (バンク 0) | テーブル | 19 | |
| $B377 (バンク 0) | 呼び出し | 19 | |
| $B473 (バンク 0) | 呼び出し | 19 | |
| $C251 (バンク 7) | テーブル | 16 | |
| $C392 (バンク 7) | 呼び出し | 16 | |
| $C3BC (バンク 7) | 呼び出し | 16 | |
| $CE0D (バンク 7) | テーブル | 16 | |
| $CE25 (バンク 7) | テーブル | 14 | |
| $8DD2 (バンク 0) | テーブル | 10 | |
| $9977 (バンク 0) | 呼び出し | 10 | |
| $9E90 (バンク 0) | 呼び出し | 10 | |
| $9F26 (バンク 0) | テーブル | 10 | |
| $9F70 (バンク 0) | 呼び出し | 10 | |
| $A5D0 (バンク 0) | テーブル | 10 | |
| $AA07 (バンク 0) | 呼び出し | 10 | |
| $B503 (バンク 0) | 呼び出し | 10 | |
| $9C06 (バンク 0) | 呼び出し | 8 | |
| $C694 (バンク 7) | 呼び出し | 8 | |
| $8131 (バンク 1) | 呼び出し | 6 | |
| $84C1 (バンク 1) | 呼び出し | 6 | |
| $9C0B (バンク 0) | 呼び出し | 6 | |
| $A539 (バンク 1) | 呼び出し | 6 | |
| $C6A5 (バンク 7) | 呼び出し | 6 | |
| $C6AD (バンク 7) | 呼び出し | 6 | |
| $D311 (バンク 7) | 呼び出し | 6 | |
| $A631 (バンク 1) | テーブル | 4 | |
| $9381 (バンク 0) | 呼び出し | 3 | |
| $945A (バンク 0) | 呼び出し | 3 | |
| $A4EB (バンク 1) | テーブル | 3 | |
| $B035 (バンク 0) | 呼び出し | 3 | |
| $C110 (バンク 7) | 呼び出し | 3 | |
| $C547 (バンク 7) | 呼び出し | 3 | |
| $CEB8 (バンク 7) | テーブル | 3 | |
| $CEEA (バンク 7) | テーブル | 3 | |
| $CF1C (バンク 7) | テーブル | 3 | |
| $CF47 (バンク 7) | テーブル | 3 | |
| $D2C3 (バンク 7) | 呼び出し | 3 | |
| $9490 (バンク 0) | 呼び出し | 2 | |
| $9395 (バンク 0) | 呼び出し | 1 | |
| $B017 (バンク 0) | テーブル | 1 | |
| $B501 (バンク 0) | 呼び出し | 1 |
待つ場所
規則が名付けたループのうち、ルーチンの内側にあって、それ自身はコードの入口ではないもの。
| 場所 | 何であるか、その証拠 |
|---|---|
| $C02B (バンク 7) | 数える待機ループ: 数えるバイト $0063、周回 8,544,182、一フレームの周回 1,105、ループの外からの読み 2 |
ジャンプエンジンのテーブル
テーブルはそれぞれ、エンジンへの呼び出しの直後にある。項目は、走行が選ぶのを見た所までを数える。本当のテーブルはもっと長いかもしれない。最後の列は、その値が項目を選んだメモリのバイトで、追えた場合だけ書いてある: ゲームのモードか、物体の一つが今していることだ。
| 場所 | 項目 | 選ばれた数 | 選んだバイト |
|---|---|---|---|
| $89C0 (バンク 0) | 13 | 2 | $0347, $0348, $0349, $034A |
| $9F00 (バンク 0) | 19 | 1 | $0342 |
| $A01C (バンク 0) | 54 | 2 | $0342, $0343, $0344, $0345 |
| $AC91 (バンク 0) | 11 | 2 | $0340 |
| $A4D5 (バンク 1) | 4 | 2 | $0480 |
| $C199 (バンク 7) | 6 | 5 | $0018 |
| $CDA9 (バンク 7) | 9 | 10 | $002A |
ルーチンが共有するメモリ
あるルーチンが書き、別のルーチンが読んだメモリは 460 バイト。添字を通して届いた場所は 66 か所で、メモリの中のテーブルや、物体の枠の並びはそう見える。
添字で届いた範囲: 位置を含むもの、次いで最も長いもの
| 起点 | 届いたバイト | 命令 | 含まれる位置 |
|---|---|---|---|
| $03C0 | 16 | 17 | 縦 11 |
| $0410 | 15 | 7 | 縦 1 |
| $03E0 | 12 | 2 | 縦 1 |
| $0200 | 253 | 4 | |
| $0000 | 240 | 2 | |
| $0201 | 201 | 2 | |
| $0202 | 201 | 1 | |
| $0203 | 201 | 1 | |
| $0700 | 73 | 34 | |
| $0300 | 16 | 10 | |
| $0310 | 16 | 10 | |
| $0320 | 16 | 10 |
位置と一緒に動くもの
少なくとも二つのルーチンが、位置の配列と一緒に、同じ範囲をたどった配列。画面上のものの表は、メモリの中ではこう見える: 性質ごとに配列が一つ、ものごとに枠が一つ。どの配列が位置を持つかは言える。ほかの配列のうち、どれが位置に足し込まれるか (速度がすること) と、どれがジャンプのテーブルの行き先を選ぶか (状態や種類がすること) も言える。残りが何を持つかは、まだ名付けていない。
| 枠 | 配列 | ルーチン | 横の位置 | 縦の位置 | 位置に足し込まれる配列 | ジャンプを選ぶ配列 | 一緒に動く配列 |
|---|---|---|---|---|---|---|---|
| 16 | 11 | 13 | $03C0, $0410 | $0300, $0320, $0330, $0350, $0360, $0370, $03B0, $03D0, $0460 | |||
| 12 | 6 | 3 | $03E0 | $0390, $03A0, $03F0, $0430, $0440 |
最も忙しい共有バイト 24 個
| バイト | 読み書き | 書くルーチン | 読むルーチン |
|---|---|---|---|
| $001A | 8,576,750 | 2 | 6 |
| $0063 | 3,374,454 | 3 | 3 |
| $0000 | 906,790 | 6 | 6 |
| $0005 | 864,326 | 4 | 6 |
| $0001 | 715,576 | 6 | 6 |
| $0008 | 712,532 | 6 | 6 |
| $0009 | 712,323 | 6 | 6 |
| $0003 | 669,013 | 6 | 6 |
| $0002 | 614,834 | 6 | 6 |
| $0004 | 500,152 | 6 | 6 |
| $0013 | 247,169 | 5 | 4 |
| $0011 | 79,608 | 6 | 6 |
| $0320 | 67,499 | 6 | 6 |
| $0018 | 64,711 | 6 | 6 |
| $0321 | 63,685 | 6 | 6 |
| $0010 | 61,406 | 6 | 6 |
| $0326 | 60,957 | 6 | 6 |
| $0325 | 60,278 | 6 | 6 |
| $0322 | 59,794 | 6 | 6 |
| $0323 | 59,794 | 6 | 6 |
| $0324 | 59,794 | 6 | 6 |
| $0327 | 59,794 | 6 | 6 |
| $032A | 59,794 | 6 | 6 |
| $0328 | 59,793 | 6 | 6 |
このページはゲームのバイトを一つも見せない。これらの数を読み取ったリスティングは、カートリッジと一緒に留まる。