バグ対応でセーブデータを修正する

2019/12/27 記

レベル上げに関してはバグがある。ログイン誌でも言及されていたが、全てのスキルが上限100に達すると、レベル上昇時のスキルポイントが余ってしまって割り振れなくなり、キャラクターステータス画面から抜け出せなくなる(フリーズではないがそれに近い)。キャラクターを際限なく鍛えるのがウィザードリィの魅力のひとつなので、これはまずい。

レベル上昇時のスキルポイントが余ってしまい割り振れなくなるバグについては、セーブデータを修正して対応する。

ウィザードリィ6・ベイン・オブ・ザ・コズミック・フォージ(ウィズ6・BCF)のスキルポイントMAXバグ対応のため、セーブデータを修正する。使うのはMS-DOSのみ。ただし、(起動ディスクではなく)製品ディスクが必要になる。方法を簡単に示す。コンピューターについて、一般を越える知識のあることを前提として書いている。MS-DOS・16進数・その他の用語などは自力で調べてほしい。

プログラミングの経験は必須ではない。ただし、そう聞いて安堵するならば、向いていないかもしれない。

万一の事態への準備

事前にバックアップをとっておく。手間を省略するのは自由だが、なにが起こっても結果は受け入れなければならない。想定外は常にあり得る。

コンピューターの世界では、常に命綱をつけておいたほうがいい。たとえ、1階にいるとしてもである。なぜか。「1階にいる」と思っているだけだからだ。

セーブデータのファイル名を突き止める

ファイル名のほかに、ファイルの更新日時が手がかりになる。ただし、1セーブデータ=1ファイルとは限らない。

セーブデータファイルの変更箇所を突き止める

以下では便宜上、1番ファイルと2番ファイルという名称を用いている。しかし「ウィザードリィ6・ベイン・オブ・ザ・コズミック・フォージ(BCF)」では、セーブ箇所は1つしかない。そういう場合は、ファイルコピーで対応する。

まず1番にセーブしておく。なにか変化を起こす。今回はスキルが目的。戦闘時にアイテムを使えば工芸学が上がる。それを2番にセーブする。1番ファイルと2番ファイルを比較すると工芸学スキルのアドレス(データ箇所)が分かる。 FC コマンドを使ってバイナリ比較する。

FC    パス名・ファイル名1    パス名・ファイル名2    /B

最後の「 /B 」をもらさないこと。

注意:今回バグ対応には不要な知識だが、PC-9801はほぼインテルマシンなのでリトルエンディアンになる。


変更箇所はいくつもあるだろう。理論上はデータ内容を調べれば、どこが工芸学スキルなのかわかる。実際には変更箇所が多すぎて、画面におさまらずにスクロールしてしまう。この時代のMS-DOSにスクロールバーなどない。なので本来であれば、 FC コマンドの結果をファイルに出力し、そのファイルを表示するといった作業が必要になる。

しかし、今回は工芸学を上げたキャラクターはパーティの最後だった。このため、多数ある変更箇所の最後(なので画面におさまって表示される)がちょうど目的の工芸学だった。

セーブデータを変更する

SYMDEB コマンドを使って変更する。ここでは SYMDEB を単にバイナリエディタとして用いる。下記のコマンドで間に合うだろう。

N    パス名・ファイル名

L

DB    CS: アドレス

EB    CS: アドレス

( EB による変更)

W

Q

注意: SYMDEB においては、 FC コマンドを使って調べたアドレスに+100(16進数)されたアドレスで扱われる。


スキルの値の範囲は、ゼロから100の整数。できるだけ小さい値にしたいところだが、ゼロにするのは避ける。最小値や最大値には、特別な意味や処理が関連付けられているかもしれない。

今回修正についてはおそらく杞憂だろうと思う。しかし、百の杞憂があれば、いくつかは降ってくるのがコンピューターの世界。用心するほうが身のためだ。