NEStinymachines

パターン

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

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

パッドの読み取り

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

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

私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのような手触りのジャンプ、走ること、そして走ってのジャンプが高く上がるわけ、マリオのように見分ける、踏みつけとぶつかり、マリオのものと同じ、絵の内側の箱、マリオのように固い、地面とブロックと壁、マリオのリフトのように、乗ると運んでくれる動く足場、マリオのように、ブロックから出るコインと点数、マリオのクリボーのように、壁でも互いにでも向きを変える歩き手、マリオのようにスクロールする絵、マリオのものと同じ、カメラの遊び、ゼルダのように滑り込む部屋、マリオのように、一つのバイトが画面を選ぶ、マリオのように、動かないステータスバー、マリオのように、一行に多すぎるスプライトは消えずにちらつく、マリオのように、レベルの中に描くタイトル、ゼルダのように、表から打ち込む名前、マリオのように、世界を止めておくポーズ、マリオのように、命を失ってやり直す、マリオのものと同じ、レベルの終わり、マリオのように、穴に落ちる、最後の命と、そのあとに来るもの、マリオのように、ゼルダのように、絵が滑ってどいて現れるアイテム画面、マリオのように、曲のチャンネルを借りるジャンプの音

待機のループ

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

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

数える待機ループ

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

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

割り込みの中のゲーム

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

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

フレーム待ち

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

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

私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのような手触りのジャンプ、走ること、そして走ってのジャンプが高く上がるわけ、マリオのように見分ける、踏みつけとぶつかり、マリオのものと同じ、絵の内側の箱、マリオのように固い、地面とブロックと壁、マリオのリフトのように、乗ると運んでくれる動く足場、マリオのように、ブロックから出るコインと点数、マリオのクリボーのように、壁でも互いにでも向きを変える歩き手、マリオのようにスクロールする絵、マリオのものと同じ、カメラの遊び、ゼルダのように滑り込む部屋、マリオのように、一つのバイトが画面を選ぶ、マリオのように、動かないステータスバー、マリオのように、一行に多すぎるスプライトは消えずにちらつく、ゼルダのように、描かずに動くスプラッシュ画面、マリオのように、レベルの中に描くタイトル、ゼルダのように、表から打ち込む名前、マリオのように、世界を止めておくポーズ、マリオのように、命を失ってやり直す、マリオのものと同じ、レベルの終わり、マリオのように、穴に落ちる、最後の命と、そのあとに来るもの、マリオのように、ゼルダのように、絵が滑ってどいて現れるアイテム画面、ゼルダの物語のように、画面を這い上がる言葉、マリオのように、曲のチャンネルを借りるジャンプの音

ジャンプエンジン

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

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

私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのように、一つのバイトが画面を選ぶ

メモリに置かれたハンドラ

メモリから写したアドレスを通って跳ぶルーチン。ジャンプエンジンならカートリッジの中で引くところだ。画面上のものそれぞれが、自分のコードのアドレスを位置の隣に持っていて、このルーチンがそれらを順に走らせる。アドレスは、写された元のバイトまでたどる。

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

バンク切り替え

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

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

画面メモリへの書き手

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

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

私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのような手触りのジャンプ、走ること、そして走ってのジャンプが高く上がるわけ、マリオのように見分ける、踏みつけとぶつかり、マリオのものと同じ、絵の内側の箱、マリオのように固い、地面とブロックと壁、マリオのリフトのように、乗ると運んでくれる動く足場、マリオのように、ブロックから出るコインと点数、マリオのクリボーのように、壁でも互いにでも向きを変える歩き手、マリオのようにスクロールする絵、マリオのものと同じ、カメラの遊び、ゼルダのように滑り込む部屋、マリオのように、一つのバイトが画面を選ぶ、マリオのように、動かないステータスバー、マリオのように、一行に多すぎるスプライトは消えずにちらつく、ゼルダのように、描かずに動くスプラッシュ画面、マリオのように、レベルの中に描くタイトル、ゼルダのように、表から打ち込む名前、マリオのように、世界を止めておくポーズ、マリオのように、命を失ってやり直す、マリオのものと同じ、レベルの終わり、マリオのように、穴に落ちる、最後の命と、そのあとに来るもの、マリオのように、ゼルダのように、絵が滑ってどいて現れるアイテム画面、ゼルダの物語のように、画面を這い上がる言葉、マリオのように、曲のチャンネルを借りるジャンプの音

