ゲーム改造

TeamKNOx 織田裕一(文責

ゲーム改造とは?

 ゲーム改造とはゲームプログラムが利用している記憶領域(RAM)のデータに変更を加えることにより、所望の動作をおこなわせることである。RPGをやっているとしよう、RPG内で使われるパラメータとしてHPやお金などがある。これらはRAMに格納されていて、イベント(移動、戦闘、休息、売買)が発生するたびに増減する。そのイベントのタイミングに合わせて同時に増減するのがターゲットなるパラメータ(HPやお金など…)があるわけだ。

改造ツールとは

 様々なツールがゲーム改造に用いられている。実機で行う場合はProActionReplyPAR)X-Tアドバンスなどの外付けハードが用いられる。これらはゲームショップや量販店などで購入が可能である。また、エミュレータを用いてのゲーム改造も良く行われる方法である。特にVBAは改造機能も充実しているので人気がある。

マスターコードとは

 自分自身はソフトウェアエンジニアであるので、コンピュータに関する知識や理解などは一般の人に比べてあるはずである。(そう強く思いたい…。)ところがこのマスターコードなる言葉の意味は最近になるまでほとんど理解不可能であった。まともに説明している資料がないのである。マスターコードの探し方や探すツールなどはあるにはあるが、情報があまりにも断片的なのである。系統立てて説明しているモノは皆無である。そこでツールの使い方を解説している本などを読んだり、ADVTerm の挙動などを観察して理解を深めることにした。結局、マスターコードとはソフト開発中に良く行われている行為であることがわかったわけであるが…。

マスターコードが必要なわけ(多分)?

 GBAなどのコンピュータの形を組込み型のコンピュータと言う。携帯電話、VTRなどの家電やプラントの制御などに数多く利用されているものそうである。一般の人があまり、意識することはない。反対にPCなどはコンピュータであることをユーザに強く意識させる。一般に組込み型のコンピュータは限られた入出力しか持たない。これは制御目的に合わせた入出力を持っていれば必要十分であることから来ている。余計なものはお金がかかって競争力を削ぐことになるのだ。ゲーム機はゲームができるだけの入出力〜つまり、キーパッド、ディスプレイ、スピーカそれとゲームプログラムがあれば十分である。この限られた入出力を補完する形で外付け型の改造ツールが必要になるのだ。ハードは装備できた。でも、コンピュータはプログラムがあってそのハードが初めて生きてくる。ここで言うプログラムはゲームカートリッジに入っているプログラムのことである。これはカートリッジ(ゲーム)によって千差万別である。ゲーム改造とはRAMのエディットであると前述した。RAMのエディットをするためにはRAMの特定の番地を調べる必要がある。このRAMを調べる方法がマスターコードによるタイミングの確保なのである。プログラムは特定の周期で動作している。一般にプログラムの動作シーケンスは 入力→処理→出力 になる。ゲーム機の場合の入力はゲームパッドを操作することである。つまり、キーパッドのポートアドレスを一定間隔で読み取ることが予想されるわけである。このことから、マスターコードはキーボード読み取りルーチンの近傍に設定されることが多い。近傍と言ったのは読み取った値に追加工を施す場合が多々あるからである。

外付け改造ツールの原理(予想)

 この解説はあくまでも筆者自身の予想であることを予め断っておく。ADVTerm の動作などから類推するとマスターコードはROM(ゲームプログラム)領域のアドレスである。改造ツールにはアドレスバスと並列に接続されたコンパレータが入っている。コンパレータとは比較器の事である。マスターコードしてセットされたP1近傍のアドレスとコンパレータが一致した時、これはつまりそのアドレスがアクセスされた場合にRAMを保存するのだ。この様に特定のアドレスに対して操作を行うことを「フックする」と言う。あるいはこういったアドレスを「フックアドレス」と言ったりもするわけだ。PC側に転送した以前のRAM情報と現在の情報を比較することにより、変化域を見つける。この変化したアドレスに対して新たな値を書き込むこと〜これがゲーム改造である。





(C)2003 TeamKNOx