Wine2.1以降でBaldr Sky DIVE2が起動できない問題(解決済み)

※これは症状をメモしただけで、現時点では何も調べていないので何の参考にもならないと思う

fixme:win:RegisterDeviceNotificationW (hwnd=0x128000, filter=0x64e8bc,flags=0x00000001) returns a fake device notification handle!

の後
「入力デバイスを初期化できません」
というモーダルが出る。

恐らく内部でAPIの呼び出しが失敗したら終了、としているのだろう。
wine1.7.55では動作すること、wine2.1以降のすべてのバージョンで動作しないことを確認している。
とりあえずバグ報告のためにはどのバージョンから動かないのか確認しなくてはいけないが、面倒なので暇になったらやろうと思う。
バージョンが多すぎるから正直辛い。
ちなみに、(上述の通り動作するバージョンは詳しく確認していないが)1.7.55等では
・Dive1 & 2を同時インストー
・公式パッチを適用(なくてもプレイはできるが、あった方がいい)
・Dive2のreg.exeをnodisk化
・Dive2のBaldrSky.exeを起動(dive1の内容もdive2からプレイできる)
という手順を踏むことで普通にバルドスカイをプレイすることができる。キーボードに限界を感じたので途中からXbox360の有線コントローラーを導入してみたが、これも普通に動作する。windowsで遊ぶときの3倍くらいの頻度で落ちるけど……。
Dive1のreg.exeはwineで動かすと信じられんくらいバグるのでDive1だけ遊びたいという場合は少々キツいかもしれない。
また、wineから起動したreg.exeがdvdromをきちんと検出したのを僕は一度も見たことがない。製品コードを入力すれば起動時のディスク確認が回避できるゲーム以外はたいていnodisk化が必要になる。

追記
wine 2.5-1での動作を確認した。
ただし、32bitのwine環境だとゲームパッドが動作しない。

さらに追記
AlphaRomが動作しないのは恐らくHeapSetInfromationというAPIのせい。

SRM 710 div1easy

例のごとくeasyしか開いていないが全くわからなかった。
http://codeforces.com/blog/entry/50572にwriterさんがヒントとかを書いてくれたので見たが、一箇所に集めるというのは全然思いつかなかった。
x[0]以外のところで操作してたらそのうち集まるっていうことらしいが。
むう。

コンテスト中は辛い思いをしたが、面白い問題だった。