NEStinymachines

パターン

パターンとは、ゲームが繰り返しやることだ。ここにあるものはどれも、コードが走っている間にしたことについての規則で見つけたもので、バイトがどう見えるかでは決して見つけない。証拠が無いときは、何も名付けない。

数は注意して読むこと。サウンドドライバと画面メモリへの書き手がすべてのゲームで見つかるのは、その規則が「一番多くやったルーチン」を選ぶからで、そういうルーチンは必ず一つある。ほかのものは、証拠があった所でだけ見つかる。

パッドの読み取り

コントローラを読むルーチン。したことで名付ける: 走ったフレームごとに、パッドのポートをボタン一つにつき一回、少なくとも八回読んだ。

19 本すべてのゲームで見つかった。ルーチンは 38 個。

待機のループ

自分自身へ跳ぶ一つの命令。メインのプログラムは次のフレームまですることが無く、ここで待つ。

19 本のうち 4 本で見つかった。ルーチンは 4 個:

数える待機ループ

出口の無い輪になった数個の命令で、メモリの一バイトを変えることしかしない。待機のループと同じく、メインのプログラムはフレームの間ここに居る。そのバイトは、読む側にとっては乱数も同然だ。どこまで進んだかは、そのフレームの仕事にかかった時間で決まるからだ。

19 本のうち 4 本で見つかった。ルーチンは 4 個:

割り込みの中のゲーム

メインのプログラムが待つだけのとき、ゲームのすべては、映像チップがフレームごとに一度起こす割り込みのハンドラの中で走る。待機のループか数える待機ループがあり、ハンドラがフレームの半分以上で走ったとき、そのハンドラをこう名付ける。

19 本のうち 8 本で見つかった。ルーチンは 8 個:

フレーム待ち

メモリの一バイトを読んで調べることだけを繰り返すループ。ループの中の何ものもそのバイトを変えられないので、映像チップがフレームごとに一度起こす割り込みがそれを変えるまで、ゲームはそこに留まる。その割り込みのハンドラ、またはハンドラが呼ぶルーチンがそのバイトに書いたとき、ループをこう名付ける。ゲームはこうした待ちを何か所にも持つことがあり、待つ相手は旗のこともあれば、ハンドラが減らしていくカウンタのこともある。待ちの一周ごとに小さな用事を済ませるゲームもある。

19 本のうち 12 本で見つかった。ルーチンは 37 個:

ジャンプエンジン

次にどこへ行くかを選ぶために、ほかのコードが呼ぶルーチン。呼び出しの直後にアドレスのテーブルが続き、エンジンは番号でそこを通って跳ぶ。そうした呼び出しが届くルーチンとして名付け、それぞれのテーブルは、走行が項目を選ぶのを見た範囲まで書き出す。

19 本のうち 15 本で見つかった。ルーチンは 23 個:

バンク切り替え

カートリッジ自身のアドレス範囲へ書き込んだルーチン。そこにレジスタを持つ基板では、その書き込みが、コンソールに見えるプログラムの部分を選ぶ。

19 本のうち 18 本で見つかった。ルーチンは 139 個:

画面メモリへの書き手

画面メモリへ書いたルーチンのうち、ほとんどのフレームで走ったものの中で最も多く書いたもの。証拠は、その書き込みのうち絵と絵の間のブランクに入った数と、描画中に入った数を言う。

19 本すべてのゲームで見つかった。ルーチンは 19 個。

パレットの書き手

画面メモリのアドレスがパレットを指している間に書き込んだルーチン。ゲームが設定するアドレスを追うので、どの書き込みもどこかに着地する。

19 本すべてのゲームで見つかった。ルーチンは 30 個。

スプライトの書き手

コンソールが毎フレーム、スプライトの表へ写すメモリのページに書き込んだルーチン。動くものを画面に置くのはこれらのルーチンだ。

19 本すべてのゲームで見つかった。ルーチンは 178 個。

スクロールの書き手

走ったすべてのフレームで、ブランクの間にスクロールを設定したルーチン。

19 本すべてのゲームで見つかった。ルーチンは 20 個。

画面の分割

絵が描かれている間に映像チップのステータスを一フレームに何度も見張り、それからそこでスクロールを動かすルーチン。スクロールする画面の上でステータスバーが止まっていられるのは、このためだ。

19 本のうち 6 本で見つかった。ルーチンは 9 個:

サウンドドライバ

音源チップのレジスタへ書いたルーチンのうち、ほとんどのフレームで走ったものの中で最も多く書いたもの。

19 本すべてのゲームで見つかった。ルーチンは 19 個。

乱数のバイト

ルーチンが毎フレーム、自分自身から書き直すメモリ。そのバイトへの回転と、同じルーチンのどこかにある排他的論理和を伴う。ゲームのさいころだ。

19 本のうち 8 本で見つかった。ルーチンは 11 個:

二つのものを比べる所

画面上の別々の二つのものの位置を、比べるか引き算するルーチン。それぞれの値を、読み込まれた元のメモリのバイトから、ゲームが写していく先々を通して追い、どのバイトがスプライトの位置になるかを見る。そのうえで、そうしたバイトの二つが出会うルーチンを名付ける。当たり判定の心臓部だ。敵がプレイヤーはどちら側かを知る方法でもあり、ゲームが描くものを奥行きの順に並べる方法でもある。この規則はそれらを区別しない。

19 本のうち 8 本で見つかった。ルーチンは 18 個: