Legend of Zelda, The (USA) (Rev 1)
Legend of Zelda, The (USA) (Rev 1) は MMC1 の基板に載り、プログラムは 131,072 バイト。電源投入から 400 歩のクロールが、新しいコードを見つけた道筋を 18 本残した。それらを 13,878 フレームにわたって再生すると、プログラムのうち 4,548 バイト、3 パーセントが実行された。
規則が名付けたもの
- パッドの読み取り: 2
- 待機のループ: 1
- 割り込みの中のゲーム: 1
- ジャンプエンジン: 1
- バンク切り替え: 3
- 画面メモリへの書き手: 1
- パレットの書き手: 1
- スプライトの書き手: 10
- スクロールの書き手: 1
- サウンドドライバ: 1
- 乱数のバイト: 3
走行が入った 83 個のルーチン
ゲームのコードに入った場所のすべて。呼び出し、割り込み、テーブル経由のジャンプのどれかで入る。規則が名付けたものを先に、規則が見たものと一緒に並べる。
| 場所 | 入り方 | 回数 | 何であるか、その証拠 |
|---|---|---|---|
| $FFAC (バンク 7) | 呼び出し | 8,128 | バンク切り替え: 書き込み 40,640、ブランク中 13,619、描画中 27,021 |
| $E5E2 (バンク 7) | 呼び出し | 5,934 | ジャンプエンジン: テーブル 7、そこを通った跳躍 5,934 |
| $98F5 (バンク 2) | 呼び出し | 4,230 | スプライトの書き手: 走ったフレーム 1,410、スプライトのページへの書き込み 67,680 |
| $A0F6 (バンク 6) | 呼び出し | 2,616 | パレットの書き手: 走ったフレーム 2,616、書き込み 2,800 画面メモリへの書き手: 走ったフレーム 2,616、書き込み 27,706、ブランク中 8,169、描画中 19,537 |
| $E484 (バンク 7) | 毎フレーム(NMI) | 2,616 | 割り込みの中のゲーム: 走ったフレーム 2,729、全フレーム 3,378、待機の場所 $E45B 乱数のバイト: 走ったフレーム 2,729、バイト $0018,$0019,$001A、回転 3、排他的論理和 1 スクロールの書き手: 走ったフレーム 2,729、ブランク中の書き込み 8,082 |
| $E62D (バンク 7) | 呼び出し | 2,615 | パッドの読み取り: ポート $4017、一フレームの読み 17、一フレームのストローブ 6 乱数のバイト: 走ったフレーム 2,695、バイト $0000,$00F8,$00F9、回転 3、排他的論理和 1 |
| $E640 (バンク 7) | 呼び出し | 2,615 | パッドの読み取り: ポート $4016、一フレームの読み 18、一フレームのストローブ 4 乱数のバイト: 走ったフレーム 2,615、バイト $0000,$00F8,$00F9、回転 3、排他的論理和 1 |
| $9C67 (バンク 0) | 呼び出し | 2,598 | サウンドドライバ: 走ったフレーム 2,598、書き込み 11,544 |
| $986B (バンク 2) | 呼び出し | 1,410 | スプライトの書き手: 走ったフレーム 1,410、スプライトのページへの書き込み 157,920 |
| $9943 (バンク 2) | 呼び出し | 1,410 | スプライトの書き手: 走ったフレーム 1,410、スプライトのページへの書き込み 22,560 |
| $9EF0 (バンク 2) | テーブル | 528 | スプライトの書き手: 走ったフレーム 528、スプライトのページへの書き込み 528 |
| $A1C3 (バンク 2) | 呼び出し | 528 | スプライトの書き手: 走ったフレーム 528、スプライトのページへの書き込み 1,056 |
| $A1DD (バンク 2) | 呼び出し | 528 | スプライトの書き手: 走ったフレーム 528、スプライトのページへの書き込み 1,056 |
| $A204 (バンク 2) | 呼び出し | 528 | スプライトの書き手: 走ったフレーム 528、スプライトのページへの書き込み 3 |
| $A59A (バンク 2) | テーブル | 326 | スプライトの書き手: 走ったフレーム 326、スプライトのページへの書き込み 1,252 |
| $E5F7 (バンク 7) | 呼び出し | 80 | スプライトの書き手: 走ったフレーム 80、スプライトのページへの書き込み 5,120 |
| $FF50 (バンク 7) | 電源投入 | 18 | バンク切り替え: 書き込み 162、ブランク中 162、描画中 0 |
| $FF98 (バンク 7) | 呼び出し | 18 | バンク切り替え: 書き込み 90、ブランク中 90、描画中 0 |
| $A18E (バンク 2) | 呼び出し | 13 | スプライトの書き手: 走ったフレーム 13、スプライトのページへの書き込み 180 |
| $A351 (バンク 2) | 呼び出し | 83,520 | |
| $A42B (バンク 2) | 呼び出し | 16,965 | |
| $9C50 (バンク 0) | 呼び出し | 4,278 | |
| $9F7C (バンク 0) | 呼び出し | 2,852 | |
| $A080 (バンク 6) | 呼び出し | 2,616 | |
| $9825 (バンク 0) | 呼び出し | 2,598 | |
| $98CC (バンク 0) | 呼び出し | 2,598 | |
| $99A0 (バンク 0) | 呼び出し | 2,598 | |
| $9AD3 (バンク 0) | 呼び出し | 2,598 | |
| $9B83 (バンク 0) | 呼び出し | 2,598 | |
| $EB30 (バンク 7) | 呼び出し | 2,318 | |
| $9020 (バンク 2) | テーブル | 1,442 | |
| $903B (バンク 2) | テーブル | 1,410 | |
| $90CF (バンク 2) | 呼び出し | 1,410 | |
| $95AC (バンク 2) | テーブル | 1,410 | |
| $98C3 (バンク 2) | 呼び出し | 1,410 | |
| $A1F7 (バンク 2) | 呼び出し | 1,056 | |
| $A011 (バンク 2) | 呼び出し | 528 | |
| $E625 (バンク 7) | 呼び出し | 403 | |
| $A591 (バンク 2) | テーブル | 339 | |
| $E8F8 (バンク 7) | 呼び出し | 280 | |
| $A307 (バンク 2) | 呼び出し | 192 | |
| $E96F (バンク 7) | テーブル | 112 | |
| $9EE2 (バンク 0) | 呼び出し | 102 | |
| $A35D (バンク 2) | 呼び出し | 96 | |
| $E94B (バンク 7) | テーブル | 85 | |
| $9D2A (バンク 2) | 呼び出し | 78 | |
| $9C27 (バンク 0) | 呼び出し | 77 | |
| $9FDE (バンク 2) | 呼び出し | 65 | |
| $E9C3 (バンク 7) | テーブル | 65 | |
| $E47D (バンク 7) | 呼び出し | 64 | |
| $E580 (バンク 7) | 呼び出し | 64 | |
| $9C09 (バンク 0) | 呼び出し | 54 | |
| $804F (バンク 2) | 呼び出し | 51 | |
| $9C3B (バンク 0) | 呼び出し | 51 | |
| $A4C4 (バンク 2) | テーブル | 48 | |
| $E46D (バンク 7) | 呼び出し | 46 | |
| $A3E1 (バンク 2) | 呼び出し | 39 | |
| $A437 (バンク 2) | 呼び出し | 39 | |
| $8D84 (バンク 1) | 呼び出し | 34 | |
| $9BFF (バンク 0) | 呼び出し | 34 | |
| $9C1D (バンク 0) | 呼び出し | 34 | |
| $9EDC (バンク 0) | 呼び出し | 34 | |
| $9F72 (バンク 0) | 呼び出し | 34 | |
| $A2A0 (バンク 2) | テーブル | 32 | |
| $808C (バンク 6) | 呼び出し | 18 | |
| $80C6 (バンク 6) | 呼び出し | 18 | |
| $80D7 (バンク 6) | 呼び出し | 18 | |
| $8D00 (バンク 1) | 呼び出し | 18 | |
| $B4AC (バンク 5) | 呼び出し | 18 | |
| $B4E8 (バンク 5) | 呼び出し | 18 | |
| $E45E (バンク 7) | 呼び出し | 18 | |
| $E608 (バンク 7) | 呼び出し | 18 | |
| $94E7 (バンク 2) | テーブル | 17 | |
| $9512 (バンク 2) | テーブル | 17 | |
| $9545 (バンク 2) | テーブル | 17 | |
| $905D (バンク 2) | テーブル | 16 | |
| $A47F (バンク 2) | テーブル | 16 | |
| $A4BD (バンク 2) | テーブル | 16 | |
| $A51E (バンク 2) | テーブル | 16 | |
| $A0F0 (バンク 2) | 呼び出し | 13 | |
| $A5DF (バンク 2) | テーブル | 13 | |
| $9FC5 (バンク 2) | テーブル | 9 | |
| $A017 (バンク 2) | 呼び出し | 2 |
待つ場所
規則が名付けたループのうち、ルーチンの内側にあって、それ自身はコードの入口ではないもの。
| 場所 | 何であるか、その証拠 |
|---|---|
| $E45B (バンク 7) | 待機のループ: 周回 19,870,380、一フレームの周回 5,882 |
ジャンプエンジンのテーブル
テーブルはそれぞれ、エンジンへの呼び出しの直後にある。項目は、走行が選ぶのを見た所までを数える。本当のテーブルはもっと長いかもしれない。最後の列は、その値が項目を選んだメモリのバイトで、追えた場合だけ書いてある: ゲームのモードか、物体の一つが今していることだ。
| 場所 | 項目 | 選ばれた数 | 選んだバイト |
|---|---|---|---|
| $900E (バンク 2) | 3 | 3 | $042D |
| $9035 (バンク 2) | 3 | 3 | $0013 |
| $90DA (バンク 2) | 1 | 1 | $042D |
| $A292 (バンク 2) | 7 | 5 | $0013 |
| $A596 (バンク 2) | 2 | 2 | $0013 |
| $E923 (バンク 7) | 2 | 3 | $0012, $0016 |
ルーチンが共有するメモリ
あるルーチンが書き、別のルーチンが読んだメモリは 564 バイト。添字を通して届いた場所は 28 か所で、メモリの中のテーブルや、物体の枠の並びはそう見える。
添字で届いた範囲: 位置を含むもの、次いで最も長いもの
| 起点 | 届いたバイト | 命令 | 含まれる位置 |
|---|---|---|---|
| $0201 | 253 | 4 | |
| $0200 | 253 | 3 | |
| $0202 | 253 | 2 | |
| $0203 | 253 | 2 | |
| $0000 | 240 | 6 | |
| $01FF | 113 | 1 | |
| $0302 | 52 | 9 | |
| $0305 | 44 | 2 | |
| $0001 | 25 | 1 | |
| $0638 | 24 | 3 | |
| $0309 | 18 | 1 | |
| $0303 | 16 | 1 |
最も忙しい共有バイト 24 個
| バイト | 読み書き | 書くルーチン | 読むルーチン |
|---|---|---|---|
| $0000 | 1,642,778 | 6 | 6 |
| $0001 | 1,484,137 | 6 | 6 |
| $0002 | 1,115,850 | 6 | 6 |
| $0003 | 683,639 | 6 | 6 |
| $00F8 | 291,352 | 1 | 6 |
| $000E | 169,024 | 5 | 6 |
| $000F | 168,208 | 5 | 5 |
| $0004 | 35,283 | 6 | 6 |
| $0005 | 28,516 | 6 | 6 |
| $00FA | 16,443 | 1 | 3 |
| $0015 | 15,931 | 2 | 5 |
| $0014 | 7,975 | 6 | 3 |
| $00E3 | 7,882 | 1 | 2 |
| $0007 | 7,582 | 5 | 5 |
| $0011 | 6,826 | 6 | 6 |
| $0302 | 6,049 | 6 | 6 |
| $005C | 5,268 | 2 | 2 |
| $0600 | 5,265 | 4 | 2 |
| $0602 | 5,259 | 5 | 2 |
| $0604 | 5,252 | 4 | 2 |
| $00E0 | 5,249 | 1 | 3 |
| $0601 | 5,232 | 2 | 2 |
| $0012 | 5,075 | 3 | 6 |
| $6E07 | 4,848 | 2 | 3 |
このページはゲームのバイトを一つも見せない。これらの数を読み取ったリスティングは、カートリッジと一緒に留まる。