導入

はじめに

_inmm.dllは、BGMの再生にCD-DAを使っているゲームソフトを、むりやり他の音源、たとえばMP3やMIDIなどに対応させてしまうプログラムです。

例えばゲームCDの音楽トラックをMP3にコンバートしてHDDに置いておけば、わざわざCDを入れなくても音楽つきでゲームを楽しめます。特定のトラックだけ別の曲に差し替えたり、いくつかの曲の中からランダムに演奏させたりといったこともできます。

_inmm.dllは自分で曲を再生することもできますが、Winampなど外部のプレイヤーを制御して曲を再生する機能も持っています。そのため、外部プレイヤーが対応している全ての形式を再生できます。

以下のような音源を、CD-DAの代わりに再生できます。

  • MP3
  • MIDI
  • CD-DA
  • Windows Media Playerが再生できる形式(DirectShow使用)
  • その他、外部プレイヤーが対応している全ての形式

上のリストにCD-DAが入っているのを不思議に思うかもしれません。これはトラックの順番を変えたいときや、一部の曲だけをMP3等に差し替えて、他の曲はCD-DAのままにしたいときに使います。

CDのデジタル出力をサポートする外部プレイヤーを使えば、WAVE出力からCDを再生できます。これによって、Windows2000/XPで曲の切り替えに時間がかかる(ドライブのスピンアップ遅延)問題も解消できます。

動作環境

Windows95/98/Me/2000で動作します。XPでの動作チェックは行っていませんが、おおむね問題なく動いているようです。

動作確認を行っている外部プレイヤーのバージョンは以下の通りです。

  • Winamp 5.21
  • SCMPX 1.51
  • Digital CD Player 1.07
  • SoundPlayer Lilith Ver.0.991b

SCMPXは1.20以降、Digital CD Playerは1.05以降、Lilithは0.987 pre-release.5以降であれば動くと思います。

仕組み

Windowsのサウンド関連の機能は、windows\systemフォルダ(NT系ではwinnt\system32フォルダ)のWINMM.DLLというDLLにまとめられています。ゲームなどのアプリケーションがCDや効果音を再生するとき、アプリケーションは「CDの5番目のトラックを再生せよ」というような命令をWINMM.DLLに送ります。

_inmm.dllは、アプリケーションからWINMM.DLLへ行く命令を横取りします。これはアプリケーションのプログラムを書き換えることで実現しています。「CDを再生しろ」「効果音を出せ」といった命令はWINMM.DLLではなく_inmm.dllに渡るようになるので、_inmm.dllでその命令を解釈して、CDを再生する代わりに別の処理を行うことができるのです。

プログラムを書き替えるといっても、いわゆる機械語コードの部分をを書き替えるのではありません。_inmmのパッチは、実行形式ファイル中の「WINMM.DLL」という文字列を「_inmm.dll」に、またWINMM.DLLが提供するAPI名の先頭を_(アンダーバー)に変えるだけです(例えば、mciSendCommandA→_ciSendCommandA)。この方式は汎用性が高いので、多くのゲームで_inmm.dllを使うことができます。

書き換えの作業はファイルをドラッグ&ドロップするだけの簡単なものですが、大抵の場合はそれさえも必要ありません。_inmmユーザーからの情報をもとに300以上のゲームがデータベースに登録されていて、その中にあるゲームについてはボタン1つで必要なファイルの書き替えが行われます。

制限

CD-DA以外の方法でBGMを鳴らしているゲームには使えません。

残念ながら、すべてのゲームでうまく動くわけではありません。動作確認済のソフト一覧 動作し ないことが確認されたソフト一覧 が公式サイトにありますので参考にしてください。

_inmm.dllは、ゲームのCDチェックを回避するものではありません。起動時にCDをチェックするゲームをCDなしで遊ぶには、仮想CDソフトと併用してください。

インストール

インストーラ版

_inmm238.exeを実行し、インストーラの手順に従ってください。すでに旧バージョンの_inmm.dllがインストールされている場合、上書きインストールされます。

Zip版

_inmm238.zipを展開すると、以下のファイルが出てきます。

ファイル 説明
_inmm.dll 本体
_inmmcnf.exe 設定&パッチユーテリティ
_inmmcnf.ini パッチ用の登録情報ファイル
_inmmserv.exe プレイヤーを制御するプログラム
doc\manual.html マニュアル
doc\faq.html FAQ(よくある質問と答え)
doc\history.html 変更履歴

この中で、_inmm.dllだけはwindowsフォルダかwindows\systemフォルダ(NT系ではwinntフォルダかwinnt\system32フォルダ)にコピーしておいてください(1)。ほかのファイルは適当なフォルダにまとめておきましょう。

_inmmserv.exeはプレイヤーの制御を行うプログラムで、_inmm.dllから起動されます。_inmmserv.exeは_inmmcnf.exeと同じフォルダに置いてください。

以前のバージョンの_inmm.dllを使っている方は、それぞれのファイルを以前のものと置き換えてください(別のフォルダにコピーした_inmm.dllも更新するのを忘れないように!)。

  1. _inmm.dllはゲームの実行ファイルと同じフォルダに置いてもかまいませんが、複数のゲームで_inmm.dllを使うようになると最新バージョンへの置き換えが面倒になりますから、windowsフォルダに置くことをお勧めします。

アンインストール

  • まず、パッチを当てた実行ファイルを元に戻します
  • インストーラを使った場合は、スタートメニューか[アプリケーションの追加と削除]からアンインストールできます。
  • Zipから手作業でインストールした場合は、圧縮ファイルに含まれていたファイルと、レジストリのHKEY_CURRENT_USER\Software\irori\_inmm.dll以下のキーをすべて削除してください。