ushiroadRetrodeを買った

今日11月21日はスーパーファミコンが発売された日で、今年で23周年らしい。それに合わせたわけではないけど、Retrodeという機械を買った。
Retrodeとはスーパーファミコン(SNES)とメガドライブ(GENESIS)のROMカセットを読み取るためのいわゆる吸い出し機であるが、電子工作レベルの物とは異なり、PCからはROMの内容がUSBメモリのように見え、特殊なソフトウェアなしに扱えるという優れものである。しかも、実機のコントローラーをUSBゲームパッドとして認識させるアダプタも一体化しており、至れり尽くせりである。

Puyopuyo2

元の値段は85ドルで、国内の業者から買うと1万円近くする。なかなかいいお値段がするが、これには理由がある。スロットの隙間からRetrodeの中を見ると、ATMELと書かれたICが見える。これはAVRと呼ばれるマイコンである。Retrodeはゲーム機のふりをしてROMカセットの内容を読み出しつつ、PCに対してはUSBメモリのふりをする。こうした複雑な振る舞いをするために、Retrodeはちょっとしたコンピューターを搭載しているのである。

では早速ROMを読み取ってみる。もちろんMacやWindows PCも持っているが、ここで持ち出すのはあえてSurface RTである。こいつで動けば電池駆動680gのスーパーファミコンが手に入る(これにRetrodeの重量も加わるが)
USBポートにRetrodeを接続すると、読み取りはあっさり成功。無事にROMカセットを読み取れた場合は、ゲーム名+16bitチェックサム という名前のファイルが現れる。

Retrode connected Retrode drive

ROMの読み取りは実機同様に失敗することがある。失敗すると単にファイルが無かったり、GenericROMなどという名前になったりする。こうなったらROMカセットを差し直す必要がある。昔懐かしい、カセットを裏返してフーフーする光景の復活である。しかし、金属の端子に息を吹きかけると錆びるリスクがあるそうなので、大人なら上品に綿棒やエアダスターを使うべきである。
古いROMカセットの読み取りがいつまでも成功し続ける保証はないので、一旦読み取りに成功したら別のメディアにバックアップをしておくと良い。当時のROMカセットには読み取りを阻止するような処理(著作権法上の技術的保護手段)が施されていないので、ファイルを他人にあげたりしない限りは私的複製として認められると思われる。

普通のPCならあとは難しいことはなく、大手を振ってエミュレーターでゲームを楽しめる。
しかしWindows RTでは一つ難があった。今のところWindows RTで唯一のスーパーファミコンエミュレーター「Snes8x」は、Retrodeのアダプタを含む一般的なUSBゲームパッドを認識しないのである。これはSnes8xがXInputと呼ばれるAPIを使っているためと思われる。Windowsには古くからゲームパッド用のAPIがあるが、少し前にMicrosoftはこれを切り捨てて、XBoxコントローラーに特化したAPIを新たに制定した。これがXInputである。XInputのみで作られたゲームでは古い仕様のゲームパッドが一切使えなくなる。
他に手は無いかと設定画面を見ると、XBoxコントローラーとタッチ操作の他に、キーボードに対応している。

そこで思いついた。Arduinoでスーパーファミコンのコントローラーをキーボードに化けさせればどうだろう。世の中にはスーパーファミコンのコントローラーをArduinoで扱いたいと思う人はそこそこいるようで、そのためのライブラリが存在している。また、USBキーボードのエミュレーション機能については、Arduino Leonardoという機種に標準で搭載されているようだ。この2つがあれば、自作アダプタぐらいなら簡単にできそうだ。
早速秋葉原で買ってきたArduinoの基板を眺めていると、AVRのチップが目に入った。そうか、こいつとRetrodeは親戚なのだなあ。ん? RetrodeにもAVRが載っているのだから、Retrode単体でキーボードのエミュレートぐらい簡単にできるのでは…… 嫌な予感がしてRetrodeのサイトを見ると、なんとゲームパッドの替わりにキーボードとして振る舞う機能が付いている。わざわざ秋葉原で買ってきたArduinoは全くのお払い箱になってしまった。

F-ZERO

まあとにかく、これで本物のコントローラーで、合法的にエミュレーターによるレトロゲーミングを楽しめるようになった。実機の処理落ちを再現している場面は別として、エミュレーター自体が遅くなるようなことは全く無かった。

Mario Allstars

続いてマリオコレクションを起動したところ。Surfaceでは「艦隊これくしょん」が動くものの重くてつらいという話をよく見かけるが、マリオコレクションは極めて快適に動くのでみんなマリオコレクションをすればいいと思う。

Arduino

最後に、可哀想なArduino。このままお蔵入りにするのもナンなのでとりあえずMacBook AirにつないでLEDをチカチカさせてみた。まあそのうち何かの役に立つだろう。

2013-11-21 ushiroad