にがMSX

〜JR-100用ジョイスティックインターフェイスの製作〜


National Personal Computer

JR-100

 前回MSXを利用してSTAR FIREを実機でプレイするところまで成功。しかし、実機の消しゴムキーボードは劣化しており、極めて操作性が悪かった。接点の問題を克服してもキーボードでの8方向移動はやはり困難だろう。

STAR FIREはジョイスティックに対応しているらしいので、是非ともMSXのジョイスティックでプレイしてみたい。仕様が分かればインターフェイスを自作することは出来るはず。JR-100エミュレータのけむしろう氏のサイトのコメント欄に、まりすさんという方がジョイスティックインターフェイスの情報を記していたので製作してみることにした。


回路図

クリックで元画像表示

 まりすさんの情報によると、ジョイスティックIOは$CC02にあり、データはD0=右、D1=左、D2=上、D3=下、D4=トリガボタン、D5=Hレベル固定とのこと。正論理なので、スイッチが入った状態を=Hレベルで表現する。

$CC02のメモリマップドIOは16ビットアドレスなので、8ビットのMSXと比べるとちょっと面倒だが、手法としてはこれまでMSXのIOデバイスの増設でやってきたことと同じ。適当なゲートと74HC138でデコードした。

動作としては、$CC02の読み込みが発生した時だけジョイスティックのデータを吐き出すようにする。MSX用のジョイスティックは負論理が基本なので、論理を反転して出力する3-state bufferを使うのが適切と思われ、74HC366をチョイス。

Enriさんのサイトで公開されている、JR-100外部バスのピンアサインの情報に基づき、回路図を書き出してみた。たかがジョイスティックインターフェイスだが、本体から電源供給が受けられないので外部電源は必要だし、ロジックICが4つも必要となる。

カードエッジコネクタ

 JR-100の外部バスのコネクタは2.54mmピッチ50pカードエッジで、MSXのゲームカートリッジと同じ形状のもの。嵌合するコネクタは今でもM.A.D.さんの通販などで手に入るが、地球に優しい(つもりの)当サイトでは敢えて廃品を利用した。

部品取りに使ったのは、初代Pentium世代のFMVのマザーボード。この基板からはEEPROMやA1FXに使ったメモリやSOPのロジックIC,チップ抵抗など多数の部品を収穫している。部品が足りなくなったときにこういう古い基板があると何かと便利だったりする。

コネクタの引っこ抜きはスルーホール基板なので面倒ではあるが、頑張れば普通の30W半田ごてシュッポン吸い取り機で抜き取れる(実際その装備で抜いた)。ISAバスの長い方だけ使うので、境目のところを予め切っておくとラク。、とにかく本数が多いので根気は要る

MSXでも使える

 ISAバスの長い方は62pなので、53-54pのところで切り詰めて、端っこの51-52pは端子を抜き取ってプラ板で埋めてみた。こうすると、MSX用のカートリッジがピタっと嵌る。ただし、JR-100のカードエッジはMSXより僅かに幅広でプラ板があると嵌らないため、除去してしまった。

まあ、部品取りは面倒くさいし新品買っても500円程度なので、普通の人は普通に新品を買った方がよいと思う。ちなみに画像は「MSX英和辞典」の基板を改造して作成した似非ROM。電子部品通販M.A.D.さんで販売しているフラッシュROM変換基板MDT32Aを使っている。

製作開始

 部品をカードエッジコネクタの反対側に実装するため、ユニバーサル基板は秋月のスルーホールB基板とした。電源とDサブ9pコネクタはDIP化基板を利用。Dサブコネクタは6角スペーサーを使ってグラつかないようにガッチリとネジ止めした。

ロジックICはこちらのサイトから頒布して頂いた。個人的な販売とのことだが、多数のロジックICがあり、お値段も大変お安いので有り難い。

完成

 出来上がった基板がこちら。先に電源とパスコンをスズメッキ線で配線しておいて、アドレス線、データ線はいつものようにジュンフロン線でチマチマと配線。今時の人ならCPLDと基板作成でサクっと作るのだろうが…。

ジョイスティックI/Fだけなら上半分のエリアは不要なので切り離してもよいのだが、後述するROM/RAM基板構想のためにそのままにしている。


接続

 JR-100実機に接続するとこんな感じ。こちら側に部品を実装しなければならない理由がお分かりいただけるだろうか。本体に接するジュンフロン線の配線の厚み程度は問題ないが、太いワイヤー使うと干渉するかも。

 Dサブコネクタ、電源コネクタの配置は、本体の電源、ディスプレイ端子等と干渉しないようにしている。

