-->

2016年8月15日月曜日

WiiU GamePadのエミュレーション(②参考サイトまとめ)

ここではGamePadのエミュレーションの実現に関しての情報を収集したサイトを紹介します。


"libdrc" project
http://libdrc.org
総本山、WiiU本体とGamePadの通信内容やハードウェア構成について、すべてというわけではないですが、かなり詳しく記載されています。

Mema Haxx(Bitbucket)
https://bitbucket.org/memahaxx/
Memaって人は"libdrc"を作った人だと思われ、たぶんすごい人。ぶっちゃけ動くものがもうすでにここにあるので、"libdrc"のページに書かれていない情報があっても動かして確認すればよいわけです(というかそうした)。

上記のMemaさんのページにはいくつかのプロジェクトがあるのですが、各プロジェクトは"libdrc"に関連したものになっており、それらについて知っている限り記載しておきます。
  • drc-sim
    GamePadのシミュレータ、今回やりたいことがほぼ実現されています、が、Pythonです。個人的にはC言語が扱いやすかったのでこのPythonコードをC言語に移植しています。
  • drc-hostap
    WiiUと接続するための無線ミドルウェア、WiiUとの通信は既存規格をちょっと変えた方式をとるので通常のミドルウェア("hostap")では通信できない。そこで既存の"hostap"を改変したものが"drc-hostap"、"libdrc"を使う場合でもWiiU本体と無線接続しなければならないので、このプログラムは必須。
  • libdrc
    メインプロジェクト、PCと接続したGamePadに対して画像表示などが行えるライブラリです(たぶん)。
  • drc-x264
    WiiU本体からGamePadへの画面表示はH264を使用して圧縮しています。そのため"libdrc"を使用してPCからGamePadへ画面を送るときにはH264でのエンコードが必要になります。しかし、例によって既存のH264からちょっと変更した方式をとっているようで、"hostap"と同じくH264エンコーダーである"x264"を改変しているようです。なので、"libdrc"を使用する場合は必須と思われます
  • wudrnet
    よくわからん
  • rc-re-scripts
    リバースエンジニア用のツールっぽい
  • drc-wireshark-plugins
    "drc-wireshark"用のプラグイン?解析パケットの表示用?
  • drc-cap
    キャプチャツール?よくわからん
  • drc-mac80211
    ドライバ?よくわからん
  • drc-wireshark
    "wireshark"はパケットアナライザらしいので、今回の通信を解析するための改変版みたい

今回の目的はGamePadのエミュレーションなので"libdrc"とは逆です。ですので"libdrc"は必要ではありません。なので所長は全く触っていません。今回使用したのは"drc-sim"と"drc-hostap"、それと"drc-wireshark"です。


以下の2つは海外での"libdrc"のセットアップ解説記事です。"libdrc"を使用するためにはPCとGamePadを接続する必要があるのですが、そのためにはまずはPCとWiiU本体を接続する必要があって…、というややこしいセットアップ方法を解説しています。というか、この2つぐらいしかめぼしい情報はなかったです。

libdrc WiiU Linux Setup with rt2800usb | Yet another tech focused Blog
https://rememberdontsearch.wordpress.com/2014/01/05/libdrc-wiiu-linux-setup-with-rt2800usb/
"libdrc"を使用するまでのネットワーク接続の方法などを解説。"libdrc"のWebページの解説は少し抽象的で詳細が分からないところがあるのでこのような具体的な作業が記載されているのは大変助かります。

ZDoom on a Wii U GamePad with a Raspberry?Pi / fuzzy notepad
https://eev.ee/blog/2015/11/28/zdoom-on-wii-u-gamepad-with-raspberry-pi/
"libdrc"を使用してRaspberryPIとGamePadを接続して、GamePadで"ZDOOM"というゲームをプレイさせようとしている、最終的にはあきらめている模様。「BSSIDってこっちなのかよ!」っていう自分と同じミスをしているので親近感が湧く。最後の方での設定は間違っているような気がするのですが…。


以下の2つはGamePadシミュレータである"drc-sim"の亜種です。どっちもPython。

GitHub - justjake/drc-sim-keyboard: control your Wii U with keyboard, mouse, and Xbox 360 controller
https://github.com/justjake/drc-sim-keyboard
"drc-sim"にキーボード操作を追加したものみたい。一応使い方も書いてある

GitHub - aboood40091/drc-sim: Turn your PC into a Wii U gamepad/controller!
https://github.com/aboood40091/drc-sim
もともと"drc-sim"はPython2で書かれていて、これはPython3に直したものみたい。

ちなみに所長はPythonで動かそうとしたけど慣れてなくて、よくわからなくて結局どうあがいても動かせなかったのは秘密です。

次→WiiU GamePadのエミュレーション(③使用ハードウェア)