第6回 「汎用改造ツールの概要」
汎用とは
これまでで、一応「ファイル」「メモリ」「レジストリ」の書き換えの基礎は理解できたと思います。
それでは、いよいよ汎用ゲーム改造ツールの解説に移っていきたいと思うのですが、
その前に「汎用」とは何なのかを考えてみます。
「汎用」とは「専用」の反対です。
「○○専用」といわれれば、「○○」でしか使えないという事ですが、
「汎用」であれば、それ以外のものでも使えるという事です。
例えば、「Windows汎用のソフト」というものがあったとします。
この言葉から予想すると、このソフトは「95」「98」「NT」「2000」
といった各種Windowsで動作すると考えられますね。
一方「Windows95/98専用」と言われれば、「95」「98」でしか動作しないと考えられます。
「汎用」を大雑把に説明するとしたら、「いろんなものに対応できる」という感じでしょうかね?
では、「汎用ゲーム改造ツール」とはどんなものでしょうか?
ここでは「1つのゲームだけでなく色々なゲームを改造できるツール」という事にしておきましょう。
さて、サンプルプログラムで紹介している汎用改造ツール「MaferLite」は、
様々なゲームの改造に対応していますが、現時点ではファイルの書き換えしかできません。
しかし、ファイルの改造だけとはいえ、複数のゲームが改造できるのですから、「汎用」といって良いでしょう。
MaferLite の仕組み
では、「MaferLite」の仕組みを調べることで、汎用改造ツールの原理を見ていきましょう。
「MaferLite」は、まずコードファイルを読み込む事で、改造するファイルや改造内容を調べます。
「code1.txt」というコードファイルのサンプルがありますので、これを解説していきます。
code1.txt をテキストエディタで開いた画面
#MAFER_LITE:
#TARGET:FILE
#FILENAME:sample1.txt
#CODE:10-61
#CODE:20>22-62
1行目は、このファイルは「MaferLite」用のコードファイルであるという目印にしています。
2行目は、書き換える対象がファイルである事を指しています。
現時点での「MaferLite」は、ファイルしか書き換えられませんので、必ず「FILE」を指定する事になります。
(今後改良して、メモリやレジストリに対応させてみたい所ですね)
3行目は、書き換えるファイルの名前です。
4.5行目は、改造コードの部分です。
アドレスの10番地を「61」に書き換え、20〜22番地を「62」に書き換えるという意味です。
これらの内容を読み込んでから、次に対象のファイルが何処にあるのかを指定してやり、
実際に書き換えの実行を行うわけです。
ところでセーブデータファイルというのは、ゲームをインストールした場所によって存在する場所が異なります。
そしてインストール先というのは、人によってバラバラです。(デフォルトの場所はありますが)
ですから、コードファイルには、ファイルのフルパス名は記述せず、ファイル名のみ記述しているのです。
では、「MaferLite」を起動して、実際に書き換えを行ってみましょう。
「code1.txt」がコードファイル、「sample1.txt」が書き換える対象のファイルです。
プログラムを起動後「コードファイルを開く」ボタンを押し、「code1.txt」を選択してOKボタンを押します。
すると以下の様な画面になったと思います。
ファイル名
sample1.txt
ファイルのフルパス名
この時ファイル名が薄い灰色になっているのは、テキストボックスを使用不可にしているためです。
コードファイルから読み取ったファイル名は、勝手に変更されては困るのでこのようにしています。
ただし、本来なら表示専用の項目は「ラベル」コントロールを使うべきなのですが、
今回は使用するコントロールの種類を減らして、コードを見やすくする為にあえてこうしています。
まあ、それはさておき、ファイルのフルパス名を入力してみましょうか。
皆さんの環境によって異なりますので、各自の格納場所に応じたフルパス名を入力して下さい。
あるいは、エクスプローラから対象のファイルをドラッグ&ドロップしてもOKです。
そして「書き換え」のボタンを押し、「書き換えに成功しました」と表示されればOKです。
その後、コードファイルを開くための画面(起動時の画面)に自動的に切り替わったと思います。
これは、同じ書き換えを2度続けて実行するのを防ぎ、なおかつ次のコードファイルを直ぐに読めるようにするためです。
一応、「sample1.txt」をテキストエディタやバイナリエディタで開き、
改造が成功している事を確かめておいて下さい。
改良したい点
一応これで改造ツールの動作原理は理解してもらえたのではないでしょうか?
要するに、第1回と第2回で行った改造を、より簡単に使えるようにしただけの事です。
コードファイルという物に、改造したいファイルの名前や改造コードを書いておけば、
「s_file」でやったように、毎回入力する手間が省けますからね。
後はこれを改良していけば良いわけです。
さて、改良と一口にいっても「使いやすくする」とか「機能を追加する」といった様々な改良があります。
どちらを優先すべきかは、人によって考え方が異なるので一概には言えませんが、
とりあえずは、自分の思うような改良を施してみるのが一番良いと思います。
例えば、機能を追加し、使い勝手も向上させる手段として、「ファイルのフルパス名」を自動的に入力させる
という改良が考えられます。
おや?ファイルのフルパス名は、人によって異なるのだから自動入力はできないんじゃなかったのか?
と思われた方もいらっしゃるでしょう。
ですが、
第5回
で少しお話したように、多くのゲームはレジストリにインストール先の情報を記録しています。
という事は、ここからゲームのインストール先を調べ、なおかつセーブデータの場所も調べる事ができるはずですね。
「EditEngine.bas」という標準モジュールの中には、「指定したレジストリのキーと値名からデータを取り出す」
といった関数「GetRegistryData」を用意してあります。
現時点での「MaferLite」では使用していない関数なのですが、
これを利用すれば先ほどの改良を行う事も、比較的簡単にできるのではないでしょうか?
なお、この機能は
MAFER
にも組み込まれています。
では、今回はこれで終了致します。
ソースコードの解説は次回から行います。
ただし、「BinFileEdit」等の自作関数の解説は最後の方に行う予定です。
とりあえずは、使用方法だけ理解できればOKという事です。
また、そのソースを使って専用改造ツールを作るのも面白いのではないでしょうか?
自分のお気に入りのゲームを簡単に改造できれば、便利だと思いますよ。
実際に作ってみるとすれば
○○パラメータエディタ
お金
HP
MP
とまあ、こんな感じになるのかな?
それでは、次回以降も張り切っていきましょう!
前に戻る
次に進む
講座の初めに戻る