いまさら連射回路とPIC

| コメント(5)

fami01.jpg

物置のガラクタを整理していたらファミコンが出てきた。以前ハードオフでジャンクで購入してビデオ出力端子増設改造を施したものだ。カセットもカミさんのと合わせて30本以上発掘した。

fami03.jpg
発掘したファミコンソフト。コナミソフトはカミさんの所有。

思い出せば1984年の冬、当時JR-100ユーザーだった自分はゼビウスとMAPPYをプレイしたくて初めてファミコンを手に入れたのだった。あの頃ゼビウスはゲームセンターで大ヒットしていて、各メーカーのPCにも移植されまくっていた。自己資金の届く範囲では、PC-6001のタイニーゼビウスもあったが、安価なファミコンで絵の綺麗なゼビウスがプレイできるとなれば、ファミコンを選ぶのは必然だった。

近所のショッピングセンターで本体を購入するも目当てのゼビウス、MAPPYは売り切れ。仕方なくギャラクシアンを買ったものの、すぐに飽きてしまった。田舎には一向に入荷の気配が無かったが、親と上京した際にデパートのおもちゃ売り場でゼビウス、MAPPYともに発見して大興奮。あわてて親にお金を借りて捕獲したのだった。定価売りで、ゼビウスが4900円、MAPPYが4500円と、ソフト1本3800円が相場の当時としては高額だった。

その後、なぜかゼビウスの自機のスプライトの色がおかしくなる故障が発覚し、本体を修理に出したら1ヵ月後くらいに新品になって帰ってきたり(PPUの不良か?)、伝説的クソゲー「バンゲリングベイ」を友達と一緒に掴まされたり、シューティング「スターフォース」にハマったりした。結局購入したソフトは、ギャラクシアン、ゼビウス、マッピー、ギャラガ、バンゲリングベイ、麻雀(2人打ち)、フォーメーションZ、スターフォースの8本だった。

fami02.jpg
当時所有していたソフトはいずれも再入手している(麻雀は製品版じゃないけど)

1985年の9月にはスーパーマリオが発売になるのだが、自分はその直前にファミコンを手放してしまった。理由は高校受験を控えていたことと、自転車の購入資金を得るためだった。友達からはスーパーマリオで遊ぶ前にファミコンやめるなんてバカだと言われたが、今思えばドツボにハマる前に辞められて正解だったような気もする。高校に入ってからはMSXに流れたので、結局ファミコンユーザーだった時期は1年も無かったことになる。

今回久しぶりにゼビウスをプレイしてみたのだが、昔はせいぜいAREA10止まりだったのがAREA16まで行けた。ただ、連射の無いノーマルPADでは正直キツい。あの頃は高橋名人の16連射に代表されるように高速連射がゲームが上手い奴の「ステータス」みたいなものであったが、連射なんぞは機械に任せて弾除けと地上物の撃破に集中したい。そこでファミコンにアタリ仕様のジョイスティックポートを増設することにした。

手持ちのジョイスティック「XE-1 ST2(連射機能なし)」でも使えるように手始めに連射回路を作成することにした。連射回路といえば昔はタイマーIC555で組むのが一般的だった。自分もMSXのジョイスティックの製作で経験もあるのだが、1チップマイコンを使えばプログラムで融通が利く上に外付け回路も少なくて済むので、PICの勉強も兼ねてやってみた。

使用するPICは「12F509」。昔PSのMODチップでよく使われていた12C509Aのフラッシュメモリ版で、何度も書き換え可能。このPICは内蔵オシレータで4MHz動作可能で、その場合入出力ピンが6本も使える。プログラミング言語は機械語。いまどきの高級言語はよく分からないが、MSXでZ80アセンブラを経験しているので、すんなり理解できた。ゼロから作るよりは物真似から入るのが近道ということで、こちらのサイトに掲載されているアセンブラのソースを参考にプログラミングしてみた(部分的にパクらせていただきました)。

プログラムの仕様としては、連射は秒間10/20連射の2段階として入力ピン2本で連射on/off、低速・高速の切り替え。トリガAとトリガBの2ボタン対応だが連射速度はAB共通。アタリ仕様のジョイスティックに接続する外付け回路のような使い方を想定している。

出来上がったプログラムのソースはこちら picrensya.asm

回路図はこちら。

renkai.BMP

ren02.jpg

