2から始める改造講座
第一章 横須賀 数値変更への道
(失礼度も大幅パワーアップ!)
ここではドラクエ1が解りやすいし色々と移植されててメジャーなのでこれを使って説明しようと思います
メッセージの圧縮とかは無さそうなんでその辺については説明しませんのであしからず
ではまずは手始めに敵のステータスを弄りましょう♪


モンスター名から検索
まずは「スライム」という文字列を探すために「69 40 4A 4D」で検索しましょう
三つ出てくれば正解です。
ドラクエの中に「スライム」という文字列はスライムベス、メタルスライムを含めて3つなので
こうやって検索するとモンスター一匹が8文字で余った部分はFAで埋めている事が解ると思います
$F254からの文字列が正解なので取り敢えず「44 45 46 47 48 49 4A 4B」とでもしておきましょうか(謎)
まぁこの作業は確認のためのものなのでやんなくてもいいですけどね(^^;;;;

←色が変わってる部分がスライムの名前
その下にはスライムベスやドラキーの名前もみえます

←レコンタシホイマになればOK
なんでこんな名前にしたんだろう(謎
さて、名前を変えたら次はステータスです
もう予想は付いた人も多いかと思いますがスライムのステータスは既に見えています
こういう場合は一匹のモンスターごとに割く容量は一定なので、$F24C〜$F263の中の16バイトがスライムのステータス(名前8バイト含む)という事になる・・・・という事は解りますよね?(チョット不安)

スライムのHPは3
これは結構重要です
6でも7でもなくて3です
ドラクエをやった事無い人は当然解りません
つまり、解析するに当たってそのゲームにかなり精通してなくてはなりません
「やった事無いゲームだけど解析しようかなー」なんてアホな事はやめましょう
あと、データを探す際に攻略本も結構役に立ちます
ですが、攻略本書いてる人は大抵そのゲームを初めてやったような人が多いので結構間違えている事もあるという事を頭に入れておいて下さい

さて、話は戻って$F24C〜$F263の間に3は3つしかないのですぐに見つかると思います
ここでは極端な値($FFが良い)を入れてスライムがしぶとくなったらOKです
3つをしらみつぶしに調べれば(ってほどでもないけど)$F24Eの#$03がスライムのHPを表している事が解ります
でももっと分かり易いやり方としては「スライムのHPの16バイト先(真下)にはスライムベスのHP(#$04)が入っている」という事を考えるともっと早く解析できます
似たようにしてお金や経験値、攻撃力や防御力を調べると
$F24Cから・・・・・・
[05 03 03 00 0F 01] [01] [02] [69 40 4A 4D FA FA FA FA]
05 攻撃力
03 防御力
03 HP
攻撃力で「逃げる」かどうか決まる
経験値 お金 名前(スライム■■■■
さて、今度は残りの「00 0F 01」に関してですがまず、00をFFに変えましょう

どうやら攻撃パターンのようですね
竜王並みの炎を吐いてきました
色々と数字を変えていくうちにある事が分かるようになるはずです(せめて三十分で法則を見つけよう)

1.常に攻撃はする
2.特殊攻撃は1ケタ目と2ケタ目の2種類組み合わせ
($XYという数字だったらXが補助or回復、Yが攻撃呪文or炎)
3.「ギラとベギラマ」とかいう組み合わせは不可能っぽい
例えば「ベギラマ+ベホイミ」とか「弱炎+ラリホー」「ベギラマ+マホトーン」ってな感じ

攻撃補助
10〜30ラリホー
40攻撃のみ
50〜70マホトーン
80攻撃のみ
90〜B0ホイミ
C0攻撃のみ
D0〜F0ベホイミ

攻撃系
01〜03ギラ
04攻撃のみ
05〜07ベギラマ
08攻撃のみ
09〜0B弱炎
0C攻撃のみ
0D〜0F鉄をも溶かす炎らしいね

※01→03となる事によってそれをやる確率が上がる
つまり00は「ギラとラリホーの可能性0%」という事
また、D7だったら「高確率ベギラマ&低確率ベホイミ」という事になる

さて、次の0F 01か・・・・・
不明(爆)
というのは冗談で魔法耐性でした
0Fが「補助呪文の耐性」(ラリホーとか)
01が「攻撃呪文の耐性」(ギラとか)
ちゃんちゃん
これで敵のステータスの解析は終わりです
他の敵も見てみたら面白いよ

ですが、ここでやったのは凄い簡単な例です
何故なら名前の近くにステータスがぶち込まれていたから
では、もっと確実な方法を次で示しましょう


メモリの内容を参照
さて、今度はリアルタイムセーブデータからこれらの事を見つけたいと思います
名前の近くにステータスがあるとは限らないのでこっちのやり方が確実です





まず、二つのセーブデータを用意します
スライムとスライムベスの出現シーンです
出現モンスター以外の部分は同じにしたいので主人公のステータスや場所は同じ場所が良いです(銀の竪琴があると便利)
敵のステータス等は違う敵でもHPならHP、攻撃力なら攻撃力といった風に常にメモリの同じ場所を参照しています。大体の場合
もちろん敵の名前も例外ではありません
例えば「スライムのこうげき!」と「スライムベスのこうげき!」は同じ文章です
どう言った感じかというと、「A(今出現しているモンスター名)の攻撃!」と言った感じです
出現した時点でメモリの内部に「スライム」という文字列がセットされて戦闘中にそれを読み出しているのですな
まぁ似たような例としては「くわたは足元を調べた」の主人公の名前の部分とかそういった感じ
ステータス画面のHPやMPやEXP等もメモリの内容をそのまんま表示しているだけなんだよね

さて、脱線したかと思いますがモンスターのこうげきについてです
攻撃のたびにROMの内容を参照したりとかいう事はしてません
やはり例によってメモリの中に攻撃力等がセットされています
そしてそのメモリというのはエミュにおけるリアルタイムセーブデータの事です
そこで、上のスナップのセーブデータが出てきます
スライムのHPは3でスライムベスのHPは4です
そこで、セーブデータを解析するときのように$03と$04で比較検索します
(Aのときに3でBのときに4のアドレス)
まぁ1ダメージずつ与えていって比較検索してもいいですけどね
というわけで敵のHPが見つかります
さて、実は経験値やお金もこの時点でセットされています
探せばすぐに見つかります
05 03 03 00 0F 01 01 02 69 40 4A 4D FA FA FA FA
そんなこんなで探せばこのように敵ステータスが見つかります
割と勘に頼る部分が大きいのでこればかりは経験が物を言うかと思います
また、正確なアドレスを書かなかったのはエミュによって少し変わる可能性があるかと思ったからです(ロクに調べてないもんで)
あとはこの文字列でROMを検索して書き換えるだけです
実はパレットを書き換える際も同じ事をしているんです
NesticleのF4でのパレットの表示はメモリのとある部分を参照しているので論理的には同じ事です
そんなこんなで激強モンスターの出来上がりです(w

慣れれば簡単ですがこれはあくまでも私のやり方なんで自分に合ったやり方を見つけて下さい


第二章 「数値以外を解析してみよう」へ

戻る