Q-bert (USA)
Q-bert (USA) は CNROM の基板に載り、プログラムは 32,768 バイト。電源投入から 400 歩のクロールが、新しいコードを見つけた道筋を 17 本残した。それらを 20,757 フレームにわたって再生すると、プログラムのうち 4,409 バイト、13 パーセントが実行された。
規則が名付けたもの
- パッドの読み取り: 2
- 待機のループ: 1
- 割り込みの中のゲーム: 1
- ジャンプエンジン: 1
- バンク切り替え: 3
- 画面メモリへの書き手: 1
- パレットの書き手: 1
- スプライトの書き手: 5
- スクロールの書き手: 1
- サウンドドライバ: 1
- 乱数のバイト: 1
走行が入った 123 個のルーチン
ゲームのコードに入った場所のすべて。呼び出し、割り込み、テーブル経由のジャンプのどれかで入る。規則が名付けたものを先に、規則が見たものと一緒に並べる。
| 場所 | 入り方 | 回数 | 何であるか、その証拠 |
|---|---|---|---|
| $911E | 呼び出し | 161,477 | スプライトの書き手: 走ったフレーム 10,092、スプライトのページへの書き込み 243,315 |
| $91EC | 呼び出し | 81,105 | スプライトの書き手: 走ったフレーム 5,932、スプライトのページへの書き込み 81,103 |
| $8207 | 呼び出し | 22,502 | ジャンプエンジン: テーブル 9、そこを通った跳躍 22,502 |
| $CC12 | 呼び出し | 20,194 | パッドの読み取り: ポート $4016、一フレームの読み 16、一フレームのストローブ 4 パッドの読み取り: ポート $4017、一フレームの読み 16、一フレームのストローブ 4 |
| $CE58 | 呼び出し | 13,960 | サウンドドライバ: 走ったフレーム 3,528、書き込み 1,067 |
| $CAF5 | 毎フレーム(NMI) | 10,138 | 割り込みの中のゲーム: 走ったフレーム 10,138、全フレーム 10,257、待機の場所 $CAF2 |
| $90A5 | 呼び出し | 10,109 | パレットの書き手: 走ったフレーム 10,109、書き込み 1,440 画面メモリへの書き手: 走ったフレーム 10,109、書き込み 19,680、ブランク中 19,680、描画中 0 |
| $CB69 | 呼び出し | 10,109 | スクロールの書き手: 走ったフレーム 10,109、ブランク中の書き込み 20,218 |
| $8000 | 呼び出し | 10,097 | 乱数のバイト: 走ったフレーム 9,935、バイト $003C,$003D、回転 2、排他的論理和 1 |
| $9292 | 呼び出し | 10,095 | スプライトの書き手: 走ったフレーム 10,092、スプライトのページへの書き込み 564,785 |
| $E88D | 呼び出し | 116 | スプライトの書き手: 走ったフレーム 116、スプライトのページへの書き込み 116 |
| $CC3B | 呼び出し | 40 | バンク切り替え: 書き込み 80、ブランク中 0、描画中 80 |
| $CA85 | 電源投入 | 17 | バンク切り替え: 書き込み 34、ブランク中 34、描画中 0 スプライトの書き手: 走ったフレーム 10,172、スプライトのページへの書き込み 4,352 |
| $CC37 | 呼び出し | 17 | バンク切り替え: 書き込み 34、ブランク中 0、描画中 34 |
| $8452 | 呼び出し | 128,000 | |
| $9329 | 呼び出し | 91,197 | |
| $D3CD | 呼び出し | 13,960 | |
| $CB9F | 呼び出し | 10,109 | |
| $CBB5 | 呼び出し | 10,098 | |
| $CD6C | 呼び出し | 10,098 | |
| $CDDA | 呼び出し | 10,098 | |
| $CE3C | 呼び出し | 10,098 | |
| $CBDB | 呼び出し | 10,097 | |
| $CBF7 | 呼び出し | 10,097 | |
| $84FD | 呼び出し | 10,092 | |
| $D430 | 呼び出し | 7,147 | |
| $CE35 | 呼び出し | 6,719 | |
| $D4C9 | 呼び出し | 6,355 | |
| $8132 | 呼び出し | 5,698 | |
| $811C | テーブル | 4,111 | |
| $8220 | 呼び出し | 3,871 | |
| $D20E | 呼び出し | 3,316 | |
| $D237 | 呼び出し | 3,316 | |
| $802D | テーブル | 3,180 | |
| $9C73 | テーブル | 2,748 | |
| $9CDC | テーブル | 2,736 | |
| $E510 | 呼び出し | 2,736 | |
| $E8B9 | 呼び出し | 2,572 | |
| $E5D4 | テーブル | 2,513 | |
| $D1A7 | 呼び出し | 2,483 | |
| $D1C6 | 呼び出し | 2,483 | |
| $E611 | テーブル | 2,396 | |
| $E85F | 呼び出し | 2,396 | |
| $E8E0 | 呼び出し | 2,396 | |
| $D252 | 呼び出し | 1,970 | |
| $84F4 | 呼び出し | 1,914 | |
| $84A1 | 呼び出し | 1,870 | |
| $81B5 | 呼び出し | 1,570 | |
| $C272 | 呼び出し | 934 | |
| $D0B7 | 呼び出し | 924 | |
| $D1D3 | 呼び出し | 833 | |
| $C28E | テーブル | 705 | |
| $C29D | 呼び出し | 705 | |
| $C4FF | 呼び出し | 705 | |
| $C54A | 呼び出し | 667 | |
| $C286 | テーブル | 594 | |
| $C55F | 呼び出し | 358 | |
| $CC8E | 呼び出し | 352 | |
| $C56A | 呼び出し | 347 | |
| $D3E7 | テーブル | 302 | |
| $C243 | 呼び出し | 294 | |
| $D2BA | テーブル | 292 | |
| $C268 | 呼び出し | 229 | |
| $84EE | 呼び出し | 185 | |
| $84F6 | 呼び出し | 185 | |
| $E59A | テーブル | 176 | |
| $E5AF | テーブル | 176 | |
| $C145 | 呼び出し | 147 | |
| $C190 | 呼び出し | 147 | |
| $C196 | 呼び出し | 147 | |
| $E81A | 呼び出し | 147 | |
| $CB89 | 呼び出し | 102 | |
| $D370 | テーブル | 102 | |
| $D1FD | 呼び出し | 92 | |
| $D39C | 呼び出し | 90 | |
| $D38F | 呼び出し | 86 | |
| $C4E3 | 呼び出し | 82 | |
| $D2C1 | テーブル | 67 | |
| $E575 | 呼び出し | 60 | |
| $E5DF | テーブル | 60 | |
| $E5FA | テーブル | 57 | |
| $C1F1 | 呼び出し | 49 | |
| $C216 | テーブル | 49 | |
| $C21F | テーブル | 49 | |
| $C4C4 | 呼び出し | 49 | |
| $CEBE | 呼び出し | 49 | |
| $E51D | テーブル | 47 | |
| $83E4 | 呼び出し | 45 | |
| $CD57 | 呼び出し | 45 | |
| $E94D | 呼び出し | 42 | |
| $814C | 呼び出し | 40 | |
| $83E0 | 呼び出し | 40 | |
| $D2D4 | テーブル | 40 | |
| $C555 | 呼び出し | 38 | |
| $CBC3 | 呼び出し | 37 | |
| $8143 | 呼び出し | 34 | |
| $C23C | 呼び出し | 33 | |
| $C2AF | テーブル | 33 | |
| $C2F7 | 呼び出し | 33 | |
| $C33E | 呼び出し | 33 | |
| $CC56 | 呼び出し | 33 | |
| $E940 | 呼び出し | 31 | |
| $81D4 | 呼び出し | 28 | |
| $9E2B | テーブル | 23 | |
| $9E1F | テーブル | 22 | |
| $E918 | 呼び出し | 20 | |
| $8157 | テーブル | 17 | |
| $8174 | テーブル | 17 | |
| $817F | テーブル | 17 | |
| $CA8A | 割り込み(IRQ) | 17 | |
| $CB53 | 呼び出し | 17 | |
| $83BA | 呼び出し | 16 | |
| $D340 | テーブル | 15 | |
| $80F2 | テーブル | 12 | |
| $8107 | テーブル | 12 | |
| $81CF | 呼び出し | 12 | |
| $81D8 | 呼び出し | 12 | |
| $9CA8 | テーブル | 12 | |
| $9CE7 | テーブル | 12 | |
| $E645 | 呼び出し | 9 | |
| $9E27 | テーブル | 4 | |
| $D3DA | 呼び出し | 4 | |
| $E908 | 呼び出し | 2 |
待つ場所
規則が名付けたループのうち、ルーチンの内側にあって、それ自身はコードの入口ではないもの。
| 場所 | 何であるか、その証拠 |
|---|---|
| $CAF2 | 待機のループ: 周回 74,970,040、一フレームの周回 7,309 |
ジャンプエンジンのテーブル
テーブルはそれぞれ、エンジンへの呼び出しの直後にある。項目は、走行が選ぶのを見た所までを数える。本当のテーブルはもっと長いかもしれない。最後の列は、その値が項目を選んだメモリのバイトで、追えた場合だけ書いてある: ゲームのモードか、物体の一つが今していることだ。
| 場所 | 項目 | 選ばれた数 | 選んだバイト |
|---|---|---|---|
| $801B | 9 | 7 | $0018 |
| $8179 | 1 | 1 | $0090 |
| $9C8A | 2 | 2 | $0034 |
| $9CE1 | 2 | 2 | $0090 |
| $C1F8 | 11 | 5 | $0053 |
| $E515 | 3 | 3 | $008E |
| $E59F | 1 | 1 | $008F |
| $E5D9 | 3 | 3 | $008F |
| $E885 | 3 | 3 | $002E |
ルーチンが共有するメモリ
あるルーチンが書き、別のルーチンが読んだメモリは 262 バイト。添字を通して届いた場所は 60 か所で、メモリの中のテーブルや、物体の枠の並びはそう見える。
添字で届いた範囲: 位置を含むもの、次いで最も長いもの
| 起点 | 届いたバイト | 命令 | 含まれる位置 |
|---|---|---|---|
| $0300 | 256 | 14 | |
| $0700 | 256 | 7 | |
| $0400 | 256 | 1 | |
| $0500 | 256 | 1 | |
| $0200 | 253 | 2 | |
| $0201 | 253 | 1 | |
| $0202 | 253 | 1 | |
| $0203 | 253 | 1 | |
| $0000 | 152 | 4 | |
| $0600 | 128 | 1 | |
| $040F | 17 | 1 | |
| $0460 | 16 | 3 |
最も忙しい共有バイト 24 個
| バイト | 読み書き | 書くルーチン | 読むルーチン |
|---|---|---|---|
| $0000 | 984,210 | 6 | 6 |
| $0001 | 824,556 | 6 | 6 |
| $0008 | 778,447 | 4 | 5 |
| $0009 | 753,799 | 2 | 3 |
| $0003 | 600,520 | 6 | 6 |
| $0002 | 559,512 | 6 | 6 |
| $000E | 263,497 | 2 | 3 |
| $000C | 214,034 | 2 | 3 |
| $000B | 172,316 | 2 | 2 |
| $00AB | 88,058 | 2 | 6 |
| $0022 | 82,095 | 2 | 3 |
| $00F7 | 60,616 | 2 | 3 |
| $009A | 41,813 | 6 | 6 |
| $000D | 37,429 | 2 | 3 |
| $0032 | 35,358 | 6 | 6 |
| $0030 | 35,145 | 3 | 4 |
| $00F5 | 33,465 | 2 | 4 |
| $00A5 | 32,458 | 6 | 6 |
| $001E | 31,592 | 6 | 6 |
| $0098 | 27,530 | 3 | 6 |
| $0099 | 27,530 | 3 | 6 |
| $00AC | 24,092 | 1 | 3 |
| $00FF | 22,567 | 4 | 4 |
| $001D | 21,267 | 5 | 3 |
このページはゲームのバイトを一つも見せない。これらの数を読み取ったリスティングは、カートリッジと一緒に留まる。