プログラムを秋月のPICライターで書き込んで、ブレッドボードに回路を組み立てた。連射on/offスイッチと連射速度スイッチはまとめて6pの中点OFFスイッチを使うと市販の連射PADのように、スイッチ左で連射off、真ん中で低速、右で高速連射といった具合に使うことができる。

ren01.jpg

LEDで動作を確認しながら波形をオシロで見てみた。10Hzや20HzでLEDが点滅する様子は肉眼でも識別可能だった。逆にオシロは低周波すぎて観測が難しかったが(うまく撮影できない)、ほぼプログラム通りに低速時10Hz、高速時20Hz(5Vp-p)の矩形波のパルスが出力されていた。

次回は74HC165を用いて、アタリ仕様のPADをファミコンに接続するための改造を行う予定。

コメント(5)

僕もファミコンでMSXのコントローラーを使う変換端子作りましたよ アスキースティックL5の基盤にスタートとセレクトのボタンと 操縦桿がたコントローラーの配置のためのA・Bボタン入れ替えスイッチ そしてアタリ仕様の9Pとついでにネオジオ規格も対応に15ピンを 取り付けたのを箱に入れて使っていす。 便利です。
偶然ですね。実はアスキースティックL5、先週ハードオフで見かけたので315円で買いました。コントローラとしては難ありですが、部品取りとしては良質ですね。入手が難しいファミコン拡張端子コネクタとプルアップ集合抵抗付きの4021も採れますし。これが手に入ったので当初は本体を改造するつもりでしたが、連射機能つき変換アダプタを作成する方向へ転換しました。基板を切り出して小型ケースにブチ込んで作成中です。この中にPIC連射回路を入れますが、プログラムで入出力ピンを4021のアサインに合わせて変更し、PICも安価で内部プルアップが可能な12F629に変えました。これ使うとICの裏側に直接PIC貼り付けられて、外付け部品はスイッチのみ。配線数も少なく手軽に改造できます。一応次の記事で新しいバージョンをアップします。
僕が良く使う連射回路はボタンのマイナスに繋がるほうに繋いで 連射する回路なので外付けタイプの連射アダプターは作りたいが PICの知識や機材が無く断念した。 でもセガマークⅢの連射アダプターの配線を変えてたのをアスキースティックL5を使ったアタリ仕様変換機に繋いで使っています。 デモ今思ったがスーファミ用のアスキースティックL5をファミコン用に変換したら連射付きアダプターになることをでもいいや
はじめまして。連射関係の検索をしていて到着しました。 2000年後半からビデオゲームにおける連射装置の調査研究を続けており、単に回路の性能云々だけでなく、体感的にも使いやすいかどうかとか、またサイト調査、文献調査、ゲーセン(現地)調査なども行っております。 たまにですが造詣を深めるために家庭用機の連射コントローラーを触ることもあります。 ファミコンの連射に関してはセガサターンのバーチャスティックを流用してシンクロ連射回路を組み込んでみたり、ジョイカードMKⅡの抵抗とコンデンサを別の値のものに交換して連射速度をあげるといったことも実施した経験があります。 ビデオゲームでは555やインバータを3個使った連射回路、アナログフィルタやLM1881Nを使ったシンクロ連射回路に加え、オレコマンダーを装着して調査してみたりもしました。 PICは気になりながらも未経験であることから今回拝見して非常に関心をもった次第です。まだ少し先になりますが、いずれPICでビデオゲーム用に連射回路を作って調査を行っていきたいと思っております。 ありがとうございました。 (おぉっ!!ひょっとして画像のオシロはOS-5020では?)
PICプログラミングは初期設定などの決まり事が判りにくくて、これがPICによって微妙に異なるのが鬼門ですが、ここがクリアできればプログラム自体は結構簡単でした。アナログ回路に比べると外付け回路が非常に少ないのが魅力ですね。内部プルアップできるPICを使えばプルアップ抵抗すら不要になります。「いまさらファミコンジョイスティック」/mt/2011/01/post-83.html の記事も参考にして是非チャレンジしてみてください。ちなみにオシロはご推察の通りOS-5020です。10年位前に秋月で買いました。図体がデカいので必要な時だけ物置から引っ張り出して使っています。

コメントする

にがHP(母屋)

このブログ記事について

このページは、にがが2010年12月 4日 00:02に書いたブログ記事です。

ひとつ前のブログ記事は「いまさらMIDIとSSD」です。

次のブログ記事は「いまさらファミコンジョイスティック」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 5.04