ばかおもちゃ本店:Youtube twitter:@sashimizakana Amazon.co.jpアソシエイト

2017年2月22日水曜日

ファミコンのコントローラーをPCで利用してみる

前回書いたけど、ファミコンを分解した。
これはファミコンのガワを使ったおもちゃを作るつもりだからなのだけど、コントローラーを制御することがごく簡単そうだったので、先にやってみた。ファミコンのコントローラーは基盤にソケットで刺さっていて用意に抜くことが出来る。ブーツ(線の出て来るところのカバーみたいなやつ)もスライドするだけで簡単に取り出せて、2つに別れる。本当にバラしやすくて組み立てしやすく可愛い機械だと思う。

うちには子供のころファミコンは無くて(代わりにパソコンがいっぱいあった)、憧れていたバイアスもあるのかもしれないけど、赤と白、赤と金という色の組み合わせも洗練されているし、デザイン的にはスーパーファミコンよりファミコンのほうが断然好きだと小さいときから思っている。

さて、コントローラーの制御の話。

ファミコンのコントローラーのボタンはHEF4021BPというシフトレジスタに接続されていて、シフトレジスタの一部のピンがケーブルから出ている。出ているケーブルのピンアサインは以下のサイトに詳細に書かれてあり非常に助かった。

新貴之の趣味のサイト 最終形態

これさえわかれば、あとはマイコンなどでシフトレジスタからボタンの状態を読んで、PC側に伝えてやればよいので、簡単である。



シフトレジスタというのは、いくつかの種類といくつかの用途があるようだが、ここでは複数のボタンの並列(パラレル)の入力を、一本の線からの直列(シリアル)なデータとして受け取るための変換ICとして使われている。ちなみにこの逆に直列のデータを並列として出力するというものもある。それらはマイコンのGPIO(入出力)を増やすために使われたりする。つまりシリアルをパラレルにする場合、一本の出力線で複数のLEDを制御したりできるし、パラレルをシリアルにする場合、複数のボタン入力を一本の線から受け取ったりできる。

どちらの場合も制御は簡単で、ICの機能ごとに微妙な差異はあるっぽいが、信号線からデータを読むか書くかして、次のデータに映るためにクロックピンをL→Hとすれば良い。

このチップの場合は最初にP/Sと表記してあるピンをH→Lとしなくてはならない。これで入力値がシフトレジスタ内に取り込まれる。注意すべきなのは、最初のビットはその時点で既に出力されるので、クロックを送る前に読まなくてはならない。そしたらあとは上記のとおりのこり7bit分を順次読み込めば良い。

どのボタンがどのビットに対応しているかわかれば、そこから先は好きに使えば良い。私はキーボードやマウス制御が利用できるpro micro互換機を使って、微妙にボタンが足りないDOOM用コントローラーを作った。それが冒頭の映像である。基本的には十字キーをWASDに割り振っているが、Bボタンを押している間だけ十字キーがマウスの移動になるようにしてある。

武器の切り替え等のキーが足りておらず、単体でゲームを楽しむにはやや非力だが、ちょっとだけ楽しい。




ニンテンドークラシックミニ ファミリーコンピュータ
任天堂 (2016-11-10)
売り上げランキング: 48

2017年2月20日月曜日

雑に雑に雑に作る

今日読んだ記事。

とにかく雑に作れ – 東京工業大学エンジニアリングデザインプロジェクト – Medium

本当に素晴らしい記事だと思う。
良く手が覚えているとか、手が勝手に動くということを言うけど、物を作るというのは本当にそういう部分がある。もちろん人それぞれ向かい方はあるかと思うけど、私の場合は完全にそれだ。絵も、小説も、ブログも、プログラムも、とにかく作ってみようというところから始まる。手を動かすためには、できるだけ、何々でなければならない、というところがない方が良い。上手くなければ、ちゃんとしていなければ、格好良くなくては、そういうあらゆることが作業を邪魔する。だから雑で良い。どうしてもちゃんとしている必要がある場合は、雑に作ったあとで、全部やり直せば良いのだ。

