ホーム > ドラクエ アラカルト > ドラクエ3(FC) ロム解析
さて、モンスターのデータをロムの中から探したいところですが、どうしたらいいでしょうか。
名前の近くを見ても見つかりません。
仕方ないので、特徴的なデータを基に目星をつけることにしましょう。
はぐれメタルの経験値は 40200 です。
この値で検索してみることにします。
10進数の 40200 は16進数に直すと 9D08 になります。
しかし 9D 08 で検索してもはぐれメタルの経験値を表している場所は見つかりません。
それもそのはず、ロムの中の2バイト以上に渡る数値は下位から順番に格納されています。
これはセーブデータでも同じなので、セーブデータを改造したことのある人は知っていると思います。
08 9D で検索します。
数ヶ所見つかりますが、どれがはぐれメタルの経験値を表しているのか分かりません。
そこで 08 9D(40200) を 01 00(1) に変えてみて、はぐれメタルの経験値が1になっていたらそこが正解ということで、順番にやってみることにします。
運良く一つ目でビンゴ!
ついてますね^^
さて、その周辺のデータを見てみると、
02 | 0A | 89 | 2E | 14 | 3D | 33 | 94 | 20 | 64 | 64 | 74 | 58 | 08 | 9D | 96 |
0A | 37 | FF | 06 | FF | C9 | 07 | 02 | 07 | 17 | 07 | 07 | 17 | 07 | FC | FC |
FF | FC | F4 | 24 | F6 | 04 | 2D | 30 | 5F | 0A | AA | 05 | 27 | 82 | 3F | 26 |
となっています。
周りの数値は何を表しているのでしょうか?
前のページではぐれメタルの次はグールだと分かっています。
グールの経験値は 1270 です。
1270 は16進数だと 4F6 なので F6 04 を探すとありますね。
02 | 0A | 89 | 2E | 14 | 3D | 33 | 94 | 20 | 64 | 64 | 74 | 58 | 08 | 9D | 96 |
0A | 37 | FF | 06 | FF | C9 | 07 | 02 | 07 | 17 | 07 | 07 | 17 | 07 | FC | FC |
FF | FC | F4 | 24 | F6 | 04 | 2D | 30 | 5F | 0A | AA | 05 | 27 | 82 | 3F | 26 |
このことから周りの数値はすべてモンスターの特徴を表している数値で、モンスター1種類につき23バイト使用している、という仮説を立てることができます。
そう考えて見てみるとHPや攻撃力を表しているのではないかと思われるものも見つけることができます。
しかし、どこからどこまでがはぐれメタルを表しているか、というのがよく分かりません。
そこでスライムの経験値を表しているところまでさかのぼってみることにしましょう。
スライムなら一番最初だし、何か分かるかもしれません。
はぐれメタルは 6C(108) 番目で1種類が23バイトと考えると、はぐれメタルから23×108=2484バイト戻ればスライムのデータがある計算になります。
実際に戻ってみると、
85 | 50 | 85 | CE | 85 | D2 | A5 | 45 | 85 | 53 | 60 | A9 | 05 | 4C | F1 | A0 |
48 | 20 | EB | B2 | 68 | 4C | F1 | A0 | 01 | 04 | 00 | 04 | 02 | 09 | 05 | 08 |
00 | E5 | 82 | 02 | 82 | 02 | 07 | 02 | 07 | 02 | 00 | 00 | 30 | 30 | 16 | 01 |
05 | 00 | 06 | 02 | 0A | 06 | 09 | 00 | E5 | 82 | 02 | 02 | 02 | 02 | 02 | 02 |
スライムの経験値 4 を見つけることができました。
ここでガイドブックを見ると、スライムはモンスターレベル 1 、最大HP 8 、最大MP 0 、攻撃力 9 、守備力 5 、素早さ 4 、経験値 4 、ゴールド 2 とあるので、データを見てみると、
85 | 50 | 85 | CE | 85 | D2 | A5 | 45 | 85 | 53 | 60 | A9 | 05 | 4C | F1 | A0 |
48 | 20 | EB | B2 | 68 | 4C | F1 | A0 | 01 | 04 | 00 | 04 | 02 | 09 | 05 | 08 |
00 | E5 | 82 | 02 | 82 | 02 | 07 | 02 | 07 | 02 | 00 | 00 | 30 | 30 | 16 | 01 |
05 | 00 | 06 | 02 | 0A | 06 | 09 | 00 | E5 | 82 | 02 | 02 | 02 | 02 | 02 | 02 |
たしかにありますね。
この9バイトはスライムのデータであると見て間違いないでしょう。
同様に、
85 | 50 | 85 | CE | 85 | D2 | A5 | 45 | 85 | 53 | 60 | A9 | 05 | 4C | F1 | A0 |
48 | 20 | EB | B2 | 68 | 4C | F1 | A0 | 01 | 04 | 00 | 04 | 02 | 09 | 05 | 08 |
00 | E5 | 82 | 02 | 82 | 02 | 07 | 02 | 07 | 02 | 00 | 00 | 30 | 30 | 16 | 01 |
05 | 00 | 06 | 02 | 0A | 06 | 09 | 00 | E5 | 82 | 02 | 02 | 02 | 02 | 02 | 02 |
おおがらすのパラメータも見つかりました。
では、
85 | 50 | 85 | CE | 85 | D2 | A5 | 45 | 85 | 53 | 60 | A9 | 05 | 4C | F1 | A0 |
48 | 20 | EB | B2 | 68 | 4C | F1 | A0 | 01 | 04 | 00 | 04 | 02 | 09 | 05 | 08 |
00 | E5 | 82 | 02 | 82 | 02 | 07 | 02 | 07 | 02 | 00 | 00 | 30 | 30 | 16 | 01 |
05 | 00 | 06 | 02 | 0A | 06 | 09 | 00 | E5 | 82 | 02 | 02 | 02 | 02 | 02 | 02 |
スライムのデータはどの23バイトなのでしょうか?
この部分だけでは分からないのでもう少し下まで見てみましょう。
85 | 50 | 85 | CE | 85 | D2 | A5 | 45 | 85 | 53 | 60 | A9 | 05 | 4C | F1 | A0 |
48 | 20 | EB | B2 | 68 | 4C | F1 | A0 | 01 | 04 | 00 | 04 | 02 | 09 | 05 | 08 |
00 | E5 | 82 | 02 | 82 | 02 | 07 | 02 | 07 | 02 | 00 | 00 | 30 | 30 | 16 | 01 |
05 | 00 | 06 | 02 | 0A | 06 | 09 | 00 | E5 | 82 | 02 | 02 | 02 | 02 | 02 | 02 |
02 | 00 | 00 | 30 | 30 | 25 | 02 | 07 | 00 | 05 | 02 | 0C | 08 | 0A | 00 | E5 |
82 | 07 | 02 | 02 | 02 | 07 | 02 | 02 | 00 | 00 | 30 | 30 | 22 | 03 | 08 | 00 |
じーっと見ていると似たような部分が見つかります。
E5 、 82 、 02 、 07 、 00 、 30 が共通因子としてあるようですね。
したがって、
85 | 50 | 85 | CE | 85 | D2 | A5 | 45 | 85 | 53 | 60 | A9 | 05 | 4C | F1 | A0 |
48 | 20 | EB | B2 | 68 | 4C | F1 | A0 | 01 | 04 | 00 | 04 | 02 | 09 | 05 | 08 |
00 | E5 | 82 | 02 | 82 | 02 | 07 | 02 | 07 | 02 | 00 | 00 | 30 | 30 | 16 | 01 |
05 | 00 | 06 | 02 | 0A | 06 | 09 | 00 | E5 | 82 | 02 | 02 | 02 | 02 | 02 | 02 |
02 | 00 | 00 | 30 | 30 | 25 | 02 | 07 | 00 | 05 | 02 | 0C | 08 | 0A | 00 | E5 |
82 | 07 | 02 | 02 | 02 | 07 | 02 | 02 | 00 | 00 | 30 | 30 | 22 | 03 | 08 | 00 |
この22バイトは確定と見るのが普通でしょう。
あとは前か後かどちらのバイトがスライムのデータなのかというのが分かれば23バイトがすべて分かったことになるのですが・・・
正直言ってどちらか断定するだけの要素が見つかりません。
モンスターレベルを表していると思われる場所の1つ前のバイトを並べてみると、
A0 16 25 22 24 14 22 12 34 15 ・・・・・・
何か A0 だけ浮いているような気がしなくもありません。
断定はできませんが A0 はモンスターのデータではないと考えて23バイトを確定することにしましょう。
85 | 50 | 85 | CE | 85 | D2 | A5 | 45 | 85 | 53 | 60 | A9 | 05 | 4C | F1 | A0 |
48 | 20 | EB | B2 | 68 | 4C | F1 | A0 | 01 | 04 | 00 | 04 | 02 | 09 | 05 | 08 |
00 | E5 | 82 | 02 | 82 | 02 | 07 | 02 | 07 | 02 | 00 | 00 | 30 | 30 | 16 | 01 |
05 | 00 | 06 | 02 | 0A | 06 | 09 | 00 | E5 | 82 | 02 | 02 | 02 | 02 | 02 | 02 |
02 | 00 | 00 | 30 | 30 | 25 | 02 | 07 | 00 | 05 | 02 | 0C | 08 | 0A | 00 | E5 |
82 | 07 | 02 | 02 | 02 | 07 | 02 | 02 | 00 | 00 | 30 | 30 | 22 | 03 | 08 | 00 |
ドラクエ3(FC) ロム解析(4)