2015年4月11日土曜日

rtmpsuckが重い

設定メモ: radikoをひらくスクリプト
でrtmpsuck使ってる。

4コア8スレッドなんであんまり気づかなかったが、
ラジオ録音中1コアがCPU使用率100%になってた。

gdb -p (PID)で
info threadsで調べて
thread 3でみると、

以下をフル回転している。

 715   while (1)
 716     {
 717       ich = getchar();

多分原因は以下で起動しているせい。(rubyから起動)
入力がnullだから。

pid = spawn( "/usr/local/sbin/rtmpsuck", :in=>"/dev/null", :out=>"/dev/null", :err=>"/dev/null" )

nullに代わるものの渡し方がわからなかったので、簡単に以下のように直す。

 715   while (1)
 716     {
 717       ich = getchar();
 718       if( ich == -1 ){ break; }

これでOKだと思うが未確認。そのうち実験する。

2015年4月8日水曜日

SSFでセガサターン on wine

wineでSSFを動かしたメモ

サターン本体は2台あるけどどっちも電池切れでデータ全部飛んでほこりかぶってる。
当時はフラッシュメモリとか無かったのか、メモリーパックの中身も全部飛んだ。
エミュレータならちゃんとバックアップしておけば大丈夫だろう。

SSFはVer0.12 beta R4
wineは1.6.2だけどPlayOnLinuxでやってみたら1.7.39まで特に違いはなさそう。

サターンのCDはマウントしておく。
普通に実行すると↓のようなエラーが起こる。

XAudio2Create() error.
File: ./XAudio2App.cpp
Line: 260
Function: XAudio2App::Initialize

windowsならDirectXとか入れとけばいいんだろうけど、
XAudioがうまく行ってないようなので↓のコマンドで入れる。
(2016/2/25 追記:wine1.9.4でやってみたところ不要になっている。 )

winetricks xact
winetricks xact_jun2010


これで実行すると、↓のようなエラーが起こる。

IDirect3DDevice9::UnlockRect() error.
File: ./Direct3D9.cpp
Line: 1548
Function: Direct3d9::_SetTexture

SSFで画面が切り替わるあたりで異常っぽい。
SSFの設定を試行錯誤して動かした。

--- SSF.ini.org    2015-04-08 01:44:33.339513534 +0900
+++ SSF.ini    2015-04-08 01:46:09.123557993 +0900
@@ -24,14 +24,14 @@
 ScanlineRatio="70"
 DisableFullscreenScanline="1"
 AutoFieldSkip="1"
-EnforceAspectRatioWindow="1"
-EnforceAspectRatioFullscreen="1"
+EnforceAspectRatioWindow="0"
+EnforceAspectRatioFullscreen="0"
 WideScreen="0"
-VSynchWaitWindow="0"
-VSynchWaitFullscreen="0"
-FixedWindowResolution="0"
-FixedFullscreenResolution="0"
-BilinearFiltering="0"
+VSynchWaitWindow="1"
+VSynchWaitFullscreen="1"
+FixedWindowResolution="1"
+FixedFullscreenResolution="1"
+BilinearFiltering="1"
 StretchScreen="1"
 FullSize="1"
 FullscreenDisplay="0"
@@ -47,24 +47,24 @@
 [Program1]
 DisableInput="1"
 FlipThread="0"
-VDP1DrawThread="0"
+VDP1DrawThread="1"
 VDP1ThreadNumber="1"
-VDP1ThreadAlwaysRunning="0"
+VDP1ThreadAlwaysRunning="1"
 VDP1Division="1"
-VDP2DrawThread="1"
+VDP2DrawThread="0"
 VDP2ThreadNumber="11"
 SoundThread="1"
-CDBlockThread="0"
+CDBlockThread="1"
 CDBlockNoWait="0"
 ScanlineBaseTiming="0"
-DSPThread="0"
-DSPThreadAlwaysRunning="0"
+DSPThread="1"
+DSPThreadAlwaysRunning="1"
 DSPDynamicRecompile="1"
 Priority="2"
 
 [Program2]
 CDDriveReadSectors="8"
-DotClock="2.50"
+DotClock="3.70"
 BlockClock="80"
 CheckSlaveSH2IdleLoop="1"
 SlaveSH2Speed="90"
@@ -92,7 +92,7 @@
 BranchInstructionClock="0"
 
 [Program4]
-CDAccessLED="1"
+CDAccessLED="0"
 NoBIOS="0"
 HookBackupLibrary="1"
 EnableFDD="0"
@@ -133,7 +133,7 @@
 PadType1_3="5"
 PadType1_4="5"
 PadType1_5="5"
-Pad0_0_0="2/200/2/208/2/203/2/205/2/44/2/45/2/46/2/31/2/32/2/33/2/30/2/34/2/28/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0"
+Pad0_0_0="1/33025/1/33026/1/32769/1/32770/1/0/1/256/1/512/1/768/1/1024/1/1280/1/1536/1/1792/1/2048/0/0/0/0/0/0/0/0/0/0/1/33025/1/33026/1/32769/1/32770/1/0/1/256/1/512/1/768/1/1024/1/1280/1/1536/1/1792/1/2048"
 Pad0_0_1="0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0"
 Pad0_0_2="0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0"
 Pad0_0_3="0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0"

パッドの設定はぷよぷよフィーバー買った時についてきたPC用サターンパッド用
 (というかパッド目的で買った)

未解決の問題:
これで動かすと、5回に1回くらい正常起動する。一回動くと大丈夫。
あと、オプション設定しようとすると死ぬので、設定は手動でiniファイルをいじる。
パッドの設定はどうやったか覚えてない。マウスクリックで進んだり、何度もやれば書けたんだったか、類推して直書きしたか?

2016/2/25 追記
wine 1.9.4で動かしてみたら正常起動する確率が上がっていた。というか失敗しない。
あと、オプション設定もできるようになってた。

パッドの設定は、アナログ入力がずっと入っているようなデバイスは抜いて実行する。
(キーが離されるまで設定が進まない仕様のようなので、
 ハンドルコントローラとかつなげていると、設定が進まない)

あと、実際はCDEmu使って仮想CDで実行している。CDのイメージ化はlinuxで適当なのが見つからなかったので、Diskjugglerってやつをwineで動かして吸いだした。CDの寿命は10年くらいと聞いたことがあるが、意外と今でも読めるんだなあ。 読めなくなる前に全部吸いだしておきたい。

遊んでいるところ



グランディア
Disk2まで行って保留中。雨月の塔のあたりでイベントが起こらなくなって進めなくなったが、dotclock3.7にしたら進めた。以後dotclockは3.7のまま。



ShiningForce3
最初の頃のSSFだと魔法のエフェクトがおかしかったりしたけど、今のSSFだと完璧に見える。


バーチャロン
ツインスティック繋げたい。

エミュレーション部分についてはもう何の文句もないくらい動いた。