2011年1月31日月曜日

ワイヤーインザブラッド

新しいの(クリムゾンの祈り)がレンタルに出たので借り。
ワイヤーインザブラッドって、副題の方を作品タイトルとして表示するので、これまでのひと通りのシリーズを全作品見たのかどうか自信が持てない。。。

最近、DVDをPCで見れなくなってしまった><なぜだ~~~認識できない><
仕方ないのでPS3で見るのだが、ホームシアター(w)としての環境ができている人にはいいんだろうけど、うちのようにヘッドホン(イヤホン)+PCディスプレイで鑑賞、なんていう場合、PCのプレーヤーのほうが画像/音質の調整幅が自在で便利なんだよなぁ。

2011年1月30日日曜日

劇的ゴールで終焉

アジアカップ決勝。李のボレーシュートは美しかった^^
李って好きじゃなかったんですよね。韓国代表を狙ってたけどダメだったから日本国籍とって日本代表になったって経歴を知ったので、いかにも在日だなぁ、って感じで。
さて、アジアカップも終わったし、そろそろ寒さの峠も越した(というか寒さになれた?)し、ひきこもり生活も終わりでしょうかね。

2011年1月26日水曜日

だーかーらー、興奮の余韻で寝れないだろっが

アジアカップ、韓国戦。PKで決勝進んだけどすっきりしねーなー。延長のgdgdもう見てられなかった。

僕的まとめ
長友と本田の時間稼ぎw長友、スタミナすごいけどシュートは全く期待できないw
パク・チソンってやっぱすごい。本田や香川と並べても別格だわ。
前田おめ。前田って人種的に僕と同起源だろうなって思って応援してます。目立たないところとか、ちゃんと飯食ってるの?っていわれるところとかw
汚い方の本田w
李、出なくてホッ
ドヤ顔
裏世界一防衛!!!

2011年1月24日月曜日

XFPS

サッカーアジアカップの影響で夜更かしして眠れなくなったのでネタをカキコ。
なんかねぇ、1月は正月休みからずっと夜更かし続いて体調崩してます><























あ~こんなの買ってしまった。XFPS。どうしてもね、ハッキング魂というかチート魂を抑えきれなかったのよw

PS3につないで、PCのキーボード/マウス操作をコントローラの操作として代用させる機器です。ボタンの連射機能はオマケでしょう。これを使うと、コントローラで操作しつつ、PCのキーボード(マウス)を併用して操作できるようになります。

にしても、安っぽい外見ですな><もうちょっと何とかならんもんかねぇ。。。

さて、コントローラとPCキーボードとの併用ができる、ということから、チートクソ野郎の僕としては^^;こんな使い方したいなぁなんて思うわけです。
「PS3の画面(NTSC-SD)をキャプチャし、画像処理して、処理結果をコントローラ信号としてPS3に送り込む」
PS3にコントローラを別に繋げば、コントローラで操作しつつPCから必要なときにコントローラ信号を送り込むことができるので、BOT的なアプリだけでなくアシスト的なアプリもできてしまうわけです。(PS3のゲームソフト側でそういう二重化インターフェースを検知してなければ)

で、まずは、自作のPCアプリからPS3コントローラ信号として送り込むことができることを確認しないといけない。


XFPSの本来の使い方ですが、開発元サイトで配布されているアプリ(XFPS1.6 for PS3.exe(2011.01.18現在))を介して、キーボードやマウス操作をPS3コントローラのボタンやスティックに割り当てて使用します。
このアプリは実行ファイル1つのみで動作するもので、SDKは用意されていません。

入力インターフェースのプログラムとしてすぐに思いつく方法としては、
「自作プログラムで、配布アプリ上で割り当てたキーを叩くエミュレーションをさせる」
でしょう。
実際作ってみれば、おそらく、うまく動くだろうし、実用レベルになると思います。
ただ、あんまり美しくないですね。
やっぱり直接デバイスに操作情報を送り込むようにしたい。

ということで、配布アプリの中身をちょっと調べてみて、要点を抜き出したのが、
以下のコードです。

参考にすべきは、Windows DDKのサンプルである、hclientかな?
どうやら、XFPS1.6 for PS3.exeでは、デバイスの接続有無を調べて、デバイスが接続されていればパイプを作成し、
そのパイプに操作データを書き込む(下記コードのhPipeに対してWriteFile()する)ことで実現しているようです。


とまぁ、今回の解析はここまで。
だって、グランツーリスモ5でアシスト機能(BOT機能)ていってもねぇ、なかなか使い道が思いつかない。MT操作をAT操作にする(シフトアップだけAT、シフトダウンはMTとか)くらいしか思いつかないんだもん。


HANDLE hPipe=INVALID_HANDLE_VALUE;


GUID hidGuid;
HDEVINFO hardwareDeviceInfo;


HidD_GetHidGuid(&hidGuid);
hardwareDeviceInfo=SetupDiGetClassDevs(&hidGuid, NULL, NULL, 0x12);


SP_DEVICE_INTERFACE_DATA sp_devinterfacedata;
sp_devinterfacedata.cbSize=sizeof(SP_DEVICE_INTERFACE_DATA);


