アタリ仕様ジョイスティックをファミコンに接続する変換アダプタ

アタリ仕様ジョイスティックをファミコンに接続する変換アダプタを作ってみました。昔、ユニバーサル基板で作ったやつをプリント基板でリメイクしました。

 

www.youtube.com

 

ベーマガ1988年6月号より。マイコンソフトの「X-F1」の広告。今回作った変換アダプタとはコンセプトと仕様が似ています。「X-F1」はポートが2人分なのに対して、今回作ったのはポートが1人分になっています。

自分はX-F1を持っていないので、中の回路がどうなっているのか知りません。

 

この「アタリ仕様ジョイスティック」ってフレーズは、今はもう死語かもしれませんが、当時はわりと浸透していたと思います。

手持ちのパソコンの説明書によると、ジョイスティック端子は次のように表記しています。

・PC-6001mkIIは「ジョイスティック端子(9Pコネクタ)」

・X1 turbo IIIは「ジョイスティックインターフェイス

X68000 PRO2は「ジョイスティック用コネクタ(アタリ社規格準拠)」

「アタリ」というわりにAtari 2600とピン配置が微妙に違うのが不思議です。「Dsub 9Pinコネクタ」ってだけのところを、わざわざ「アタリ」と言うことにどんなメリットが?

ジョイスティック端子はパソコンメーカーが好き勝手に作ってきたので、仕様にバラつきがありました。ユーザーにとっては仕様の統一が望まれていたと思います。「アタリ社規格」というのは、具体的にはどういう規格だったのか、気になるところです。

Google翻訳に「アタリ仕様ジョイスティックポート」と入力したら「Atari specification joystick port」と出てきたので、動画ではそのとおり表示しています。海外の人には通じないかも。

 

回路図です。点線で囲んだ部分の回路が2プレイヤー用です。これで「X-F1」に近づいてしまいます。

1人ぶんの変換器を2つ作って、マルチタップで接続したほうが自由度が高いかもしれません。

ラズパイPico用カバー

3Dプリンタで自作したラズパイPico用のカバーです。初代DIY-Keypadの時(2023年7月ごろ)に思い付きました。

 

最新バージョンがこちら。省スペースで使い勝手がいいので独立してGitHubに公開することにしました。

github.com

STLファイルがぽつんと1つあるだけです。

 

ツメが付いていて引っかかるように作ってあります。


 

DIY-Keypad64(キーボードレイアウト変更)

DIY-Keypad64はレイアウトはJP(日本語キーボード)ですが、基板上に紙を貼って強引にUS(英語キーボード)に対応させてみました。


www.youtube.com

JPとUSのレイアウトです。市販のキーボードを参考にしました。

]の隣がバックスラッシュになったことで、Delが邪魔になってしまったので、上段に移動させました。いい場所が思いつかなかったです。

未使用のキーが2つ増えました。

 

DIY-Keypad64(自作USBキーボード)

64個のキーを搭載したUSBキーボードを自作してみました。基板のサイズは138×82mm。1.77インチTFT液晶(AE-ATM0177B3A)を搭載しています。

今のところは単なるキーボードですが、最終的には自作のBASICが動くポケコンにしたいと思っています。単なるキーボードだったら、そこらへんで一杯売っているので、わざわざ作る必要はありません。

 

www.youtube.com

 

ソースと回路図等はGitHubで公開中です。

github.com

 

キーボードをラズパイと接続して、7インチの純正ディスプレイを取り付けてみました。ケースは3Dプリンタで7時間かけて出力した超大作です。

画面の向きが180度逆だったので、「lcd_rotate=~」と入力しようと思ったら、アンダーバーが打てないという致命的なバグを発見。ArduinoのKeyboardライブラリは日本語キーボードのレイアウトに非対応なので、まともにキーコードが送れません。対策にはちょっと工夫が必要です。

(2024/4/1追記)

旧バージョンはアンダーバーが打てない、¥が打てない、見当違いのキーが出てしまう等の致命的な不具合があったのですが、全て解決しました。

press関数やrelease関数を使うのを止めて、sendReport関数を使ってキーコードを直接送るように変更しました。ただし、sendReport関数はprivateメンバに属しています(外部から呼び出せない)ので、"Keyboard.h"を自前で書き換えて、publicメンバに加える必要があります。

全角/半角キーで日本語が入力できるようになりました。

ファンクションキーがないのでスペースで変換するしかありません。fncキーでF7~F9を打てるようにしないといけません(まだ未対応)。

(2024/4/4追記)

「FNC」キーに対応しました。一般的には「FN」というみたいですが、勘違いしたまま作ってしまいました。

次のように割り振ってみました。ファンクションキーが使えるようになったので、日本語入力がちょっとだけ使いやすくなったかもしれません。

・PAGE UP:FNC+UP
・PAGE DW:FNC+DOWN
・HOME   :FNC+LEFT
・END    :FNC+RIGHT
・F1~F9 :FNC+1~9
・F10    :FNC+0
・F11    :FNC+-
・F12    :FNC+^(JP) =(US)
・INSERT :FNC+DEL
WINDOWS:FNC+W
・BREAK  :FNC+B
・PRINT SCREEN:FNC+P (FNC+P+ALTも入力可能)

このほか「無変換」とか「カタカナ」を割り振ることができます。空いてる場所は一杯ありますが、どこに配置したらいいのかわかりません。

DIY Analog pad(ラズパイPicoバージョン)

DIY Analog pad」のラズパイPico版を作ってみました。14×2.5cmのアナログジョイパッドです。

動作電圧の違いは、レベル変換IC(FXMA108)で解決しました。

www.youtube.com

動画だとすんなり動作したように写ってますが、実際は通信エラーの問題で3日くらい悩みました。エラーの原因はdelayMicroseconds関数が不正確だったこと。代わりに使ったbusy_wait_us関数もダメで、SysTickもダメで、結局、add_alarm_in_us関数のタイマ割り込みで解決しました。

 

OLEDディスプレイはデバッグ用です。付けなくても構いません。

3Dプリンタジョイスティックのレバーとカバーを作りました。秋月で売っているアルプス電気ジョイスティック(RKJXV1224005)はレバーを倒しすぎると、レバーが戻ってこなくなってしまうので、レバーの動きを制限する必要があります。

 

GitHubでソース、回路図等を公開しています。

github.com

 

(2024/3/30追記)

セガハード大百科(https://www.sega.jp/history/hard/index.html)によると、XE-1APに対応しているソフトは次の通りです。
アフターバーナーII
・武者アレスタ
・ファステスト・ワン
ギャラクシーフォースII
アイルトン・セナ スーパーモナコGP II
・(メガCD)アフターバーナーIII
・(メガCD)スターブレード
・(メガCD)ナイトストライカー
・(スーパー32X)スペースハリアー
・(スーパー32X)アフターバーナー・コンプリート

、、、計10本。

 

nicotakuya.hatenablog.com