LIST 35 ============================================================================ 00464/00464 NBD03033 ★長嶋★ パワーグローブの全体像の紹介 (19) 93/05/08 13:09 ★長嶋★です。 ファミコン用のパワーグローブの解析記事ですが、まずはイメージをつかんで いただくために、この装置を簡単にご紹介してみたいと思います。 テキスト画面で図を描きますので見にくいですが、ご勘弁ください。 実は僕はファミコンもゲームボーイもスーパーファミコンも持っていなくて、 ほとんどやったこともない人間なのでうろ覚えですが、旧ファミコンは以下の ようになっています(よね)。 +------------+ +----------+ | Controller |------+ | Cassette | +------------+ | +------------------+ +-----| | +------------+ +------------+ | FAMILY |15pin | | | Controller |------------| COMPUTER | <-----| Option I/O | +------------+ TV<--| | | | +------------------+ +------------+ 普通はファミコンについている2つのコントローラでゲームをするのですが、 ファミコン前面にもコネクタがあって、ここに差し込めるいろいろな周辺機器 があるようです。 昔のファミリーベーシックのためのフルキーボードなども、ここに挿したらしい です。 で、今回話題となっているパワーグローブは、この前面の15ピンコネクタに 差し込むことになっているものです。 ファミコンのコントローラのスキャン(走査・状態検出)は、スイッチごとに 信号ラインを用意するような贅沢な仕様にはなっていなくて、この前面コネクタ でも、クロックとストローブと1本のデータラインの、計3本の信号線と電源 しかありません。コネクタは15ピンですが、中身は5本です。(そこで、配線は 簡単でいいのですが、エミュレーションするには、ちょっと工夫がいります。) ソフトウェア的には、パワーグローブは完全に外部接続のコントローラと等価 です。つまりファミコンソフトにすれば、そこにつながれた装置が何であれ、 十字ボタンとABボタン(あと、スタートとセレクト)の状態を見に行くと 状態を返してくれるので、普通のコントローラとしてゲームソフトが走る ようになっています。 このために、パワーグローブ内には専用のマイコンがあって、センサの状態と グローブにもある十字スイッチやABボタンの状態を全部まとめて、ファミコン から要求があるたびに「普通のコントローラのように」送り返す、という処理を しています。普通のコントローラでは、シフトレジスタのICが1個あるだけで、 単純にデータが返されるのです。 つまり、パワーグローブはファミコンをうまく騙している、というわけです。 今回僕が作ったのは、このパワーグローブを「ファミコンのように叩いて」、 パワーグローブがファミコンから要求されたと思ってデータを返す、それを もらってMIDIに変えて出力するようにしたものです。 ですからファミコンは不要ですし、ゲームソフトも不要です。 まあ、「狐と狸の化かし合い」というところでしょうか(^_^;)。 パワーグローブの全体構成としては、以下のようになっています。 ===--------------+ 9pin +--------+ ====| @ |--------> | Box |-----------> to FAMICOM =====| @ + A B | | | 15pin ====|--||---------+ +--------+ connector ====+ | | +----+ 3 lines +-----+ | | 1 |------------| 2 | | +----+ +--+ | | | | | +--+ | | | 6 lines | | | | 7 lines +----+ | | 3 |----- +----+ ファミコンの15ピンコネクタにつながるケーブルはまず、タバコ箱大のBoxに 直接(コネクタなしで)つながっています。 ここからは、同様に直接ケーブルが出ていて、TVに取り付ける3つの 超音波センサBox(3−2−1)につながっています。 そしてこのBoxには別の9ピンコネクタがあって、ここにグローブ部分からの ケーブルのコネクタを挿すようになっています。 そこで今回の改造では、このBoxをバラして、グローブからの9ピンコネクタ のついた基板をそのまま使って、ここにマイコンボードを入れた箱として 装置を作りました。 ここには、表示用のLEDを並べて、さらにMIDI出力コネクタもついています。 ACアダプタもこの箱につなぎますから、ファミコンに行くためのケーブルは 不要となりました。 パワーグローブの動作としては、グローブ部分に内蔵されたマイコンが全体の 処理を実行しています。 手の甲の部分に、水平に並んだ2つの超音波振動子があって、たぶん左右に 時間差をもって超音波を出します。実際には、ビートなのか、ジリジリと 音が聴こえています。 これを、1−2−3の3つの超音波センサBoxによって検出します。これは 上図のような位置関係で、14インチテレビの3隅に両面テープで固定する ようになっています。僕は実際には、これを一辺1.5mほどに延長しましたが、 感度は大丈夫です。 2のBoxには、ABボタンと十字ボタンの位置に相当するLEDがついていて、 「いまパワーグローブがどの信号を出しているか」、つまり基準ポインティング のための情報を表示しています。これを見て、かなり頻繁に「センタリング」、 つまり「ここが指示空間の中央だよ」とパワーグローブに教えるための、センター ボタンも手の甲にあります。 このLEDを表示させる情報は、わざわざそのために発生しているのでなく、 ファミコンに返されるデータをそのまま表示していました。そこで、解析は この1−2−3のBoxをバラしてオシロを当てることから始まりました。 図に描いたように、1から2につながっているケーブルの中身は、信号線が 3本しかありません。2本は電源(+5V)とGNDですから、あとの1本は超音波センサ の出力そのままということになります。各センサの出力はそれぞれ、多重化 されずにグローブ内のCPUにいきます。 2から3にいくケーブルでは、センサが1本増えて、さらに6個のLEDを表示する ために、クロックとデータラインの2本が増えて6本となります。 当然、2のBoxの中にはシフトレジスタがあって、このシリアルデータをラッチ してLED表示しています。 そして3のBoxでもう1本のセンサ信号が加わって、ここから7本の信号ライン としてコントロールBoxに行っていました。 なお、パワーグローブは電源ラインを供給しただけでは、ファミコンからの 読み出しクロックが来ないために、超音波も出さないし、センサの検出も しないようです。CPUは当然ながら自分のクロックを持っていますが、センサ 検出の処理はファミコンからのクロックによって動作させているようでした。 そこでダミーでいろいろなスキャンクロックを与えてみると、通常のファミコン ではおそらく1msec程度よりも周期が長いらしく、それよりも頻繁にデータを 要求しても、十分にデータを返送できない、ロックしたような状態になりました。 だいたい5msecとか10msecとかのオーダでスキャンしてやると、けなげにデータ を返してくれました。 ...というところで、今回は「パワーグローブってどんなもの?」でした。 ============================================================================ 00491/00491 NBD03033 ★長嶋★ 本論の周辺ばかりですいませんが (19) 93/06/13 00:45 ★長嶋★です。 ◆そういえば、ファミコンもってないようなこと書かれてました ◆けど、どうやって電源ピンを当てたのでしょうか?クロックについても書かれて ◆ましたが、こんなもん実機なしでどうやって見つけたのでしょうか? 内部の信号線のカラーについては、メイドインチャイナということもあるし、 ロットによって違う可能性もあるので、記事にしても信頼性は保証できませんけど。 あくまで、僕の手元のものはそうなっている、という条件がつきます。 それからファミコンはもっていませんが、電源ピンはケースを開けて、ICの基板 パターンを追って、テスタで確かめればすぐわかります。 クロックとデータはなかなかのクイズでしたが、ファミコンのコントローラは 中にシフトレジスタの164が1個入っているだけ、というのは常識ですから (多くの解析本に書いてありますよね)、クロックとストローブとデータの 3本の信号しかありません。 そこで、超音波の受信ボックスを開けて、スイッチ出力と同じ状態を表示して いるLEDボックスの164からテスタで追って、判明しました。 つまり信号としては、グローブ内蔵のCPUがファミコンに返している信号を、 LEDボックスは横取りして表示していたわけです。なかなかやります。(^_^) ここまでの解析は、テスタしか使っていません。 そのクロック周波数ですが、まあファミコンのCPUクロックは2MHzぐらい ですから、どんなにソフトが頻繁にアクセスしてもこれくらいだろう、という 目算だけです。(^_^;) 実際には秋月ボードだと、その数倍から10倍ほどの頻度でアクセスできるので、 いろいろ試してみましたが、けっこう条件はファジイでした。 あまり速いと、さすがにパワーグローブのCPUがデータを返せない(おそらく、 データのスキャンが間に合わない)ためか、ウンともスンとも言わなくなります。 そしてもっとレートを下げると、ちゃんと返してきます。 もっともっと遅くするとどうなるのか知りませんが、電源だけでクロックを 与えないと、不審に思うのか(^_^;)、止まってしまいます。(^_^) ◆やっぱりCPUをつかったのですか。CPUを使うのでしたらいろいろなことが ◆できそうですね。 ◆でもCPUをつかうと大掛かりになりそうなので(もっとも8748を使うつもり ◆でしたが。Z80の方が楽かな?)、どうしたものかと思ってました。 パソコンでなにかをする、という人は、もちろんパソコンにつないでもできます。 ただ、パワーグローブをセンサとして使う、というだけのために、わざわざ パソコンを1台使う、というのは、僕にとっては、もったいない話だと思います。 名刺サイズの(秋月ボードはその2/3ほど)CPUカードで十分だと思うのです。 時間があったら、今度の改造では、ワイヤレス送信にして、さらにポータブル にしたいと思っています。ここにいちいちパソコンがぶら下がっていては、 どこにも持っていけませんよね。(^_^;) 8748でもなんでも、使い慣れたCPUでいいと思いますよ。 仕掛けはとっても簡単ですから。 プログラムにしても、ICEを使わずに、フローチャートもなにもナシで、 いきなりエディタで書いてアセンブルして、RAMエミュレータに転送して 「せーの」でリセットして、動いたらラッキー!という作り方でした。 ソフトはごくごく小さいものです。開発期間は1時間ぐらいかな。(^_^;) ============================================================================ 00579/00579 NBD03033 ★長嶋★ パワーグローブ改造希望者は何人いるのかな (19) 93/10/21 08:03 ★長嶋★です。 ◆2週間前にパワーグローブを3つも手にいれましたが、なんともちゃちいものなん ◆ですね。ファミコン用=おもちゃなのだから仕方ありませんか?見るところ、超音波 ◆で、センシングするようで赤外線でないのがなんともいえない虚脱感を与えてくれま ◆したが、実際には超音波のほうがいいんですか? 超音波であることは、耳をすましてみるとわかります。 超音波のはずなのに、「ジーッ」と聴こえます。(^_^;;) 赤外線よりもコストが安いのと、バースト状にパルス化して時間差を検出する のに、回路が簡単なのでしょうね。 そして最大の理由は、角度の指向性がキツくないところだと思います。 僕が最初に改造したグローブでは、14インチ程度のテレビをL字型に囲む 3個の超音波受信センサを結ぶケーブルを、切って延長して、1辺を1.5メートル ほどに大きくしていますが、ちゃんとセンシングしてくれます。 センサは、この送信左右2個、受信3個の超音波と、あとはグローブの指の曲がり を検出する歪ゲージ(といっても感圧プラスチック板)の2種類ですね。 どうも小指は入っていないらしくて、親指から薬指までの4本を、それぞれ 検出しています。 2台目に改造したワイヤレス版(実はまだ未完成)では、この指曲がりセンサ の情報を直接取り出してA/D変換しました。 結構、抵抗値は大きく変化した記憶があります。2倍以上あったかな。 ◆どうして、わたしに「パワーグローブMIDIコントローラー」に必然性があるかとい ◆えば、前々からミュージカルに出ていたりするもので、歌やダンスの下手なわたし ◆には、当然コンピューターの助けが必要なのです。 うーーーーむ。 これは改造とは別の問題として、なかなか厳しいですよ。 なんせパワーグローブは、   ・精度が悪い   ・レスポンスがやや悪い   ・ノイズ対策でデータを積分している関係で、センタリングを頻繁にして    やらないといけない   ・A/Dトリミングのために、頻繁に「にぎにぎ」をしないといけない などの問題点があります。 一言で言えば、「つかえねぇー」(^_^;)のです。 でなければ、定価15000円のものを300円で山積みにして売っているワケが ないでしょう。(^_^;) ですから、「そんな程度」と最初から割り切って、逆に言えば「できたものを なんとか使えるように、使い方の方を考える」というアプローチでないと、 ちょっと難しいと思います。 僕の作品でも、細かなコントロールはあきらめて、トリガ出しにしか使わない とか、他のセンサの補助として、といった使い方の限定しています。 ということで、まずはファミコンの普通のゲームのコントローラとして、グローブ を試しに使ってみて下さい。 いろいろなボタンとか連射キャンセルボタンなど、基本的な使い方はどうせ必要 になりますから。 その上で、「こんなもんだ」という事実認識をしてから、取り掛かったほうが いいと思います。 過剰な期待は絶対に禁物です。 なんせ、定価15000円が300円なのですから。理由がある筈でしょう。(^_^;) まずは、グローブからケーブルでつながっている「箱」を開けて、中の配線の 「色」をチェックしてみて下さい。 以前に僕が書いた記事で、色まであったかどうかわかりませんが、同じ色の コードであれば、話は簡単です。 もしロットによって配線が違うと、オシロで調べるとか、大変になります。 まず最初の改造としては、グローブ自体をバラさずに、 「ファミコンに代わってグローブを騙す」 というマシンを作りましょう。 それから、秋葉原の秋月電子通商の「AKI-80」ボードを入手して、キットを 完成して下さい。 このボードについては、トランジスタ技術の10月号に、MIDIマージャを 作った僕の製作記事がありますから、参考にして下さい。 ============================================================================ 00586/00586 NBD03033 ★長嶋★ パワーグローブ解析情報 つづき (19) 93/10/29 22:05 ★長嶋★です。 前回の記事では抜けていましたが、この「Box」からファミコンに行っている 15ピンコネクタは、実は5本しか線がない筈です。 これが、 ・「赤」---電源(+5V) ・「茶」---グランド ・「黄」---データライン(Box→ファミコン) ・「緑」---クロック(ファミコン→Box) ・「橙」---トリガパルス(ファミコン→Box) という配置になっていれば、僕のグローブと同じロットである確率が高く、 改造もうまく行く確率が高いというわけです。 バラしたのでしたら、チェックしてみて下さい。 ...ところで、上の情報は解析したときのノートに書いていたのですが、改造した 「MIDIパワーグローブ」については、回路図もなにもなくて、アドリブで ダイレクトに作っていたことが判明しました。(^_^;) トラ技の記事でもそうでしたが、あの程度の回路は何も書かずに考えながらハンダ 付けしていくと出来てしまって、そのまま勢いでCPUボードのソフトまで書いて 完成させると、あとで何がなんだかわからない(^_^;)ということになります。 やっていることは、上の5本の信号のうち電源はCPUボードと共通で、あとは 秋月のCPUボードから2本の信号出力を「緑」「橙」に与えてソフト的に クロックを作り、1本の「黄」入力を判定してパワーグローブがファミコンに 送っているつもりの情報を獲得したのです。 タイミングだけ調整しましたが、このCPUプログラムはほんのちょっとの ものです。ソースが残っていましたが、親指と人差指をそれぞれのON/OFFスイッチ に使用して、グローブの上下でボリュームを、左右でパンポットを送りつつ パネルに十字に並べたLED群を点滅させる、というプログラムで、I/Oの定義や マクロ定義まで全部を含めて482行でした。 再アセンブルしてみたら、512バイトの定数テーブルを含めて1848バイトの プログラムサイズでした。実体は1Kバイト程度のものです。(^_^;) ということで、秋月CPUボードの実験に進んで下さい。 ============================================================================