for(DWORD MemberIndex=0; ; MemberIndex++){
  int ret=SetupDiEnumDeviceInterfaces(hardwareDeviceInfo,
                                      NULL,
                                      &hidGuid,
                                      MemberIndex,
                                      &sp_devinterfacedata);
  if(ret==0) break;


  DWORD requiredLength, predictedLength;
  SetupDiGetDeviceInterfaceDetail(hardwareDeviceInfo,
                                  &sp_devinterfacedata,
                                  NULL,
                                  0,
                                  &requiredLength,
                                  NULL);


  predictedLength=requiredLength;
  PSP_DEVICE_INTERFACE_DETAIL_DATA psp_devinterfacedetaildata=malloc(sizeof(predictedLength));
  psp_devinterfacedetaildata.cbSize=sizeof(SP_DEVICE_INTERFACEDETAIL_DATA);


  SetupDiGetDeviceInterfaceDetail(hardwareDeviceInfo,
                                  &sp_devinterfacedata,
                                  psp_devinterfacedetaildata,
                                  predictedLength,
                                  &requiredLength,
                                  NULL);


  HANDLE hHIDDevice=CreateFile(psp_devinterfacedataildata->DevicePath,
                               0x40000000, // GENERIC_WRITE
                               2,
                               NULL, // no SECURITY_ATTRIBUTES
                               3, // OPEN_EXISTING
                               0x40000000, // FILE_FLAG_OVERLAPPED
                               NULL);
  
  HIDD_ATTRIBUTES HIDAttributes;
  PHIDP_PREPARSED_DATA HIDPreparsedData;
  HIDP_CAPS HIDCaps;
  
  if(hHIDDevice!=INVALID_HANDLE_VALUE){
    HIDAttributes.Size=sizeof(ULONG);
    HidD_GetAttributes(hHIDDevice, &HIDAttributes);
    ret=HidD_GetPreparsedData(hHIDDevice, &HIDPreparsedData);
    if(ret){
      HidP_GetCaps(HIDPreparsedData, &HIDCaps);
      //    ...
      HidD_FreePreparsedData(HIDPreparsedData);
    }
  }
  CloseHandle(hHIDDevice);
  
  char pipeFileName[MAX_PATH];
  
  if((HIDAttributes.VendorID==0x04b4)&&(HIDAttirbutes.ProductID==0x0811)){
    wsprintf(pipeFileName, "%s\\PIPE1", psp_devinterfacedataildata->DevicePath);
    
    hPipe=CreateFile(pipeFileName,
                     0xc0000000, // GENERIC_WRITE|GENERIC_READ
                     3, // FILE_SHARE_READ|FILE_SHARE_WRITE
                     NULL,
                     3, // OPEN_EXISTING
                     0,
                     NULL);
  }
  free(psp_devinterfacedetaildata);
  SetupDiDestroyDeviceInfoList(hardwareDeviceInfo);
}


unsigned char DataBuffer;
if(hPipe!=INVALID_HANDLE_VALUE){
  // ...
  DWORD writtenLength;
  WriteFile(hPipe, DataBuffer, 0x32, &writtenLengh, NULL);
  // ...
}

STAR DRIVER #16 タクトのシルシ

第2フェーズの解答編でした!
前話からの続き(フェリーでの電子音)からうまくつながっていてきれいな終わり方でホロッときました^^;;;

今回も、残りの巫女(ヒガシの巫女?)も0時間に来ているのでは?とか、タクトの過去(の登場人物)とか、伏線いっぱい。
このアニメ、謎解き要素があるのでバカに出来ないというか、真剣にセリフを聞きもらさないようにしないといけません。
僕も、前回のミズノの母親が玄関でミズノしか呼ばなかったところで確信したのですが、今後もこういう場面が出てきそうだし、逆手にとって視聴者をだますようなセリフも出てくるのかも。。。
しかし、セリフが聞き取りにくい><特に戦闘中の場面はBGMと効果音が混じってしまって???なところがいっぱい><
KMPlayerの特殊エフェクトでボイス強調にしてはいるんですが。

マンガやラノベ原作のアニメが多い中でのオリジナル作品って良いです。先が読めない。いや、大体の結末は推測できるんだけどそこにいたるまでの過程が読めないので期待してしまいます。今回の放送枠からいって、人気が出たから延長、なんてことはないと思うので(ウテナとか、あれ引っ張り過ぎだと思ってます)、一作品としての完成度は保証されているはず、という安心感はあります。

あー、あと、下手にネットでネタバレや正解に近いものを見てしまうと興醒めなので、議論するのは内輪のみでやりませうw

2011年1月17日月曜日

STAR DRIVER #15 封印の巫女

ここ最近みたアニメの中では、最高の出来の1本だったと思います。何度も見返してしまった。

前回までの伏線の再提示(ミズノとマリノの母、マリノのサイバディを通してみた風景)
さらなる伏線の提示(ミズノの母の帰宅とその時のセリフ、ラストのミズノと化学部部長との出会い)
ミズノの不条理な時間の繰り返し(このパートだけでも見る価値アリ。ここの不安を煽る音楽がハマってる)
ワコによる救出(普段見せない本当のワコの姿)

次の回が早く見たい、と思わせるアニメは久しぶりです。

2011年1月13日木曜日

グランツーリスモ5 日本選手権

MR2(SW20)のNAをフルチューンして280馬力にして出てみました。
最初の筑波10周が長くてツライのと、NSXがエントリーされると辛いけど、余裕で優勝を並べることができました。
スタート時の小競り合いでフロントの艶が無くなっているのが悲しい><
これは、本来は市販ノーマル状態ででるべきレースなんだろうか???
ちょっとフロントの車高が高いなぁ。もうちょっとフロントのバネを固くしといたほうがいいのかも。