ラベル ファミコン の投稿を表示しています。 すべての投稿を表示
ラベル ファミコン の投稿を表示しています。 すべての投稿を表示

2012年2月28日火曜日

PICでファミコンを操作する(2コン対応) その2

複数のwiiリモコン検出時のINQUIRY COMMANDの応答ですが、勘違いしていました。
私は、INQUIRY_RESULT の応答としてこんな感じを想定していました。
HCI_CMD_INQUIRY_RESULT: 02 受信データサイズ 02 BTアドレス1 BTアドレス2 

ただ調べてみると、INQUIRY_RESULT が機器の数だけ返ってくるらしい、ということが分かりました。
確かに、各機器はお互いの状況を知らないので、誰かがとりまとめをしないと上記のような結果は得られないはずです(そしてその役割がINQUIRY COMMANDの発行側...)。

 ということで、見つけたい機器の数だけINQUIRY COMMAND~INQUIRY_RESULTの受信までを繰り返してみました。 するとこんな感じで、wiiリモコンを複数見つけることが出来ました。
HCI_CMD_INQUIRY_RESULT: 02 0F 01 BTアドレス1
HCI_CMD_INQUIRY_RESULT: 02 0F 01 BTアドレス2

2コン対応、いけそうです。

2012年2月27日月曜日

PICでファミコンを操作する(2コン対応) その1

wiiリモコンで、ファミコンの操作ができるようになりました。 ただ1つのwillリモコンしか対応していないため、2つ目のwiiリモコンも接続できるようにします。 bluetoothの機器の探索で、2個見つけられれば良いはず...と考えてソース(main.c)を見ると以下の部分が該当しそうです。
case HCI_CMD_INQUIRY:
  //Inquiry (search bluetooth dongles around you)
  buf1[0]=0x01;
  buf1[1]=0x04;
  buf1[2]=0x05;
  buf1[3]=0x33;
  buf1[4]=0x8b;
  buf1[5]=0x9e;
  buf1[6]=0x05;//waiting time (5 * 1.28 sec)
//org  buf1[7]=0x01;//if there are bluetooth devices around you, you should give a maximum number here. 
  buf1[7]=0x02;//if there are bluetooth devices around you, you should give a maximum number here. 
  data_size=8;
  DemoState = BT_STATE_WRITE_CLASS;
  HciState = HCI_CMD_INQUIRY_RESULT;
  break;
INQUERYの最後の1byteで探索する機器の数を指定できるので、探索機器数を1→2にしてみました。 wiiリモコンを2つ用意して、認識させてみると...INQUIRY RESULT EVENTで返ってくる機器数は1のままでした。 他にまだ対応すべきところがあるんでしょうね、残念。

2012年2月21日火曜日

PICでファミコンを操作する その3

ずっと更新していませんでしたが、wiiリモコンとBluetoothドングル+PIC24FJGB002で通信し、ファミコンの操作をした際の動画をアップしました。

Playing NES(not emulator) with Wii Remote(ファミコンをWiiリモコンで遊ぶ)

この環境のベースとしては、辻見さんが公開している以下のベージを参考にさせて頂きました。ありがとうございます。
PIC
bluetooth-HID応用例(wiiリモコン)
ソース等は別途公開します。 ソースは以下より取得ください。 https://github.com/tocchi02/NES-Wiimote

2011年12月18日日曜日

PICでファミコンを操作する その2

4021を使わないバージョンは、いったん諦めました(ちょっと負けた気分...)。

そうなると一気に敷居は下がり、PIC24FJGB002+bluetoothドングルをファミコンと接続し、wiiリモコンの環境で、ファミコンを操作することが出来るようになりました!

wiiリモコンで本物のファミコンを操作する...
とりあえずやってみましたが、やっぱりコードが無いというのは自由でいい感じですね。

今後はⅡコンが使用できるように拡張する予定です。
ただ4021を使わないことにしたので、使用するポート数が一気に増えてしまいました。PIC24FJGB002 ではポート数が足らず、Ⅱコンへの拡張ができません。

対策としては、以下が考えられます。
・案1. ポート数の多いPIC24FJ64B004を使う
・案2. I2C接続等で制御できる、GPIOを拡張するICを使う(MCP23017など)

案1は何も問題ないと思います。(ちょっと高いPICマイコンを使うことになってしまいますが)
案2は、間にICをはさむ分、反応が遅くなるはずですが、人にわかるレベルなのかがよく分かりません。

2011年11月3日木曜日

PICでファミコンを操作する その1


PICでファミコンのコントローラーを操作します。
以前のbluetoothドングルをPIC24JF64GB002で使用するやつのと組み合わせれば...

ということで、とりあえずコントローラーのコードを切断し、つないでみました。本当にケーブルを途中で切断しつないだだけです。

本来のコントローラは、4021というパラレル⇒シリアル変換ICを経由して各ボタンのOn/Off状態をシリアルの信号として出力します。
今回はその4021の出力信号をPICでエミュレーションすることを考えてこのように接続したのですが...

信号のP/Sが、本当は16クロック毎にHIになるはずなのですが、3クロック毎にHIになっている様になっているようにPICからは見えます(状態変化割り込みで確認)。
でもPICから適当にQ8の信号を出してみると、SELECTボタンに反応が!ということは3クロック毎にP/SがHIになっている?というのはウソですね...

PICの処理速度が間に合わないのか?
ロジアナか、オシロで波形を確認したいです。