Ichigo Exception <3

スマブラDXと、Linuxカーネルと、日々のつらい気持ち

今更のMasterHand 21

12/17(土)に、千里丘で開催されたMasterHand 21に行ってきました。 結果は本戦トーナメント最下位、サブトーナメントではなかったものの、(毎度ながら)散々な結果でした。 とてもつらいですが、スマブラDXを除いたら、私には誇れるものは何も残っていないので、定期的に参戦するしかありません。

よい人生のために試合の振り返りをしました。飛び道具の破壊とSDIの観察はうまくやれてました。 高リスクを取るべき場面(それがなんなのか、具体的に理解できているわけではない)で、あからさまに掴みが増える癖が残っていることを知りました。 ブラスターの高度調整を忘れていました。ダッシュ絶リフからの展開が準備できていませんでした。 対人練習時間はありませんが、脳内で悪者をやっつけるシミュレーションをして、次回マスハンで未来へ繋ぐ希望のリレーをします。

いつもなら反応できるはずの距離でガード準備をしつつ接近したら、あっさりダッシュNairを食らいました。 睡眠時間が足りていなかったのです。大会前日、とてもつらい思いをして一睡もできず、戦友ソバメシとの通話で一晩を乗り越えた経緯があったためです。 つらいですね。

GCコントローラ入力のサンプリングレート

コントローラ入力をモニタリングできたらいいなぁと思って、信号を覗いてみたことがあります(この話に関しては、また別の記事で)。
予想ではコントローラは60sps(samples per second)で入力状態を取ってると思っていましたが、実際には120spsでした。これに関するまとめです。

サンプリングレート

GCはコントローラに対して24bitのリクエスト信号を送り、コントローラはGCに対し64bitの応答を返す。 これを秒間120回行うというのが、コントローラ接続後の通常動作です。 すなわち、GCのハードウェア仕様としては、映像の60fpsに対し、コントローラの入力サンプリングレートは120spsです。 ここまで聞くと、まるで秒間60連打ができそうに思えますね(連打は010101…を認識しないといけないので、秒間最高連打数はサンプリングレートの半分になる)。

スマブラDXでの扱い

残念ながら、スマブラDXで秒間60連打はできないようです。 ふつうに考えると、120spsでサンプルしているなら最短1/120sだけボタンをONすれば必ず認識されるはずです。 しかし、120spsのうち、偶数回目のサンプルで「1」を検知したときのみ認識され、奇数回目のサンプルで「1」を検知してもゲームでは認識されないことがコントローラ信号をキャプチャしてわかりました。 実験は、スタートボタンを一瞬(1/120s)だけ入力して、それが効くかどうか確認しました。結果は以下のように…

偶数サンプル 0058  Start: 0  
奇数サンプル 0059 Start: 1 // これは効かない  
偶数サンプル 0000 Start: 0  
:  
奇数サンプル 0025 Start: 0  
偶数サンプル 0026 Start: 1 // これは効いた  
奇数サンプル 0027 Start: 0  

結局、60spsでサンプルしているのと同じ解像度でしか入力を読み取ってくれていないようです。残念。 尚、偶数・奇数というのはどの時間を0とするかで変わります。

とりあえず意識すること

コントローラは単に120sps(実質60sps)でボタン状態をポーリングしているだけです。 こすり入力では簡単に1/120s入力が可能ですが、1/60s未満の入力は効かないのだと思って、リフ割り込みのような入力は確実にボタンを押し込むべきです。