パターン
パターンとは、ゲームが繰り返しやることだ。ここにあるものはどれも、コードが走っている間にしたことについての規則で見つけたもので、バイトがどう見えるかでは決して見つけない。証拠が無いときは、何も名付けない。
数は注意して読むこと。サウンドドライバと画面メモリへの書き手がすべてのゲームで見つかるのは、その規則が「一番多くやったルーチン」を選ぶからで、そういうルーチンは必ず一つある。ほかのものは、証拠があった所でだけ見つかる。
パッドの読み取り
コントローラを読むルーチン。したことで名付ける: 走ったフレームごとに、パッドのポートをボタン一つにつき一回、少なくとも八回読んだ。
19 本すべてのゲームで見つかった。ルーチンは 40 個。
私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのような手触りのジャンプ、走ること、そして走ってのジャンプが高く上がるわけ、マリオのように見分ける、踏みつけとぶつかり、マリオのものと同じ、絵の内側の箱、マリオのように固い、地面とブロックと壁、マリオのリフトのように、乗ると運んでくれる動く足場、マリオのように、ブロックから出るコインと点数、マリオのクリボーのように、壁でも互いにでも向きを変える歩き手、マリオのようにスクロールする絵、マリオのものと同じ、カメラの遊び、ゼルダのように滑り込む部屋、マリオのように、一つのバイトが画面を選ぶ、マリオのように、動かないステータスバー、マリオのように、一行に多すぎるスプライトは消えずにちらつく、マリオのように、レベルの中に描くタイトル、ゼルダのように、表から打ち込む名前、マリオのように、世界を止めておくポーズ、マリオのように、命を失ってやり直す、マリオのものと同じ、レベルの終わり、マリオのように、穴に落ちる、最後の命と、そのあとに来るもの、マリオのように、ゼルダのように、絵が滑ってどいて現れるアイテム画面、マリオのように、曲のチャンネルを借りるジャンプの音
待機のループ
自分自身へ跳ぶ一つの命令。メインのプログラムは次のフレームまですることが無く、ここで待つ。
19 本のうち 4 本で見つかった。ルーチンは 4 個:
数える待機ループ
出口の無い輪になった数個の命令で、メモリの一バイトを変えることしかしない。待機のループと同じく、メインのプログラムはフレームの間ここに居る。そのバイトは、読む側にとっては乱数も同然だ。どこまで進んだかは、そのフレームの仕事にかかった時間で決まるからだ。
19 本のうち 4 本で見つかった。ルーチンは 4 個:
割り込みの中のゲーム
メインのプログラムが待つだけのとき、ゲームのすべては、映像チップがフレームごとに一度起こす割り込みのハンドラの中で走る。待機のループか数える待機ループがあり、ハンドラがフレームの半分以上で走ったとき、そのハンドラをこう名付ける。
19 本のうち 8 本で見つかった。ルーチンは 8 個:
フレーム待ち
メモリの一バイトを読んで調べることだけを繰り返すループ。ループの中の何ものもそのバイトを変えられないので、映像チップがフレームごとに一度起こす割り込みがそれを変えるまで、ゲームはそこに留まる。その割り込みのハンドラ、またはハンドラが呼ぶルーチンがそのバイトに書いたとき、ループをこう名付ける。ゲームはこうした待ちを何か所にも持つことがあり、待つ相手は旗のこともあれば、ハンドラが減らしていくカウンタのこともある。待ちの一周ごとに小さな用事を済ませるゲームもある。
19 本のうち 13 本で見つかった。ルーチンは 49 個:
- Battle Chess (USA)
- Blaster Master (USA)
- Defender II (USA)
- Fester's Quest (USA)
- Goonies II, The (USA)
- Metroid (USA)
- Mike Tyson's Punch-Out!! (Japan, USA) (En)
- Ninja Gaiden (USA)
- Super Mario Bros. + Duck Hunt (USA)
- Super Mario Bros. 2 (USA) (Rev 1)
- Super Mario Bros. 3 (USA) (Rev 1)
- Tetris (USA)
- Zelda II - The Adventure of Link (USA)
私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのような手触りのジャンプ、走ること、そして走ってのジャンプが高く上がるわけ、マリオのように見分ける、踏みつけとぶつかり、マリオのものと同じ、絵の内側の箱、マリオのように固い、地面とブロックと壁、マリオのリフトのように、乗ると運んでくれる動く足場、マリオのように、ブロックから出るコインと点数、マリオのクリボーのように、壁でも互いにでも向きを変える歩き手、マリオのようにスクロールする絵、マリオのものと同じ、カメラの遊び、ゼルダのように滑り込む部屋、マリオのように、一つのバイトが画面を選ぶ、マリオのように、動かないステータスバー、マリオのように、一行に多すぎるスプライトは消えずにちらつく、ゼルダのように、描かずに動くスプラッシュ画面、マリオのように、レベルの中に描くタイトル、ゼルダのように、表から打ち込む名前、マリオのように、世界を止めておくポーズ、マリオのように、命を失ってやり直す、マリオのものと同じ、レベルの終わり、マリオのように、穴に落ちる、最後の命と、そのあとに来るもの、マリオのように、ゼルダのように、絵が滑ってどいて現れるアイテム画面、ゼルダの物語のように、画面を這い上がる言葉、マリオのように、曲のチャンネルを借りるジャンプの音
ジャンプエンジン
次にどこへ行くかを選ぶために、ほかのコードが呼ぶルーチン。呼び出しの直後にアドレスのテーブルが続き、エンジンは番号でそこを通って跳ぶ。そうした呼び出しが届くルーチンとして名付け、それぞれのテーブルは、走行が項目を選ぶのを見た範囲まで書き出す。
19 本のうち 16 本で見つかった。ルーチンは 29 個:
- Blades of Steel (USA)
- Double Dribble (USA) (Rev 1)
- Fester's Quest (USA)
- Goonies II, The (USA)
- Legend of Zelda, The (USA) (Rev 1)
- Metroid (USA)
- Mike Tyson's Punch-Out!! (Japan, USA) (En)
- Ninja Gaiden (USA)
- Paperboy (USA)
- Q-bert (USA)
- Super Mario Bros. + Duck Hunt (USA)
- Super Mario Bros. 2 (USA) (Rev 1)
- Super Mario Bros. 3 (USA) (Rev 1)
- Teenage Mutant Ninja Turtles (USA)
- Tetris (USA)
- Zelda II - The Adventure of Link (USA)
私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのように、一つのバイトが画面を選ぶ
メモリに置かれたハンドラ
メモリから写したアドレスを通って跳ぶルーチン。ジャンプエンジンならカートリッジの中で引くところだ。画面上のものそれぞれが、自分のコードのアドレスを位置の隣に持っていて、このルーチンがそれらを順に走らせる。アドレスは、写された元のバイトまでたどる。
19 本のうち 4 本で見つかった。ルーチンは 9 個:
バンク切り替え
カートリッジ自身のアドレス範囲へ書き込んだルーチン。そこにレジスタを持つ基板では、その書き込みが、コンソールに見えるプログラムの部分を選ぶ。
19 本のうち 18 本で見つかった。ルーチンは 178 個:
- Battle Chess (USA)
- Blades of Steel (USA)
- Blaster Master (USA)
- Double Dribble (USA) (Rev 1)
- Fester's Quest (USA)
- Goonies II, The (USA)
- Legend of Zelda, The (USA) (Rev 1)
- Metroid (USA)
- Mike Tyson's Punch-Out!! (Japan, USA) (En)
- Ninja Gaiden (USA)
- Paperboy (USA)
- Q-bert (USA)
- Super Mario Bros. + Duck Hunt (USA)
- Super Mario Bros. 2 (USA) (Rev 1)
- Super Mario Bros. 3 (USA) (Rev 1)
- Teenage Mutant Ninja Turtles (USA)
- Tetris (USA)
- Zelda II - The Adventure of Link (USA)
画面メモリへの書き手
画面メモリへ書いたルーチンのうち、ほとんどのフレームで走ったものの中で最も多く書いたもの。証拠は、その書き込みのうち絵と絵の間のブランクに入った数と、描画中に入った数を言う。
19 本すべてのゲームで見つかった。ルーチンは 19 個。
私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのような手触りのジャンプ、走ること、そして走ってのジャンプが高く上がるわけ、マリオのように見分ける、踏みつけとぶつかり、マリオのものと同じ、絵の内側の箱、マリオのように固い、地面とブロックと壁、マリオのリフトのように、乗ると運んでくれる動く足場、マリオのように、ブロックから出るコインと点数、マリオのクリボーのように、壁でも互いにでも向きを変える歩き手、マリオのようにスクロールする絵、マリオのものと同じ、カメラの遊び、ゼルダのように滑り込む部屋、マリオのように、一つのバイトが画面を選ぶ、マリオのように、動かないステータスバー、マリオのように、一行に多すぎるスプライトは消えずにちらつく、ゼルダのように、描かずに動くスプラッシュ画面、マリオのように、レベルの中に描くタイトル、ゼルダのように、表から打ち込む名前、マリオのように、世界を止めておくポーズ、マリオのように、命を失ってやり直す、マリオのものと同じ、レベルの終わり、マリオのように、穴に落ちる、最後の命と、そのあとに来るもの、マリオのように、ゼルダのように、絵が滑ってどいて現れるアイテム画面、ゼルダの物語のように、画面を這い上がる言葉、マリオのように、曲のチャンネルを借りるジャンプの音
パレットの書き手
画面メモリのアドレスがパレットを指している間に書き込んだルーチン。ゲームが設定するアドレスを追うので、どの書き込みもどこかに着地する。
19 本すべてのゲームで見つかった。ルーチンは 31 個。
私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのような手触りのジャンプ、走ること、そして走ってのジャンプが高く上がるわけ、マリオのように見分ける、踏みつけとぶつかり、マリオのものと同じ、絵の内側の箱、マリオのように固い、地面とブロックと壁、マリオのリフトのように、乗ると運んでくれる動く足場、マリオのように、ブロックから出るコインと点数、マリオのクリボーのように、壁でも互いにでも向きを変える歩き手、マリオのようにスクロールする絵、マリオのものと同じ、カメラの遊び、ゼルダのように滑り込む部屋、マリオのように、一つのバイトが画面を選ぶ、マリオのように、動かないステータスバー、マリオのように、一行に多すぎるスプライトは消えずにちらつく、ゼルダのように、描かずに動くスプラッシュ画面、マリオのように、レベルの中に描くタイトル、ゼルダのように、表から打ち込む名前、マリオのように、世界を止めておくポーズ、マリオのように、命を失ってやり直す、マリオのものと同じ、レベルの終わり、マリオのように、穴に落ちる、最後の命と、そのあとに来るもの、マリオのように、ゼルダのように、絵が滑ってどいて現れるアイテム画面、ゼルダの物語のように、画面を這い上がる言葉、マリオのように、曲のチャンネルを借りるジャンプの音
スプライトの書き手
コンソールが毎フレーム、スプライトの表へ写すメモリのページに書き込んだルーチン。動くものを画面に置くのはこれらのルーチンだ。
19 本すべてのゲームで見つかった。ルーチンは 261 個。
私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのような手触りのジャンプ、走ること、そして走ってのジャンプが高く上がるわけ、マリオのように見分ける、踏みつけとぶつかり、マリオのものと同じ、絵の内側の箱、マリオのように固い、地面とブロックと壁、マリオのリフトのように、乗ると運んでくれる動く足場、マリオのように、ブロックから出るコインと点数、マリオのクリボーのように、壁でも互いにでも向きを変える歩き手、マリオのようにスクロールする絵、マリオのものと同じ、カメラの遊び、ゼルダのように滑り込む部屋、マリオのように、一つのバイトが画面を選ぶ、マリオのように、動かないステータスバー、マリオのように、一行に多すぎるスプライトは消えずにちらつく、ゼルダのように、描かずに動くスプラッシュ画面、マリオのように、レベルの中に描くタイトル、ゼルダのように、表から打ち込む名前、マリオのように、世界を止めておくポーズ、マリオのように、命を失ってやり直す、マリオのものと同じ、レベルの終わり、マリオのように、穴に落ちる、最後の命と、そのあとに来るもの、マリオのように、ゼルダのように、絵が滑ってどいて現れるアイテム画面、ゼルダの物語のように、画面を這い上がる言葉、マリオのように、曲のチャンネルを借りるジャンプの音
スクロールの書き手
走ったすべてのフレームで、ブランクの間にスクロールを設定したルーチン。
19 本すべてのゲームで見つかった。ルーチンは 21 個。
私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのような手触りのジャンプ、走ること、そして走ってのジャンプが高く上がるわけ、マリオのように見分ける、踏みつけとぶつかり、マリオのものと同じ、絵の内側の箱、マリオのように固い、地面とブロックと壁、マリオのように、ブロックから出るコインと点数、マリオのようにスクロールする絵、マリオのものと同じ、カメラの遊び、ゼルダのように滑り込む部屋、マリオのように、一つのバイトが画面を選ぶ、マリオのように、動かないステータスバー、マリオのように、レベルの中に描くタイトル、マリオのように、世界を止めておくポーズ、ゼルダのように、絵が滑ってどいて現れるアイテム画面、ゼルダの物語のように、画面を這い上がる言葉、マリオのように、曲のチャンネルを借りるジャンプの音
画面の分割
絵が描かれている間に映像チップのステータスを一フレームに何度も見張り、それからそこでスクロールを動かすルーチン。スクロールする画面の上でステータスバーが止まっていられるのは、このためだ。
19 本のうち 11 本で見つかった。ルーチンは 16 個:
- Blades of Steel (USA)
- Defender II (USA)
- Double Dribble (USA) (Rev 1)
- Goonies II, The (USA)
- Legend of Zelda, The (USA) (Rev 1)
- Metroid (USA)
- Mike Tyson's Punch-Out!! (Japan, USA) (En)
- Ninja Gaiden (USA)
- Super Mario Bros. + Duck Hunt (USA)
- Teenage Mutant Ninja Turtles (USA)
- Zelda II - The Adventure of Link (USA)
私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのように、動かないステータスバー
サウンドドライバ
音源チップのレジスタへ書いたルーチンのうち、ほとんどのフレームで走ったものの中で最も多く書いたもの。
19 本すべてのゲームで見つかった。ルーチンは 19 個。
私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: ゼルダのように、表から打ち込む名前、マリオのように、世界を止めておくポーズ、マリオのように、曲のチャンネルを借りるジャンプの音
乱数のバイト
ルーチンが自分自身から書き直すメモリ。そのバイトへの回転と、同じルーチンの中の排他的論理和を伴い、ルーチンは古い値も見て、バイトはフレームからフレームへ値を保つ。ゲームのさいころだ。
19 本のうち 14 本で見つかった。ルーチンは 20 個:
- Battle Chess (USA)
- Defender II (USA)
- Double Dribble (USA) (Rev 1)
- Goonies II, The (USA)
- Legend of Zelda, The (USA) (Rev 1)
- Metroid (USA)
- Ninja Gaiden (USA)
- Paperboy (USA)
- Q-bert (USA)
- Super Mario Bros. + Duck Hunt (USA)
- Super Mario Bros. 2 (USA) (Rev 1)
- Super Mario Bros. 3 (USA) (Rev 1)
- Tetris (USA)
- Zelda II - The Adventure of Link (USA)
二つのものを比べる所
画面上の別々の二つのものの位置を、比べるか引き算するルーチン。それぞれの値を、読み込まれた元のメモリのバイトから、ゲームが写していく先々を通して追い、どのバイトがスプライトの位置になるかを見る。そのうえで、そうしたバイトの二つが出会うルーチンを名付ける。当たり判定の心臓部だ。敵がプレイヤーはどちら側かを知る方法でもあり、ゲームが描くものを奥行きの順に並べる方法でもある。この規則はそれらを区別しない。
19 本のうち 14 本で見つかった。ルーチンは 91 個:
- Blades of Steel (USA)
- Blaster Master (USA)
- Defender II (USA)
- Double Dribble (USA) (Rev 1)
- Goonies II, The (USA)
- Legend of Zelda, The (USA) (Rev 1)
- Metroid (USA)
- Ninja Gaiden (USA)
- Paperboy (USA)
- Q-bert (USA)
- Super Mario Bros. + Duck Hunt (USA)
- Super Mario Bros. 2 (USA) (Rev 1)
- Super Mario Bros. 3 (USA) (Rev 1)
- Teenage Mutant Ninja Turtles (USA)
私たち自身のカートリッジでも見られる。同じ規則がそこに見つける: マリオのように見分ける、踏みつけとぶつかり、マリオのものと同じ、絵の内側の箱、マリオのリフトのように、乗ると運んでくれる動く足場、マリオのクリボーのように、壁でも互いにでも向きを変える歩き手、マリオのように、命を失ってやり直す、マリオのように、穴に落ちる、最後の命と、そのあとに来るもの、マリオのように