2012年12月23日日曜日

[変態Advent Calendar] 実機TAS-codingコントローラを作る

ファミコン用実機TASコントローラとかも作っているkshojiです。
変態Advent Calendarへは初参戦となります。やらしくお願いします。

TASとは?

→ 詳しくはニコニコ大百科のTASの項目あたりがオススメです。

大雑把に言えば「最速でゲームをクリアする」ために必要な再現用データを作る、という競技です。
RAM書き換えなどのズルをしていないので「実機で再現できる」というのがポイントです。
実機で再現できるので、つまり、実際に実機で再生させるプロジェクトというのもいくつか存在します。

実機TASコントローラを作ろう

以前、ファミコン実機でTASるコントローラを作ったこともあり、その連想でなにか出来ないか模索してみました。

今回はエンジニア向けっぽい変態ネタということで、Tool Assisted Speed-codingのコントローラを作ってみます。codingでもあり、typingでもありますが。
「自動キー入力するUSBキーボード」を自作する感じになります。

ちなみに今回のTASのルールとしては、プログラムのソースコードを入力し終わるまで、としています。

まずは、完成したものがこちらにあるので、動画を観てみましょう。
ご覧の通り、エディタの表示が追いつかないほどの変態高速入力となっております。

用意したもの

  • mbed(黄色いほう、青いのでもいける)
  • 秋月のUSB DIP化キット
  • ソルダーレスブレッドボードと配線
プログラムはこちら。わずか50行弱! こんなに簡単にオリジナルUSBデバイスが作れるmbedってすばらしい!
プログラムでなにをしているかというと、キー入力データファイルを読み込んで、ひたすらキー入力しているだけです。全ての入力が終わったタイミングでLEDを点けています。

配線はこんな感じです。

TASデータの仕様

  • 2バイト = 1入力データで、時系列順に並んでいる
  • 偶数バイト目は、キーコード(0〜255)
  • 奇数バイト目は、補助キーの状態フラグ(1: ctrl, 2: shift, 4: alt)
テキストデータ→TASデータの変換ツールを作ってみましたので、汚いコードですが参考までにリンクしてきます。

使い方

  1. 事前にTASデータファイルを作成しておきます。
  2. mbedのサイトにログインしてコンパイラを開き、プログラムをコンパイルしてダウンロードします。
  3. mbedに付属しているUSBポートに接続するとマスストレージデバイスとして認識されるので、バイナリファイルとデータファイルを置きます。
  4. 一旦mbed上のボタンを押し、リセットします。
  5. 適当なエディタを開きます。エディタの入力支援機能は「全部オフ」にします。
  6. 配線の写真右上のほうのUSBポートをPCに接続すると、キーボードとして認識され、キーが全力で入力されます。

性能

1097キーをタイプするのに5.80秒掛かっていたので、1秒間で189キー入力することができます。

TAS-codingの今後

今回はエディタへの単純な入力のみでしたが、以下のような記録改善テクニックが出現するだろうと予想されます。
  • コンパイラ的に不要な入力を排除する。
  • コピー&ペーストを使う。
  • IDEの補完機能を利用してキーストロークを減らす。
  • 自動入力マウスなど、他のTASデバイスを併用する。
  • TAS-codingデータ記録専用エディタが作られる。
  • などなど……
TAS-codingの世界はまだまだ始まったばかり。今後の変態的発展に期待したいところです。

次はhakuraiさんですー。