Let's Emu! > エミュレータデータ > ゲーム改造講座

----- セーブデータ 改造講座 -----

Last Update : 2002/10/26


1. はじめに

 このページでは バイナリエディタ というソフトを利用して、エミュレータから出力した セーブデータ を改造する方法を掲載しています。ゲーム内のお金を増やしたり、キャラを強くしたり、アイテムを増やしたり、そんなことが可能です。ちなみに、ゲームの改造方法には、他にも色々と手段はあります。このサイトでは扱いませんが、その一部を挙げておきます。

○ メモリーエディタ
 メモリーエディタ というツールを利用する改造です。メモリーエディタというのは、PC上で動作しているプログラムのメモリを表示できるもので、このメモリを直接編集することでゲームを改造します。既存のメモリエディタやエミュレータ専用のメモリエディタとして知られる「cep」があります。

○ その他、汎用ツール
 Vectorの 市販ゲーム等の設定変更 ページ参照。

○ 改造コード/チートコード
 GB/GBCやGBAでは、PAR(プロアクションリプレイ)やXT(エックスターミネータ)というような 改造コード規格 (改造コード機器) を利用する改造です。それを適用できる機能を実装しているエミュレータがあります。また、独自の改造コード機能も用意しているエミュレータもあります。
 インターネット上には、調べた改造コードを公開しているサイトが多数存在するので、目的の改造コードを発見できれば、特に労力を必要とせず改造できるのが特徴で、もっとも広く知られている改造方法でしょう。

 以下に改造コードの適用機能に対応している主要なエミュレータを挙げておきます。

GB/GBCエミュレータ GBAエミュレータ
Custom GB、HeboWin、NO$GMB、BGB

+独自の改造コード機能も
 VisualBoyAdvance

*独自の改造コード機能のみ
 TGB Dual
RascalBoy Advance、NO$GBA

+独自の改造コード機能
 VisualBoyAdvance


2. 用意するもの

 ゲームの改造に必要なものは下のとおりです。

(1) バイナリエディタ

 バイナリエディタは、ファイルのデータを 1バイト ごとに区切って 16進数 で表示し、それを編集することができるツールです。「バイナリエディタ ≠ 改造ソフト」 なので注意してください。有名どころのWindows用バイナリエディタを以下に挙げます。すべてフリーウェアです。

Stirling 定番のバイナリエディタ。(後藤和重氏)
狐's バイナリエディタ 老舗のバイナリエディタ。(佐川功氏)
BET セーブデータ改造専用バイナリエディタ。(T.Masuda氏)

 一般的なお勧めバイナリエディタは 「Stirling」 となりますが、ここでは「BET」というセーブデータ改造専門のバイナリエディタを利用します。普通の一般的なバイナリエディタと比べると機能面は劣りますが、改造用に特化した他のバイナリエディタにはない機能が付いており、逆に言えば余計な機能が付いていないので、お勧めです。なお、「BET」 は公式サイトはすでに消滅しているので、ダウンロードセンター のページにて転載しています。

(2) 関数電卓

 バイナリエディタは、16進数 でデータを表示します。私たちが日常生活で利用するのは 10進数 です。これを相互に変換するために必要なのが 「関数電卓」 です。Windowsには標準で電卓ソフトが付いているので、これを利用しましょう。

