風来のシレン 月影村の怪物 Windows版 でBGMをOnにしているとハングアップすることがある問題の修正(Win11対応)
最近は古いPCゲームをインストールしたり動かしたりしている。動かないと思っていたソーサリアンオリジナルが、少しの追加操作(完全インストール後標準モードで上書きインストールする)でWindows11で動作するようになったりしてとっても楽しい。
掲題の件。風来のシレン 月影村の怪物 Windows版は最近のWindowsで動かすと不定期にハングアップする問題があり、コミュニティではMIDI音源を入れると安定するとか、BGMを切れば問題は起きないとか言われていた。
俺もソフトを入手して Windows 10 で動かそうとしたところ同様の問題に遭遇。とりあえずBGMを切って遊んでいたが、なんとも味気なく、子供を助けたあたりでゲームを投げてしまいこんでしまっていたのだった。
シレン6発売で様々な人がシレンで遊んでいるのを見て、自分もこのソフトを買っていたことを思い出し久々に遊ぼうとしたところ、Win11でもやはりこの問題に遭遇。コミュニティの情報を参考にいろいろ対処を行う。互換モードの利用、MIDI音源の導入は効果なし。BGMをオフにすると確かに問題は発生しなくなったがやはり味気ない。
せっかく技術者をやっているので、デバッガで動作を追いかけてみたり、構成ファイルを確認したりしながら問題を再現してみたりした。すると常に同じタイミング、というよりBGMの演奏が特定の場所に差し掛かると落ちていることに気づく。てことは本体弄れなくてもMIDIファイルを弄ることで問題に対処できるかもしれない。
見たところ、BGMに使用されているMIDIファイルにおいて同じチャンネルで Channel Volume イベントとのNote Onが同時に起きる場合にハングアップする模様。Winbdows 8あたりでMIDI関連のDLLに非互換出てたと思うので多分その辺が原因かもしれない。
MIDIのChannel Volume イベント を演奏に影響しない範囲で遅らせることでハングアップしなくなることを確認した。ただ、該当箇所の調査が結構面倒くさいのと、厳密に検証していないが、ほかにもChannel Volume イベントが被ると落ちるノートやイベントがあるかもしれなくて、全部修正・確認するのはまあまあ面倒そう。とりあえず一通り修正が終わったらパッチを作ってみようと思う。
俺は非インターネット版しか持っていないので、インターネット版でこの問題が起きているのかは不明。インターネット版は高すぎる上にライセンス認証に問題があり合法的に遊べるかが怪しいので、多分入手しても十分な修正はまず無理だろう。
追記:パッチ作った。
http://www.lapcie.com/index.php?page=uploader&type=up 7852.zip
shiren.exeのあるフォルダで実行。WEP影響下のフォルダだと正常に適用できないことがあるので注意。