■バイナリエディタで日本語化
前回の最後に書いたとおり、リストの項目やエラー時に
表示される文章などはリソースエディタでは編集できません。
代わりにバイナリエディタを使って文字列を書き換えます。
最初の例として、GPUプラグインがプラグインディレクトリに
見つからなかったときのエラーメッセージ
ePSXe wasn't able to find a GPU plugin in your epsxe\plugins directory. Take a look at the list of recommended plugins and download the latest version from pages like www.psxemu.com or www.emulatronia.com
を書き換えます。
バイナリエディタで検索するとオフセット0x0004FDC0付近に
この文章が見つかりました。
![]()
ePSXeはpluginディレクトリにGPUプラグインを見つけることができませんでした。
推奨するプラグインを参考に、www.psxemu.comやwww.emulatronia.comなどから
最新バージョンをダウンロードしてください。
注意として、書き換える際は文章の終わりに必ず0x00を入力してください。
また、余った部分も0x00で埋めておきましょう。
なお例では一つの文章が長くなってしまうので適当なところで
0x0Aを入れ改行をしています。
■さらに踏み込んで日本語化
※最初に、次に紹介する方法はすべてのアプリケーションで
使えるものではないということを注意しておきます。
また書き換えを間違えるとアプリケーションやOSの動作が
おかしくなったりすることがあります。
さて今度はコントローラー設定ダイアログ右上
リスト項目にある文章を日本語化します。
![]()
バイナリエディタで検索すると0x0004F790付近に
このリスト項目にある文字列がありました。
![]()
まず最初の項目を
[SLEH-0007] Namco G-con45/Digital (F5)
↓
[SLEH-0007] ナムコ ガンコン/デジタル (F5)
に書き換えたいところなのですが、
元の文章が長さが38バイト(がんばって39バイト)、
翻訳後の文字列の長さが41バイトで
最初より文章が長くなってしまいます。
もしこのまま書き換えてしまうとなると
すぐ後ろに控えている[SCPH-1200] DualShock (F5)の領域を
侵略してしまうことになり表示がおかしくなってしまいます。
半角カナ文字を使えば余裕で入るようにはなりますが
半角カナはなるべく使いたくはありません。
どうにかしてここに41バイトの文章を入れたいのですが
それには2バイトほどスペースが足りません。
逆に言えば2バイトほどスペースが増えれば
文章を入れることができるはず。
さて、もう一度上の画像をよく見てください。
[SLEH-0007]~のすぐ前、
上の方にあるPositive、Negativeなどがあるあたり、
このあたりに少し隙間がありますね・・・
ここの間を少しずつ詰めていきましょう。
ここでわかりやすくするためにプロセスエディタの登場です。
下の画像はePSXeを逆アセンブルしたところですが、
先ほどのPositive、Negativeなどが参照されているのがわかります。
![]()
たとえば
0x00406B0B: 681CF74400 PUSH 44F71Ch str:"Full"
これはメモリの、アドレス0x44F71Cにある
"Full"という文字列を参照している部分です。
これの参照しているアドレスを書き換えることができれば
文字を詰めることができるはずです。
それはバイナリエディタに戻ります。
バイナリエディタを使って、
オフセット0x0004F710にあるNegativeを
少し前にずらしてみます。
Negativeのまえには0x00が4バイト続いています、が
文字列の後ろには必ず0x00が必要なのでそれをのぞいて
3バイト分、オフセット0x0004F70DにNegativeを
ずらしましょう。
オフセット0x0004F710に、0x00400000を足した値0x0044F710を、
さらにひっくり返した値10F74400をバイナリエディタで検索します。
このときデータ種別は16進データにしましょう。
![]()
なぜ0x00400000を足すのかは、ファイルの
オフセットをメモリのアドレスに変えるためです。
大抵この値でいけますがたまにこの値が使えない
こともあるので注意です。
まぁおまじないだと思ってください。
気になる人はファイルの文字列の位置と
実行中のメモリ上の文字列の位置とを比べてみましょう。
検索でいくつか出てきたところを
0DF74400に書き換えます。
![]()
これでとりあえず3バイトずらせました。
プロセスエディタで確認してみると先ほどのアドレスが
0x44F716に変わっているのが確認できるはずです。
![]()
0x00406B0B: 6816F74400 PUSH 44F716h str:"Full"
あとはこれを繰り返せば好きなだけ
スペースを稼ぐことができます。
![]()
こんな感じでリスト項目を
全角ですべて日本語化することができました。
![]()
※
この方法を使えばスペースの足りないところに
長い文章を埋め込むことができますが、その課程で
参照先のアドレスを奇数アドレスなど4バイトで割り切れない
アドレスに変えることになるのでアクセス速度が低下したり
ソフトによっては不具合が出ることがあると思います。
まぁ日本語化パッチぐらいでは
そんなに気になることではないと思いますが
念のため。
■次回
これまでで日本語化の作業は終わりです。
次回は差分をとって日本語化パッチを作ります。
関連記事:
- VisualBoyAdvance-M SVN 913 日本語化言語ファイル
- Project64 v1.6 日本語化パッチ
- ePSXe v1.7.0 日本語化パッチ
- ePSXe v1.6.0 日本語化パッチ
- VisualBoyAdvance-M SVN 880 日本語化言語ファイル







コメント (1)
こんにちはこんな大変な作業の上にパッチは作られていたんですね!
投稿者: dai | 2008年06月01日 20:55
日時: 2008年06月01日 20:55