パレットの書き手

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

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

私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのような手触りのジャンプ、走ること、そして走ってのジャンプが高く上がるわけ、マリオのように見分ける、踏みつけとぶつかり、マリオのものと同じ、絵の内側の箱、マリオのように固い、地面とブロックと壁、マリオのリフトのように、乗ると運んでくれる動く足場、マリオのように、ブロックから出るコインと点数、マリオのクリボーのように、壁でも互いにでも向きを変える歩き手、マリオのようにスクロールする絵、マリオのものと同じ、カメラの遊び、ゼルダのように滑り込む部屋、マリオのように、一つのバイトが画面を選ぶ、マリオのように、動かないステータスバー、マリオのように、一行に多すぎるスプライトは消えずにちらつく、ゼルダのように、描かずに動くスプラッシュ画面、マリオのように、レベルの中に描くタイトル、ゼルダのように、表から打ち込む名前、マリオのように、世界を止めておくポーズ、マリオのように、命を失ってやり直す、マリオのものと同じ、レベルの終わり、マリオのように、穴に落ちる、最後の命と、そのあとに来るもの、マリオのように、ゼルダのように、絵が滑ってどいて現れるアイテム画面、ゼルダの物語のように、画面を這い上がる言葉、マリオのように、曲のチャンネルを借りるジャンプの音

スプライトの書き手

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

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

私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのような手触りのジャンプ、走ること、そして走ってのジャンプが高く上がるわけ、マリオのように見分ける、踏みつけとぶつかり、マリオのものと同じ、絵の内側の箱、マリオのように固い、地面とブロックと壁、マリオのリフトのように、乗ると運んでくれる動く足場、マリオのように、ブロックから出るコインと点数、マリオのクリボーのように、壁でも互いにでも向きを変える歩き手、マリオのようにスクロールする絵、マリオのものと同じ、カメラの遊び、ゼルダのように滑り込む部屋、マリオのように、一つのバイトが画面を選ぶ、マリオのように、動かないステータスバー、マリオのように、一行に多すぎるスプライトは消えずにちらつく、ゼルダのように、描かずに動くスプラッシュ画面、マリオのように、レベルの中に描くタイトル、ゼルダのように、表から打ち込む名前、マリオのように、世界を止めておくポーズ、マリオのように、命を失ってやり直す、マリオのものと同じ、レベルの終わり、マリオのように、穴に落ちる、最後の命と、そのあとに来るもの、マリオのように、ゼルダのように、絵が滑ってどいて現れるアイテム画面、ゼルダの物語のように、画面を這い上がる言葉、マリオのように、曲のチャンネルを借りるジャンプの音

スクロールの書き手

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

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

私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのような手触りのジャンプ、走ること、そして走ってのジャンプが高く上がるわけ、マリオのように見分ける、踏みつけとぶつかり、マリオのものと同じ、絵の内側の箱、マリオのように固い、地面とブロックと壁、マリオのように、ブロックから出るコインと点数、マリオのようにスクロールする絵、マリオのものと同じ、カメラの遊び、ゼルダのように滑り込む部屋、マリオのように、一つのバイトが画面を選ぶ、マリオのように、動かないステータスバー、マリオのように、レベルの中に描くタイトル、マリオのように、世界を止めておくポーズ、ゼルダのように、絵が滑ってどいて現れるアイテム画面、ゼルダの物語のように、画面を這い上がる言葉、マリオのように、曲のチャンネルを借りるジャンプの音

画面の分割

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

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

私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのように、動かないステータスバー

サウンドドライバ

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

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

私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: ゼルダのように、表から打ち込む名前、マリオのように、世界を止めておくポーズ、マリオのように、曲のチャンネルを借りるジャンプの音

乱数のバイト

ルーチンが自分自身から書き直すメモリ。そのバイトへの回転と、同じルーチンの中の排他的論理和を伴い、ルーチンは古い値も見て、バイトはフレームからフレームへ値を保つ。ゲームのさいころだ。

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

二つのものを比べる所

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

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

私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのように見分ける、踏みつけとぶつかり、マリオのものと同じ、絵の内側の箱、マリオのリフトのように、乗ると運んでくれる動く足場、マリオのクリボーのように、壁でも互いにでも向きを変える歩き手、マリオのように、命を失ってやり直す、マリオのように、穴に落ちる、最後の命と、そのあとに来るもの、マリオのように