remove
powerd by nog twitter
 ホーム > ドラクエ アラカルト > ドラクエ3(FC) ロム解析


ドラクエ3(FC) ロム解析(3)


さて、モンスターのデータをロムの中から探したいところですが、どうしたらいいでしょうか。
名前の近くを見ても見つかりません。
仕方ないので、特徴的なデータを基に目星をつけることにしましょう。

はぐれメタルの経験値は 40200 です。
この値で検索してみることにします。
10進数の 40200 は16進数に直すと 9D08 になります。
しかし 9D 08 で検索してもはぐれメタルの経験値を表している場所は見つかりません。
それもそのはず、ロムの中の2バイト以上に渡る数値は下位から順番に格納されています。
これはセーブデータでも同じなので、セーブデータを改造したことのある人は知っていると思います。

08 9D で検索します。
数ヶ所見つかりますが、どれがはぐれメタルの経験値を表しているのか分かりません。
そこで 08 9D(40200) を 01 00(1) に変えてみて、はぐれメタルの経験値が1になっていたらそこが正解ということで、順番にやってみることにします。
運良く一つ目でビンゴ!
ついてますね^^

さて、その周辺のデータを見てみると、

020A892E143D33942064647458089D96
0A37FF06FFC90702071707071707FCFC
FFFCF424F6042D305F0AAA0527823F26

となっています。
周りの数値は何を表しているのでしょうか?
前のページではぐれメタルの次はグールだと分かっています。
グールの経験値は 1270 です。
1270 は16進数だと 4F6 なので F6 04 を探すとありますね。

020A892E143D33942064647458089D96
0A37FF06FFC90702071707071707FCFC
FFFCF424F6042D305F0AAA0527823F26

このことから周りの数値はすべてモンスターの特徴を表している数値で、モンスター1種類につき23バイト使用している、という仮説を立てることができます。

そう考えて見てみるとHPや攻撃力を表しているのではないかと思われるものも見つけることができます。
しかし、どこからどこまでがはぐれメタルを表しているか、というのがよく分かりません。
そこでスライムの経験値を表しているところまでさかのぼってみることにしましょう。
スライムなら一番最初だし、何か分かるかもしれません。

はぐれメタルは 6C(108) 番目で1種類が23バイトと考えると、はぐれメタルから23×108=2484バイト戻ればスライムのデータがある計算になります。
実際に戻ってみると、

855085CE85D2A545855360A9054CF1A0
4820EBB2684CF1A00104000402090508
00E58202820207020702000030301601
050006020A060900E582020202020202

スライムの経験値 4 を見つけることができました。
ここでガイドブックを見ると、スライムはモンスターレベル 1 、最大HP 8 、最大MP 0 、攻撃力 9 、守備力 5 、素早さ 4 、経験値 4 、ゴールド 2 とあるので、データを見てみると、

855085CE85D2A545855360A9054CF1A0
4820EBB2684CF1A00104000402090508
00E58202820207020702000030301601
050006020A060900E582020202020202

たしかにありますね。
この9バイトはスライムのデータであると見て間違いないでしょう。
同様に、

855085CE85D2A545855360A9054CF1A0
4820EBB2684CF1A00104000402090508
00E58202820207020702000030301601
050006020A060900E582020202020202

おおがらすのパラメータも見つかりました。
では、

855085CE85D2A545855360A9054CF1A0
4820EBB2684CF1A00104000402090508
00E58202820207020702000030301601
050006020A060900E582020202020202

スライムのデータはどの23バイトなのでしょうか?
この部分だけでは分からないのでもう少し下まで見てみましょう。

855085CE85D2A545855360A9054CF1A0
4820EBB2684CF1A00104000402090508
00E58202820207020702000030301601
050006020A060900E582020202020202
02000030302502070005020C080A00E5
82070202020702020000303022030800

じーっと見ていると似たような部分が見つかります。
E5 、 82 、 02 、 07 、 00 、 30 が共通因子としてあるようですね。
したがって、

855085CE85D2A545855360A9054CF1A0
4820EBB2684CF1A00104000402090508
00E58202820207020702000030301601
050006020A060900E582020202020202
02000030302502070005020C080A00E5
82070202020702020000303022030800

この22バイトは確定と見るのが普通でしょう。
あとは前か後かどちらのバイトがスライムのデータなのかというのが分かれば23バイトがすべて分かったことになるのですが・・・
正直言ってどちらか断定するだけの要素が見つかりません。

モンスターレベルを表していると思われる場所の1つ前のバイトを並べてみると、

A0 16 25 22 24 14 22 12 34 15 ・・・・・・

何か A0 だけ浮いているような気がしなくもありません。
断定はできませんが A0 はモンスターのデータではないと考えて23バイトを確定することにしましょう。

855085CE85D2A545855360A9054CF1A0
4820EBB2684CF1A00104000402090508
00E58202820207020702000030301601
050006020A060900E582020202020202
02000030302502070005020C080A00E5
82070202020702020000303022030800



ドラクエ3(FC) ロム解析(4)