1. まとめトップ

[MH4]モンハン4の改造方法など[改造注意]

MH4を改造してみたいけど改造方法などがわからない!という方へ!初歩的な内容から改造方法までを説明させていただきます。

更新日: 2014年01月18日

gamer3153さん

  • このまとめをはてなブックマークに追加
6 お気に入り 17645 view
お気に入り追加

改造については賛否両論あると思います!私は改造自体を推奨しているわけではありません。
また、オンラインでの使用は常識としてお控えください。
使用方法によってはセーブデータに不具合が発生する可能性もあります。
ソフトのシリアル番号などによりコードがずれる可能性もあります。自己責任でお願いします。
改造はセーブエディターで可能です。お持ちでない方は、amazonなどで購入をしてください。

今回は初心者にも分かりやすくなるように抜粋してご説明します。

はじめに

さて、まずそもそも改造についてよくわかっていない方に説明させていただきます。
ゲームというのはコンピュータです。詳しい説明は省きますが、コンピュータは計算機です。
私達が今見ている画面出力されている映像もコンピュータ内部では数字として扱っています。
つまり、内容を書き換えるにはコンピュータに言葉ではなく数字で命令をしなくてはなりません。

ではどのようにコンピュータと数字で情報をやりとりするのか考えますが、
そのためにはまず、コンピュータ上で扱う数字の規則について学ぶ必要があります。
コンピュータ上では基本的に2進数というもので情報を扱っています。
2進数とは0と1で数を表現します。
更に具体的に言いますとIC(集積回路)に電気が流れているか流れていないかを1と0という状態で表しています。上の図で電気が流れているピンは1、流れていないピンは0になっている事が
わかると思います。このように情報を0と1の2種類で表すために2進数が使われています。
さて、コンピュータが2進数で情報を処理しているのはなんとなくわかりましたか?

なぜ16進数を使うか?

次になぜ改造をする時に主に16進数を使うのか説明します。
その理由は2進数の理解の複雑さにあります。普段私達が使う10進数で100という数値を
2進数で表すと1100011になります。パッと見て理解しづらいと感じませんか?
ですが、コンピュータは2進数で動作しています。そこでコンピュータからは2進数のように扱えて私達からは短い数字に見えるように考えられたのが16進数というものです。
10進数99を2進数で表すと1100011ですが、16進数なら63となります。
数字が短くなり扱いやすくなってますよね?

さて、では先ほどでてきた16進数について簡単に説明をしたいと思いますが、
16進数はとても簡単です。普段私達が使用している10で桁上りする数字は10進数と言います。
16進数との違いは桁上りが16に変わるというだけです。
でも、10進数では9以降桁上りをせずに表す数がないですよね?
そのため、16進数ではA,B,C,D,E,Fというアルファベットを使って16までの数字を
一桁で表すようになっています。つまり1,2,3,4,5,6,7,8,9,10と桁上りするものが16進数だと1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,10となるということです。そして16進数の10は10進数の時より間に数字が増えていますね?なので、10進数では16となります。

さて、これで初歩的な知識は理解できたと思います。次に、今回改造に使うセーブエディタに
ついてですがセーブエディタのアドバンスモード(後述)は16進数ダンプで数値を表示します。
つまり、先ほど学んだ16進数で数値を扱うということです。
ゲーム内でアイテムを99個にしたい場合は10進数の99を16進数に変換して63個となりますので、該当アイテム個数部分を63と書き換えなければいけません。
今回改造で使用する方法はセーブデータの中に数値として武器、防具、アイテム、など様々な情報が格納されている部分を変更することによりアイテムを増やす、武具改造、クエストの内容を変更するなどを実現します。さて、ここからは具体的にエディタの値などを説明したいと思います。
例えば以下の様なものがあります。

セーブエディタについて

今回セーブエディタで使う値はこのようにXXXXXXXX YYYYYYYYの数値になっています。

上記のコードでは20000180がXXXXXXXX部分で 00630000がYYYYYYYY部分です。
ここでこのXYについて説明します。Xで表されている部分をアドレス部、
Yで表されている部分をデータ部と呼びます。Xで表されているアドレス部ですが、
アドレスとはデータの位置を示す番号で、つまり、2進数の命令が格納されているメモリ上の
データの位置をこの番号が示しているのです。
Yで示されているデータ部ですが、こちらはXで表されているアドレス部の内容です。
つまり20000180 00630000というのは20000180というアドレスに格納されている00630000というデータということになります。つまりアイテムを変更したければ20000180のアドレスに格納されている00630000を変更すればいいというわけです。
ここで先ほど説明した16進数が使われます。例えば回復薬がほしい時に日本語で回復薬といれることはできません。16進数で回復薬を表す数値を20000180というアドレスに格納されている00630000に書き込むようにします。

コードの探し方

コードについての知識は理解出来ましたでしょうが。次にコードの探し方をご説明します。
コードを探すためにはCYBER セーブエディター (3DS用)を使用します。
コードを探すには簡単な知識も必要です。

コードの読み方

先ほど説明したとおりアドレス部XXXXXXXXとデータ部YYYYYYYYに分かれています。
基本的には該当アドレスを見つけてデータ部を変更してコードを使用します。

サーチの仕組み

セーブデータの内容を16進数ダンプします。変更したい箇所の数値を16進数で検索することに
よって変更したい箇所のアドレスを見つけます。そのアドレスの数値を書き換えることによって
改造を実現します。コードが16進数なのはそのためです。

サーチの種類

おおまかに分けますと以下の方法が多く取られると思います。

・値自体、値変化によるサーチ
探したいアドレスのデータの値自体や変動した値を検索して目的のアドレスを見つけます。
攻撃力、防御力、HPなどのような簡単な値のデータをサーチするのであればこの方法ですね。

・アドレス付近のサーチ
アイテムのデータなど近くにあると思われるアドレス付近に絞って検索することで目的のアドレスを見つけやすくる方法です。値の変動が激しいデータなどで使用します。

なぜ面倒なサーチ方法を説明するのか?

それは、セーブデータの進行状況などによりアドレスが変動する可能性があるため、他人のコードを使用するだけで自分でサーチができないと、コードをうまく使用できない場合があるからです。

セーブデータ改竄対策

なぜセーブデータを改造するのにセーブエディタが必要かについて説明します。
基本的にセーブデータにはハッシュ値などで改竄を防ぐ対策がしてあります。
ハッシュ値とはあるデータに対して決められた操作を行いそのデータの代表を得た数値です。
不可逆(もとに戻すことができない)な数値です。
簡単に説明しますと、データからハッシュ値を求めることができますが、
ハッシュ値からはデータを求めることができないということです。

暗号学的ハッシュ関数(一方方向性ハッシュ関数)とも呼ばれています。
ハッシュ値が変わっていない場合はデータが改竄されてない。ハッシュ値が変わっている場合は
データが改竄されたというチェックを行うことに使われていたりします。
これによりセーブデータが改竄された時にハッシュ値が変わるためセーブデータが
使用できなくなるという仕組みになっていたりします。
その他さまざまな理由により改造にはセーブエディタが必要なのです。

1 2




趣味で役立ち情報をサイトに書いてます。
サイトで人気な記事を皆様に見ていただくため
こちらに記事の抜粋をまとめとして書こうと思います。
よろしければkazuki.pwにぜひアクセスしてください!