v1.12用 新規music追加 Nefarius著 Yos訳
元記事はここ
※例によって、理解できた点を書き起こしています。
また、MLS+を使ってMOD用のディレクトリを用意してる前提で記述しています。
新しい音楽を追加するには、D2Client.dllをいじくる必要があります。
いじくるにはOllyDbg v1.10というツールが必要です。
ここで拾ってください。
日本語化パッチはここにあります。
このツールなんですが少しばかり難しいです。
バイナリエディタは単純にファイルを直接書き換えますが、
このツールはDLLや実行ファイルをメモリ展開し、メモリ内をアタッチするというツールです。
(アセンブリツールというのですかね?すいませんあまり詳しくないです…)
単純に書き換えて保存ってわけにはいかないので、やり方も含めて説明します。
※自分がこの手順でうまくいったというだけなので、もっと簡単な手順があるかもしれません。
有識者の方がいらっしゃいましたら、加筆修正を…。
DLLをロードする
とりあえずD2Client.dllはバックアップを取っておきましょう(笑)
以下の手順でOllyDbgにD2Cliend.DLLを読み込ませます。
1.OllyDbgをインストールしたディレクトリに、DiabloIIのDLLを全部放り込んで、OllyDbgを起動します。
2.ファイル->開くを選択->ファイルの種類を*.dllに変更->D2Cliend.dllを選択
3.なんかメッセージがでるので「はい」を選択
アタッチ
DLLを開くと、左上に6FA~という文字列がでてるウインドウがみえると思います。(Cという文字がアイコンになってます)
以下の手順で書き換え(アタッチ)します。
1.Ctrl+Fで検索窓を開く
2.全ブロックのチェックをはずす。
3.CMP ECX,125Aを入力し、検索する。
4.CMP ECX,125Aという文字列をダブルクリックし、「125A」を書き換えて、アセンブルを押す
5.1にもどって4までをもう一回行う
ようするに全部で2箇所、CMP ECX,125Aを書き換えるということになります。
このとき書き換える値ですが、Sounds.txtのIndex列の数字になります。
たとえば、4732までを音楽として使いたい場合、16進数に変換すると127Cですので、127Cに書き換えます。
※それぞれ2アドレス手前に似たような記述がありますが、そこにはCMP ECX,1231とあるはずです。
1231を10進数にすると4657。Sounds.txtのIndex列の4657からmusic_~となっているので、ここが始まりを表してるものと考えられます。
別ファイルに保存する
アタッチが終わりましたら、保存します。
1.Cウインドウ内で右クリック
2.コピー->すべて選択
3.再度CPUウインドウ内で右クリック
4.実行ファイルへコピー->選択行
5.別窓が開く(Dという文字のアイコンのウィンドウ)ので、
右クリック->ファイルに保存で、適当に名前をつけて保存します。
以上で、DLLの書き換えは終わりです。
出来上がったファイルを作成しているMODのディレクトリに移動させ、
D2Client.dllにリネームします。
新しいサウンドを用意する
バックミュージックを作るには、SoundEnviron.txt、Sounds.txt、Levels.txtを編集します。
- SoundEnviron.txt
どこか適当な行からコピーして書き換えます。
街中ならACT2あたりの行(14行目)をコピーするといいでしょう。
ダンジョンなら29行目とか。
Handle | Index |
ほかの行と似たようにそれっぽく | 最終行+1 |
- Sounds.txt
これもどこかからコピーしてきたほうがいいかと思います。
書き換えるのは以下。
Sound | Index | FileName |
適当にそれっぽく | 最終行+1 | サウンドファイルの場所 |
サウンドファイルのパスは、data/global/music/の配下からを記述します。
また、サウンドファイルのフォーマットはwav形式で22.05Hz、16bitです。
※ためしに44.1Hzでやってみたらすごいことになりました(笑)
- Levels.txt
差し替えたいエリアのSoundEnv列を、
先ほど追加したSoundEnviron.txtのIndex列のものに書き換えるだけです。
あとは実際にゲーム内で音楽が聞こえてきたら成功です。
※本手順で書き換えを行った各種txt、D2Client.dllは実際にMikuruMODで使用しています。
以上
コメント