LoginSignup
4
3

More than 5 years have passed since last update.

Linuxのwineで「艦これ一覧めいかー改ニ」を動かす

Last updated at Posted at 2018-03-08

そのままでも動画キャプチャー機能とtwitter連携以外は問題なく動作するはず。

ここでは動画キャプチャーとその音ずれ対策について行った事を書いていく。前者はdllを置換するだけだが、後者はソースに修正を加えてコンパイルするのでwindows環境が必ず必要になる。

個人の環境に大きく依存しそうなので参考程度に。

  • 艦これ一覧めいかー改ニ
    Ver0.12
  • 作業環境
    Arch Linux 64bit
    VMWare上の Windows 10 64bit

動画キャプチャーを使えるようにする

ffmpeg.exeがエラーを吐くのが問題なのでそれの対応をする。

  1. windows環境から下記のdllをコピーしてくる。

    C:\windows\System32\quartz.dll -> ~/.wine/drive_c/windows/system32/quartz.dll
    C:\windows\System32\qcap.dll -> ~/.wine/drive_c/windows/system32/qcap.dll
    C:\windows\System32\downlevel\api-ms-win-core-privateprofile-l1-1-0.dll -> ~/.wine/drive_c/windows/system32/api-ms-win-core-privateprofile-l1-1-0.dll
    
  2. winecfgでdllオーバーライドの設定を行う。

    winecfgを起動し、ライブラリダブでquartz.dllqcap.dllを追加する。

音ずれを修正する

艦これ一覧めいかー改二のソースを修正してHot Soup Processorでコンパイルする。

  1. ソースに差分を適用する

    --- a/src/sub/VideoCapture.hsp
    +++ b/src/sub/VideoCapture.hsp
    @@ -192,20 +192,12 @@
            diffTime = 0.0
    
            if (vStartTime!=0.0 && aStartTime!=0.0){
    -           vStartTime = 11644473600.0+vStartTime
                dim FILETIME, 2
                GetSystemTimeAsFileTime varptr(FILETIME)
    -           aStartTime = -0.001*timeGetTime() + aStartTime + (4294967295.0*FILETIME(1) + (FILETIME(0)&0x7FFFFFFF) + -2147483648.0*((d(0)&0x80000000)>>31) )/10000000.0
    -           diffTime = (aStartTime-vStartTime)/1000
    -           //2秒以上ズレずれていたら無かったことにする
    -           if ( absf(diffTime)>2.0 ){
    -               diffTime = diffTime2
    -           }
    -       }
    -
    -       //2秒以上ズレずれていたら無(ry)
    -       if ( absf(diffTime)>2.0 ){
    -           diffTime = 0.0
    +           mtime = double(timeGetTime()) / 1000.0
    +           ftime = double(strf("%u", FILETIME(1))) * 4294967296.0 + double(strf("%u", FILETIME(0)))
    +           utime = ftime / (10000.0 * 1000.0) - 11644473600.0
    +           diffTime = (vStartTime - (aStartTime + (utime - mtime)))
            }
    
            logmes "vStartTime :"+vStartTime
    
  2. HSPのインストールとエディタのUnicode対策

    HSPをインストールする。

    一覧めいかーのソースはutf-8だが、HSPスクリプトエディタは非対応なので……

    1. あらかじめSJISに変換する。
    2. Unicode対応HSP「hsp3utf」を使う。
    3. 自分が知らないだけで楽な解決策がある。

    今回は2の方法で。

    hsp3utf_20170824b.zipをダウンロード・展開。hsed3utf.exehsed3.exeに名前変更してHSPインストール先のファイルを上書きする。

  3. コンパイル

    src/main.hspをHSPスクリプトエディタで開いて、メニュー > HSP > 実行ファイルの自動作成を実行する。文字化けしたファイル濶ヲ縺薙l荳€隕ァ繧√>縺九・謾ケ莠・.exeが生成されるので艦これ一覧めいかー改二.exeに名前変更する。

  4. あとはLinux環境に持っていって実行するだけ

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3