Blades of Steel (USA)
Blades of Steel (USA) は UxROM の基板に載り、プログラムは 131,072 バイト。電源投入から 400 歩のクロールが、新しいコードを見つけた道筋を 32 本残した。それらを 27,032 フレームにわたって再生すると、プログラムのうち 11,184 バイト、9 パーセントが実行された。
規則が名付けたもの
- パッドの読み取り: 2
- 数える待機ループ: 1
- 割り込みの中のゲーム: 1
- ジャンプエンジン: 1
- バンク切り替え: 11
- 画面メモリへの書き手: 1
- パレットの書き手: 2
- スプライトの書き手: 5
- スクロールの書き手: 1
- 画面の分割: 1
- サウンドドライバ: 1
- 二つのものを比べる所: 1
走行が入った 221 個のルーチン
ゲームのコードに入った場所のすべて。呼び出し、割り込み、テーブル経由のジャンプのどれかで入る。規則が名付けたものを先に、規則が見たものと一緒に並べる。
| 場所 | 入り方 | 回数 | 何であるか、その証拠 |
|---|---|---|---|
| $C79A (バンク 7) | 呼び出し | 38,771 | ジャンプエンジン: テーブル 13、そこを通った跳躍 38,771 |
| $C2F1 (バンク 7) | 呼び出し | 36,088 | バンク切り替え: 書き込み 36,082、ブランク中 24,351、描画中 11,731 |
| $C61C (バンク 7) | 呼び出し | 26,440 | パッドの読み取り: ポート $4016、一フレームの読み 16、一フレームのストローブ 4 パッドの読み取り: ポート $4017、一フレームの読み 16、一フレームのストローブ 4 |
| $81B2 (バンク 0) | 呼び出し | 26,217 | スプライトの書き手: 走ったフレーム 6,534、スプライトのページへの書き込み 733,050 |
| $854C (バンク 6) | 呼び出し | 16,775 | サウンドドライバ: 走ったフレーム 6,356、書き込み 16,843 |
| $C022 (バンク 7) | 呼び出し | 14,297 | パレットの書き手: 走ったフレーム 13,414、書き込み 20,854 画面メモリへの書き手: 走ったフレーム 13,414、書き込み 131,927、ブランク中 88,304、描画中 54,203 |
| $C175 (バンク 7) | 呼び出し | 14,297 | パレットの書き手: 走ったフレーム 13,414、書き込み 29,248 |
| $C204 (バンク 7) | 毎フレーム(NMI) | 13,274 | 割り込みの中のゲーム: 走ったフレーム 13,274、全フレーム 16,532、待機の場所 $C1FB |
| $C2A8 (バンク 7) | 呼び出し | 13,247 | スクロールの書き手: 走ったフレーム 13,220、ブランク中の書き込み 26,438 |
| $8227 (バンク 0) | 呼び出し | 13,217 | 二つのものを比べる所: 命令 2、バイトの組 84、バイトの総数 22、比べた回数 43,718、縦の位置のバイト $0313,$0314,$0315,$0316,$0317,$0318,$0319,$031A,$031B,$031C,$031D,$031E |
| $8001 (バンク 0) | 呼び出し | 13,215 | スプライトの書き手: 走ったフレーム 13,242、スプライトのページへの書き込み 641,249 |
| $82AD (バンク 0) | 呼び出し | 6,671 | スプライトの書き手: 走ったフレーム 6,206、スプライトのページへの書き込み 97,085 |
| $C512 (バンク 7) | テーブル | 4,722 | バンク切り替え: 書き込み 4,695、ブランク中 27、描画中 4,668 |
| $C42D (バンク 7) | 呼び出し | 4,205 | バンク切り替え: 書き込み 4,204、ブランク中 1,243、描画中 2,961 |
| $8101 (バンク 1) | 呼び出し | 2,837 | 画面の分割: 走ったフレーム 2,868、描画中のスクロール書き込み 5,672、描画中のステータス読み 1,474,339 |
| $C2F7 (バンク 7) | 呼び出し | 2,526 | バンク切り替え: 書き込み 2,526、ブランク中 125、描画中 2,401 |
| $CD6A (バンク 7) | テーブル | 1,820 | バンク切り替え: 書き込み 1,820、ブランク中 0、描画中 1,820 |
| $811A (バンク 0) | テーブル | 1,476 | スプライトの書き手: 走ったフレーム 1,476、スプライトのページへの書き込み 47,232 |
| $C3CB (バンク 7) | 呼び出し | 389 | バンク切り替え: 書き込み 389、ブランク中 0、描画中 389 |
| $C39F (バンク 7) | 呼び出し | 316 | バンク切り替え: 書き込み 316、ブランク中 0、描画中 316 |
| $C818 (バンク 7) | 呼び出し | 153 | バンク切り替え: 書き込み 153、ブランク中 0、描画中 153 |
| $C2DE (バンク 7) | 呼び出し | 64 | スプライトの書き手: 走ったフレーム 64、スプライトのページへの書き込み 8,192 |
| $C816 (バンク 7) | 呼び出し | 59 | バンク切り替え: 書き込み 59、ブランク中 0、描画中 59 |
| $C373 (バンク 7) | 呼び出し | 8 | バンク切り替え: 書き込み 8、ブランク中 8、描画中 0 |
| $C37E (バンク 7) | 呼び出し | 8 | バンク切り替え: 書き込み 8、ブランク中 0、描画中 8 |
| $C7AF (バンク 7) | 呼び出し | 58,415 | |
| $890A (バンク 6) | 呼び出し | 30,856 | |
| $886A (バンク 6) | 呼び出し | 29,991 | |
| $82BD (バンク 6) | 呼び出し | 29,985 | |
| $85A5 (バンク 6) | 呼び出し | 15,557 | |
| $E095 (バンク 7) | 呼び出し | 14,808 | |
| $C956 (バンク 7) | 呼び出し | 14,265 | |
| $81C3 (バンク 6) | 呼び出し | 13,247 | |
| $8283 (バンク 6) | 呼び出し | 13,247 | |
| $823C (バンク 6) | 呼び出し | 13,246 | |
| $C5E2 (バンク 7) | 呼び出し | 13,220 | |
| $C464 (バンク 7) | 呼び出し | 13,219 | |
| $D7D2 (バンク 7) | 呼び出し | 12,340 | |
| $D8F7 (バンク 7) | 呼び出し | 12,340 | |
| $DE1E (バンク 7) | 呼び出し | 12,340 | |
| $873E (バンク 6) | 呼び出し | 11,190 | |
| $865F (バンク 6) | 呼び出し | 10,987 | |
| $8537 (バンク 1) | 呼び出し | 8,464 | |
| $EBED (バンク 7) | 呼び出し | 7,491 | |
| $8071 (バンク 0) | 呼び出し | 6,977 | |
| $807D (バンク 0) | 呼び出し | 6,977 | |
| $80A3 (バンク 0) | 呼び出し | 6,977 | |
| $85FA (バンク 6) | 呼び出し | 6,306 | |
| $E053 (バンク 7) | 呼び出し | 6,179 | |
| $E0B5 (バンク 7) | 呼び出し | 6,179 | |
| $A569 (バンク 0) | 呼び出し | 6,170 | |
| $86F3 (バンク 6) | 呼び出し | 5,850 | |
| $8001 (バンク 1) | 呼び出し | 5,672 | |
| $8123 (バンク 1) | 呼び出し | 5,672 | |
| $871C (バンク 1) | 呼び出し | 4,695 | |
| $8EAA (バンク 1) | 呼び出し | 4,695 | |
| $9E2B (バンク 1) | 呼び出し | 4,588 | |
| $C48D (バンク 7) | テーブル | 4,237 | |
| $800C (バンク 1) | 呼び出し | 4,205 | |
| $C107 (バンク 7) | 呼び出し | 3,630 | |
| $C958 (バンク 7) | 呼び出し | 3,624 | |
| $8EF6 (バンク 1) | テーブル | 2,820 | |
| $B390 (バンク 0) | 呼び出し | 2,468 | |
| $B47C (バンク 0) | 呼び出し | 2,468 | |
| $B453 (バンク 0) | 呼び出し | 2,464 | |
| $B562 (バンク 0) | 呼び出し | 2,464 | |
| $857F (バンク 1) | 呼び出し | 2,382 | |
| $A5B2 (バンク 0) | テーブル | 2,364 | |
| $8535 (バンク 1) | 呼び出し | 2,335 | |
| $A57F (バンク 0) | テーブル | 2,331 | |
| $8E10 (バンク 1) | 呼び出し | 2,141 | |
| $8555 (バンク 1) | 呼び出し | 2,117 | |
| $C95A (バンク 7) | 呼び出し | 2,102 | |
| $893D (バンク 6) | 呼び出し | 2,046 | |
| $8803 (バンク 1) | テーブル | 2,000 | |
| $8F2E (バンク 1) | テーブル | 1,828 | |
| $8002 (バンク 5) | 呼び出し | 1,820 | |
| $A882 (バンク 0) | 呼び出し | 1,820 | |
| $CD77 (バンク 7) | 呼び出し | 1,820 | |
| $A8A6 (バンク 0) | テーブル | 1,812 | |
| $AB4F (バンク 0) | 呼び出し | 1,812 | |
| $C4E4 (バンク 7) | テーブル | 1,802 | |
| $8512 (バンク 1) | 呼び出し | 1,587 | |
| $8524 (バンク 1) | 呼び出し | 1,587 | |
| $8532 (バンク 1) | 呼び出し | 1,514 | |
| $8048 (バンク 1) | テーブル | 1,500 | |
| $80C0 (バンク 0) | 呼び出し | 1,476 | |
| $A597 (バンク 0) | テーブル | 1,475 | |
| $9FEC (バンク 1) | 呼び出し | 1,398 | |
| $856F (バンク 1) | 呼び出し | 1,286 | |
| $A55A (バンク 0) | 呼び出し | 1,234 | |
| $ADB7 (バンク 0) | 呼び出し | 1,234 | |
| $CE3A (バンク 7) | 呼び出し | 1,234 | |
| $9F30 (バンク 1) | 呼び出し | 1,210 | |
| $C114 (バンク 7) | 呼び出し | 1,072 | |
| $82A8 (バンク 1) | 呼び出し | 1,058 | |
| $C8FD (バンク 7) | 呼び出し | 1,009 | |
| $80EA (バンク 1) | テーブル | 968 | |
| $84F1 (バンク 6) | 呼び出し | 859 | |
| $88CF (バンク 1) | テーブル | 823 | |
| $8095 (バンク 1) | テーブル | 744 | |
| $86FE (バンク 6) | 呼び出し | 732 | |
| $85AD (バンク 1) | 呼び出し | 603 | |
| $8DE5 (バンク 1) | 呼び出し | 555 | |
| $8D79 (バンク 1) | 呼び出し | 542 | |
| $83DD (バンク 1) | 呼び出し | 529 | |
| $8C2D (バンク 1) | テーブル | 498 | |
| $80BF (バンク 1) | テーブル | 496 | |
| $80D0 (バンク 1) | テーブル | 465 | |
| $87A2 (バンク 1) | テーブル | 459 | |
| $CD16 (バンク 7) | テーブル | 400 | |
| $8001 (バンク 2) | 呼び出し | 389 | |
| $8871 (バンク 1) | テーブル | 371 | |
| $CE43 (バンク 7) | 呼び出し | 351 | |
| $C15D (バンク 7) | 呼び出し | 342 | |
| $8813 (バンク 1) | テーブル | 340 | |
| $871D (バンク 6) | 呼び出し | 325 | |
| $813A (バンク 1) | 呼び出し | 316 | |
| $817A (バンク 1) | 呼び出し | 316 | |
| $8681 (バンク 1) | 呼び出し | 316 | |
| $E1E5 (バンク 7) | 呼び出し | 316 | |
| $E73C (バンク 7) | 呼び出し | 316 | |
| $819B (バンク 6) | 呼び出し | 306 | |
| $88F3 (バンク 1) | テーブル | 290 | |
| $C298 (バンク 7) | 呼び出し | 279 | |
| $C2C8 (バンク 7) | 呼び出し | 279 | |
| $8964 (バンク 1) | テーブル | 278 | |
| $8795 (バンク 6) | テーブル | 266 | |
| $C4B5 (バンク 7) | 呼び出し | 260 | |
| $C641 (バンク 7) | 呼び出し | 258 | |
| $9E2D (バンク 1) | 呼び出し | 252 | |
| $8573 (バンク 6) | 呼び出し | 247 | |
| $87AB (バンク 1) | テーブル | 243 | |
| $89B0 (バンク 1) | テーブル | 239 | |
| $8C7B (バンク 1) | テーブル | 237 | |
| $B7F8 (バンク 1) | 呼び出し | 236 | |
| $C4A9 (バンク 7) | テーブル | 230 | |
| $C5C8 (バンク 7) | 呼び出し | 230 | |
| $8578 (バンク 1) | 呼び出し | 228 | |
| $9EB1 (バンク 1) | 呼び出し | 228 | |
| $9EE9 (バンク 1) | 呼び出し | 228 | |
| $C304 (バンク 7) | 呼び出し | 217 | |
| $87C6 (バンク 1) | テーブル | 216 | |
| $887C (バンク 1) | テーブル | 187 | |
| $881C (バンク 1) | テーブル | 180 | |
| $884B (バンク 1) | テーブル | 177 | |
| $8893 (バンク 1) | テーブル | 168 | |
| $8833 (バンク 1) | テーブル | 160 | |
| $888E (バンク 6) | テーブル | 157 | |
| $87D0 (バンク 6) | テーブル | 150 | |
| $803F (バンク 6) | 呼び出し | 145 | |
| $C31F (バンク 7) | 呼び出し | 145 | |
| $8C3A (バンク 1) | テーブル | 130 | |
| $88DB (バンク 6) | 呼び出し | 126 | |
| $88E5 (バンク 6) | テーブル | 126 | |
| $8C58 (バンク 1) | テーブル | 123 | |
| $9EFB (バンク 1) | 呼び出し | 114 | |
| $9F36 (バンク 1) | 呼び出し | 114 | |
| $879B (バンク 6) | テーブル | 107 | |
| $87B4 (バンク 6) | テーブル | 105 | |
| $C16A (バンク 7) | 呼び出し | 104 | |
| $D744 (バンク 7) | 呼び出し | 96 | |
| $9F81 (バンク 1) | 呼び出し | 74 | |
| $8003 (バンク 6) | 呼び出し | 72 | |
| $88F1 (バンク 6) | 呼び出し | 72 | |
| $C340 (バンク 7) | 呼び出し | 72 | |
| $87F8 (バンク 6) | テーブル | 70 | |
| $8208 (バンク 6) | 呼び出し | 66 | |
| $88DE (バンク 6) | 呼び出し | 66 | |
| $9E3F (バンク 1) | 呼び出し | 63 | |
| $C68C (バンク 7) | 呼び出し | 54 | |
| $8D8A (バンク 1) | 呼び出し | 51 | |
| $B83C (バンク 1) | 呼び出し | 43 | |
| $B844 (バンク 1) | 呼び出し | 43 | |
| $8E02 (バンク 1) | 呼び出し | 38 | |
| $8D46 (バンク 1) | 呼び出し | 37 | |
| $C5D9 (バンク 7) | 呼び出し | 36 | |
| $85C0 (バンク 1) | 呼び出し | 35 | |
| $85E9 (バンク 1) | 呼び出し | 35 | |
| $801D (バンク 1) | テーブル | 32 | |
| $C1C5 (バンク 7) | 電源投入 | 32 | |
| $C28D (バンク 7) | 呼び出し | 32 | |
| $C6E3 (バンク 7) | 呼び出し | 32 | |
| $C7C5 (バンク 7) | 呼び出し | 32 | |
| $C7D1 (バンク 7) | 呼び出し | 32 | |
| $C7D5 (バンク 7) | 呼び出し | 32 | |
| $88CB (バンク 6) | テーブル | 31 | |
| $EC72 (バンク 7) | 呼び出し | 30 | |
| $8D57 (バンク 1) | 呼び出し | 29 | |
| $C66C (バンク 7) | 呼び出し | 29 | |
| $873C (バンク 1) | テーブル | 27 | |
| $8ED0 (バンク 1) | テーブル | 27 | |
| $C2B5 (バンク 7) | 呼び出し | 27 | |
| $C674 (バンク 7) | 呼び出し | 27 | |
| $87EF (バンク 6) | テーブル | 24 | |
| $D627 (バンク 7) | 呼び出し | 24 | |
| $8EFF (バンク 1) | テーブル | 20 | |
| $88AB (バンク 1) | テーブル | 16 | |
| $88DC (バンク 1) | テーブル | 16 | |
| $C225 (バンク 7) | 呼び出し | 15 | |
| $883C (バンク 6) | テーブル | 10 | |
| $885D (バンク 6) | 呼び出し | 9 | |
| $8CB1 (バンク 1) | テーブル | 8 | |
| $946F (バンク 0) | 呼び出し | 8 | |
| $A24A (バンク 0) | 呼び出し | 8 | |
| $A2BF (バンク 0) | 呼び出し | 8 | |
| $A88E (バンク 0) | テーブル | 8 | |
| $AC1F (バンク 0) | 呼び出し | 8 | |
| $AC31 (バンク 0) | 呼び出し | 8 | |
| $AC41 (バンク 0) | 呼び出し | 8 | |
| $AC79 (バンク 0) | 呼び出し | 8 | |
| $C68E (バンク 7) | 呼び出し | 8 | |
| $CCD3 (バンク 7) | テーブル | 8 | |
| $CCE8 (バンク 7) | 呼び出し | 8 | |
| $D5FF (バンク 7) | 呼び出し | 8 | |
| $D60E (バンク 7) | 呼び出し | 8 | |
| $D6B6 (バンク 7) | 呼び出し | 8 | |
| $D6C1 (バンク 7) | 呼び出し | 8 | |
| $D72D (バンク 7) | 呼び出し | 8 | |
| $E1F1 (バンク 7) | 呼び出し | 8 | |
| $B593 (バンク 0) | 呼び出し | 6 |
待つ場所
規則が名付けたループのうち、ルーチンの内側にあって、それ自身はコードの入口ではないもの。
| 場所 | 何であるか、その証拠 |
|---|---|
| $C1FB (バンク 7) | 数える待機ループ: 数えるバイト $0024、周回 20,791,885、一フレームの周回 1,257、ループの外からの読み 32 |
ジャンプエンジンのテーブル
テーブルはそれぞれ、エンジンへの呼び出しの直後にある。項目は、走行が選ぶのを見た所までを数える。本当のテーブルはもっと長いかもしれない。最後の列は、その値が項目を選んだメモリのバイトで、追えた場合だけ書いてある: ゲームのモードか、物体の一つが今していることだ。
| 場所 | 項目 | 選ばれた数 | 選んだバイト |
|---|---|---|---|
| $8112 (バンク 0) | 1 | 1 | $0036 |
| $A56F (バンク 0) | 3 | 3 | $0367, $0369, $036B, $036D |
| $A888 (バンク 0) | 2 | 2 | $0373 |
| $8011 (バンク 1) | 6 | 6 | $0080 |
| $8724 (バンク 1) | 11 | 8 | $0060 |
| $87A7 (バンク 1) | 2 | 2 | $0061 |
| $8818 (バンク 1) | 2 | 2 | $0061 |
| $8876 (バンク 1) | 3 | 3 | $0061 |
| $88D4 (バンク 1) | 4 | 4 | $0061 |
| $8C32 (バンク 1) | 4 | 4 | $0061 |
| $8EC8 (バンク 1) | 4 | 4 | $0367 |
| $C47A (バンク 7) | 5 | 4 | $0018 |
| $CCAB (バンク 7) | 3 | 3 | $0030 |
ルーチンが共有するメモリ
あるルーチンが書き、別のルーチンが読んだメモリは 602 バイト。添字を通して届いた場所は 93 か所で、メモリの中のテーブルや、物体の枠の並びはそう見える。
添字で届いた範囲: 位置を含むもの、次いで最も長いもの
| 起点 | 届いたバイト | 命令 | 含まれる位置 |
|---|---|---|---|
| $0312 | 13 | 5 | 縦 2 |
| $03CF | 12 | 10 | 縦 10 |
| $0313 | 10 | 1 | 縦 10 |
| $0700 | 255 | 57 | |
| $0200 | 253 | 5 | |
| $0000 | 240 | 2 | |
| $0201 | 229 | 3 | |
| $0202 | 229 | 3 | |
| $0203 | 229 | 3 | |
| $0640 | 128 | 5 | |
| $0300 | 91 | 3 | |
| $0701 | 82 | 4 |
位置と一緒に動くもの
少なくとも二つのルーチンが、位置の配列と一緒に、同じ範囲をたどった配列。画面上のものの表は、メモリの中ではこう見える: 性質ごとに配列が一つ、ものごとに枠が一つ。どの配列が位置を持つかは言える。ほかの配列のうち、どれが位置に足し込まれるか (速度がすること) と、どれがジャンプのテーブルの行き先を選ぶか (状態や種類がすること) も言える。残りが何を持つかは、まだ名付けていない。
| 枠 | 配列 | ルーチン | 横の位置 | 縦の位置 | 位置に足し込まれる配列 | ジャンプを選ぶ配列 | 一緒に動く配列 |
|---|---|---|---|---|---|---|---|
| 13 | 4 | 3 | $0312 | $0300, $0324, $0336 | |||
| 12 | 23 | 9 | $03CF | $0410 | $0367 | $0301, $0337, $035A, $0367, $0381, $038E, $039B, $03A8, $03B5, $03C2, $03E9, $0403, $0410, $042A, $0437, $0444, $0451, $049F, $04D3, $04ED, $0514, $0589 |
最も忙しい共有バイト 24 個
| バイト | 読み書き | 書くルーチン | 読むルーチン |
|---|---|---|---|
| $001A | 20,852,214 | 2 | 6 |
| $00E5 | 12,422,229 | 6 | 6 |
| $00E6 | 1,683,621 | 6 | 6 |
| $00E4 | 1,584,213 | 6 | 6 |
| $0000 | 1,307,368 | 6 | 6 |
| $0004 | 999,047 | 6 | 6 |
| $0001 | 991,569 | 6 | 6 |
| $0007 | 870,864 | 6 | 6 |
| $0005 | 844,910 | 6 | 6 |
| $0002 | 698,164 | 6 | 6 |
| $0008 | 623,533 | 6 | 6 |
| $0003 | 586,354 | 6 | 6 |
| $00E2 | 474,633 | 5 | 6 |
| $00C4 | 185,762 | 4 | 4 |
| $0051 | 82,138 | 6 | 6 |
| $0021 | 72,812 | 6 | 6 |
| $0006 | 63,942 | 6 | 6 |
| $004A | 60,077 | 6 | 5 |
| $004B | 60,077 | 6 | 5 |
| $00F5 | 49,739 | 2 | 6 |
| $00D2 | 49,476 | 4 | 4 |
| $00E3 | 46,261 | 5 | 6 |
| $07E0 | 45,707 | 1 | 6 |
| $00C3 | 44,416 | 3 | 2 |
このページはゲームのバイトを一つも見せない。これらの数を読み取ったリスティングは、カートリッジと一緒に留まる。