MSX用ジョイスティックを接続

 手持ちのMSX仕様ジョイスティックを接続。これは大昔にハムフェアの電波新聞社ブースで投売りされていたもの。連射機能なし、時々右に入れたレバーが帰ってこない困ったチャンであるが、コンパクトで引き回しやすいので重宝している。

プレイ!

 例によってJRSAVER.COMを使ってMSXエミュレータ経由でSTARFIREのプログラムを実機にロード(画像は使いまわし)。幸い、ジョイスティックは一発で正常に動作した。情報を上げてくださったまりすさんに感謝

ゲームの方はやはりジョイスティックでプレイすると感覚が全然違い、敵を狙ったり弾を避けたりするのが現実的になった。手に馴染んだレバーで8方向に自由に移動できるって素晴らしい。

ボーナスキャラのUFOは出現時に効果音が鳴るが、広いエリアのどこに現れるかはランダムのよう。自機の移動速度に対してUFOが速すぎるのでなかなか照準に誘導できないが、ジョイスティックを使うことによって一応HITを狙えるようになった。

こうして、30年ほど心に残っていたゲームが遊べるようになり、個人的には大満足。

古典

 さて、月刊マイコンに書かれていた「スペース・ウォーズの古典」の意味するところだが、あの有名な映画ではなくて、こちらのアーケードゲームだったのではないかと思われる(画像は拾い物)

タイトルも内容もまんまだし、これってパ○リ? 英語版Wikipediaによると、リリースは1979年でアーケード版とATARI800、コモドール64版があったらしい。

 映画の公開1978年、翌年アーケード版がリリースされて、月刊マイコン掲載が1983年。アーケード版はタイトルロゴもギリギリな感じだし、まぁ、何というか、おおらかな時代だったんだなぁ…と。

こちらのサイト(懐ゲーデータベース)では動画も公開されているが、さすがにアーケード版は動きが良い。とはいえ、JR-100でこれを移植しようと思って実際やってしまうのはやはり凄いと思う。


ROM化への道

 基板の上半分の余った部分についてだが、上回路図のようなROM/RAMを造設可能なように残してある。Enriさんのサイトの回路図ではJR-100外部バスの34pは空欄になっているが、ここに造設DRAM用の/CAS2が来ていると仮定して記載した(未検証)。DRAMは512kBの容量の内16kBしか使っていないのでハッキリいって無駄だが、今時16kB分のDRAMを入手するのも面倒なので手持ちの余っている514800で書いた。MSXのメモリマッパみたいにどこかのアドレスにレジスタを造設して、バンク切り替えするようににもできるが、今更JR-100で長大なプログラムを書く人もいないだろうし、リフレッシュが面倒くさくなるのでこれで良いことにする。

 ROMは32kBのEP-ROM1個で$8000〜16kBの拡張ROMと$D000〜4kBの増設機器制御用ROMを造設できるようにした。Enriさんのサイトによると、$D000の内容が$00の場合、プリンタ制御ROMがあると認識されるらしい。$D001に初期化用のフックがあるらしく、その仕組みを利用することで起動時に任意のコードを実行させることができるかも知れない。MSXのようにカートリッジをセットするだけでSTAR FIREで遊ぶことができるかも。そのためにはJR-100のROMを逆アセして解析しないとならないが、6800系のマシン語はZ80と比べると難解で…。汎用レジスタが少ない(アキュムレータ2個とインデックスレジスタ1個しかない)、上にブロック転送命令が無いのでROMの内容をRAMにコピーするだけでも一苦労しそうな気がする。

オマケ画像

1980年代の初歩のラジオに載っていたJR-100の作り方のネタイラスト。実際作った人はいるだろうか。

長さ45mm以上の消しゴムを正確に1mm厚でスライスすればよいので不可能ではないような気はするが、手作業では困難と思う。

この記事の内容につきまして協力をしてくださったMikasenさんに感謝いたします。

JR-100エミュレータの作者、けむしろうさんにも感謝いたします。密かにバージョンアップに期待しています。

JR-100の解析情報を公開されているEnriさん、大変参考にさせていただきました。ありがとうございます。

ジョイスティック情報をけむしろう氏のサイトに書いてくださったまりすさん、ありがとうございます。

一応お約束ですが、この記事を参考に製作などを行い故障やその他問題が発生しても責任は負えません。各自の責任において情報を広く集めて行うことをおすすめします。


ご意見、ご感想、ご質問はにがBBSまで!

Top pageへ戻る

copyright (C) 2016 Niga