特に、まだ物を作るということに馴染みがない人には、ものすごく重要なことだと思う。創作に取り組み始めようとする多くの人が、全然取り組まないうちにやめてしまうのを見てきた。下手すると、何一つやらないうちに、始めようとした創作への取り組みを辞めてしまう人すら珍しくない。それは何故かと考えてみると、もちろん上手く出来ないとか、そういうこともあるのだろうけど、そもそも作業そのものが手につかないのだと思う。最初は下手なのは当然なのだから、とにかく作るべきだよ、とそういうときに言ってみても、通じた試しがない。むしろ、積極的に雑に作れ、と言うべきだったのだと上記の記事を読んで思った。作業が手に馴染んで来たら、やっとそこからどうやって物を作るか考えることができる。そうでないうちは、あまりに考えることも勉強することも多くて、上手くやることなど無理に近い。

自分も物を作るときに、ついついクオリティ側に傾いていって、面倒くさくなりがちで、しばしば雑でも良い、下手でも良いと自分に言い聞かせるところがある。しかしまだ甘かったな、と自ら思った。積極的に雑で、下手に作るべきですらあったのだ。なにせ私はいつでも沢山私の作品がほしいし、私の作品が雑だったって誰も気にしない。私すら気にしないのだから。

2017年2月10日金曜日

ファミコンは分解しやすかった

ファミコンで何かしようと思ってジャンクをヤフオクで落札した。


予想通り動作はしなかったが、思ったより美品だ。
時間をかけて漂白などする準備もしていたが、必要ないだろう。これにラズベリーパイを仕込んで、コントローラーなどもGPIOなどにつないでしまおうと思っている。とりあえず作業の計画を立てるためにバラしてみると、これが非常に分解がしやすくてよかった。
裏面のネジも基盤を固定してあるものもすべて同じネジで安心できるし、最近のゲーム機のように爪などでカバーがひっかけてあることもない。ネジを外せばぱっかりと開く。中身は余裕を持たせて作ってあり改造の余地は十分にあり、電源もケーブルが直接出ているので、簡単に横取りできそうだ。他に古いものを開けた経験というのはあまりないのだけど、昔の機械はシンプルで良かった、ということなのかもしれない。


コントローラーも大変シンプルで、各ボタンがシフトレジスタにつながっていて、必要な線だけがコネクタにつながっている。すべてはきっちり色分けされていて、その情報も少し調べるとネット上で見つけることが出来た。

とりあえず単体でテストしてみて、簡単に入力が拾えそうなら、もっとジャンクを買ってコントローラーを手に入れておきたいという欲求も出てきた。頑丈だし、みんなが知ってるし、良いデザインだし、適度なボタン数だし、電子工作のコントローラーにはもってこいではないだろうか。


ニンテンドークラシックミニ ファミリーコンピュータ
任天堂 (2016-11-10)
売り上げランキング: 26
これではない。

2017年2月9日木曜日

Rasbian Jessie with PIXEL January 2017入れたらSSHで接続できなかった

ちょっと使うことがあったので、RaspberryPi 2 Model Bを引っ張り出して、新しいRaspbian Jessieのイメージを焼いたら、SSHで接続できなかった。これは単純に初期状態でSSHが無効化されるようになったためなので、焼いたあとのSDカードのドライブ直下にsshっていうファイルを作っておくと、有効化される。でもやっぱ接続できない。
さっきまではconnection refusedだったのがconnection resetに変わった。
/var/log/auth.log見るとssh_host_*のformatがおかしいっていうようなログが残っていて、/etc/ssh見るとssh_host_*が全部0byteで空になってる。そういうもんなのか、何か手順を間違えたのかわからないけど、とにかく再設定する。

$ sudo dpkg-reconfigure openssh-server

で、ちゃんと鍵が生成され直して、接続できるようになった。