(3) リアルタイムセーブのデータ

 セーブデータの改造ということで、このセーブデータを具体的に説明すると、エミュレータから独自の形式で出力される 「リアルタイムセーブ」 (どこでもセーブ) のデータです。ゲームの状態を、いつでもどこでもそっくりそのまま保存することができるエミュレータならではの機能です。このデータが改造の対象になります。(誤った場所を書き換えることで、データが壊れてしまう場合があるので、バックアップ用のデータも用意しておきましょう。

 ちなみに、エミュレータから出力されるセーブデータにはもう一つ 「バッテリーRAM」 というものがあります。いわゆる、ゲーム自体が持っているバックアップ機能で、実機だとカートリッジ内に書き込まれるデータです。一般的に <*,sav> というファイル形式で出力されます。このデータを改造することは不可能ではありませんが、「チェックサム」 というデータ内部の改変チェック機能も持っています。もし、このデータを書き換える場合は、改造するたびに改変されていないようチェックサムを修正するたいへん面倒な作業が必要になるため使用しません。

* 圧縮されたセーブデータ
 Windows版エミュレータによっては、リアルタイムセーブのデータをファイルサイズの抑制を目的に GZIP形式 (*.gz) で圧縮して出力するものがよくあります。GB/GBCエミュレータでは特に見かけませんが、GBAエミュレータでは 「BoycottAdvance」、 「VisualBoyAdvance」、 「VisualBoyAdvance-SDL」がこれに該当します。
 この場合、普通は圧縮されたリアルタイムセーブのデータをいったん解凍してから、バイナリエディタで読み込まなければ改造できません。しかし、バイナリエディタとして紹介したものの1つ 「BET」 は、セーブデータ改造専門ということで、この形式の自動解凍機能をサポートしています。

 なお、「BET」 でこの自動解凍機能を利用できるようにするには、吉岡恒夫氏の TAR32.DLL プラグインを別途用意しなければなりません。Common Archivers Library よりダウンロードしてください。ただ、ダウンロードするのは、旧バージョン 0.53 です。現在の最新版 (Ver. 2.x) は仕様変更により 「BET」 では利用できなくなっています。
 (具体的な導入方法 : tar32053.exe をダウンロード。新しいフォルダに入れて実行すると、多数のファイルが解凍されます。その中の TAR32.DLL だけをコピーして、バイナリエディタ本体と同じフォルダに置いておきます。)


3. 10進数 と 16進数

 16進数 とは何なのかを簡単に解説しておきます。10進数は日常使用している数字です。つまり、ゲーム内で普通に表示されている数字です。0 〜 9 の1組がそれにあたります。バイナリエディタは 16進数 でデータを表示します。これは、0 〜 F で1組です。対応表は下のとおりです。

10進数 00 01 02 ・・・ 08 09 10 11 12 13 14 15 16 17 ・・・ 100 ・・・ 255 ・・・
16進数 00 01 02 ・・・ 08 09 0A 0B 0C 0D 0E 0F 10 11 ・・・ 64 ・・・ FF ・・・

 大きい数字になると、上のような対応表なんて言っていられません。ここで関数電卓を利用すれば、簡単に変換できます。例として、クイズ形式で挙げると下のようになります。ちなみに、16進数に付いている 「h」 は普通の10進数と区別するための単位で、「hex」(=16進数) の頭文字です。また、「0x12FD1」 というように、前部分に 「0x」 を付けて10進数と区別する場合もあります。

10進数 [ 7853 ] → 16進数 [ 1EADh ]
16進数 [ 12FD1h ] → 10進数 [ 77777 ]
(反転すると答えが表示されます。)


IV. バイナリエディタと改造の流れ

 ゲーム改造の流れを簡単に書いておきます。

(1) エミュレータでリアルタイムセーブをして、書き換えるためのセーブデータを出力する。
(2) バイナリエディタを起動し、このセーブデータを読み込む。
(3) 数値を検索し、書き換えるアドレスを探す。(←ここが一番大変。)
(4) 書き換えて保存する。
(5) エミュレータを起動し、このセーブデータを読み込む。

(1) バイナリエディタの見方
 まずは、バイナリエディタでセーブデータを開いてみてください。表示されるデザインはバイナリエディタごとに異なりますが、大きく3つの部分からなります。

バイナリエディタ画面 from 「狐's バイナリエディタ」

1 アドレス ダンプ領域の先頭部分の場所を 16進数 で示しています。書き換える部分の場所を示すことになります。
2 ダンプ領域 ファイルのデータを1バイト毎に区切って 16進数 で表示している部分です。2桁の数字が並んでいますが、この2桁の固まりが 1バイト にあたります。改造ではここの部分を書き換えます。
3 アスキー領域 テキストエディタで表示される部分です。改造ではこの部分は特に関係ありません。

ノーマル検索と比較検索
 数値を検索する方法には、大きく分けて2タイプ存在します。「ノーマル検索」と「比較検索」です。
単純な検索です。改造したい該当する1数字を検索します。数字的にケタが大きいものなどに有効です。
ちょっとだけデータ内部が異なる2つのセーブデータを用意し、変化している部分を探します。確実に改造場所を見つけることができる可能性が高いです。


V. 事例1 (ノーマル検索)

 まずは、下の例を参考にバイナリエディタの見方を解説しましょう。
バイナリエディタ画面

 上の画像は、「ドラゴンクエストモンスターズ テリーのワンダーランド」のリアルタイムセーブのデータ内部をバイナリエディタで表示させたものです。実は、赤で示された部分が、主人公の所持金(G)のデータ部分になっています。
 注意してほしいのは、ここの数字は、16進数の「5C」「BC」ではありません。通常、格納されるときは、(ごく一部を除き)ひっくり返って格納されます。つまり、ここでは、「BC」「5C」という16進数です。これを電卓で10進数に変換してみてください。「48220」になります。これが、ゲーム上での所持金になります。
 試しにお金を増やしてみましょう。切りのいい「50000」(G)にしてみるとします。電卓で16進数にしてみてください。「C350」になりましたか。上にもあるように、ひっくり返します。「50C3」。これを赤の部分に書き込みます。すると、ゲームでは所持金が「50000」(G)になっています。

工事中...


VI. 事例2 (比較検索)

 上の画像は、「ポケットモンスター銀」のセーブデータ内部です。このデータは、主人公の所持品を示している部分です。

工事中...


VII. 最後に

 上の解説を参考に、様々なゲームの改造に挑戦してみてください。ここではGB/GBAエミュレータのゲームを取り上げていますが、別に他のエミュレータのセーブでも基本的に同じです(*1)。改造するにあたってのコツというものは、ゲームによってデータ内部はみな異なるので、特にありません。とにかく習うより慣れろ、って感じで、たくさん改造をこなすことで、勘というもの身につくと思います。(自分もそうでした。)
 なお、改造するということは、ゲーム側が提供するバランスのとれた面白みというものを、自ら崩すことにもつながります。改造がゲームの攻略を楽にするという手段である一方で、つまらなくさせているとも言えるので、くれぐれも改造は、ほどほどに・・・。

*1 エミュレータのゲームに限らず、セーブ的データの出力がある一般のPCゲームでも、バイナリエディタを使って改造できる場合があります。圧縮暗号化のような感じで保存されて、ほとんど改造不可能なものも中にはありますが・・・。



Let's Emu! > エミュレータデータ > ゲーム改造講座


Let's Emu! 〜GB模擬器〜