ベーマガイベント無事終了

5月18日にベーマガイベントが開催されました。今回もスタッフの一人としてお手伝いさせて頂きました。ジャンパーの背中にでかでかと「ライター」「松原拓也」って書いてあります。当日は歩いたり走ったりしてたのですが、翌日、起きたらヒザが動かなくなってました。今は9割くらい回復してます。

イベントの内容についていろいろ言いたいのですが、それだと、面倒くさいベーマガオタクになってしまうので(もうなっていますが)、今は自制しておきます。

 

nicotakuya.hatenablog.com

ファミコンのカートリッジ基板(Mapper3)の自作

Mapper3のファミコンのカートリッジ基板を作ってみました。

3年くらい前に書いた「日経ソフトウエア」のファミコン特集記事でMapper0の基板を作ったので、それをMapper3に改造しています。実はあらかじめバンク切り替えに対応しやすいように設計しておきました。

 

www.youtube.com

 

Mapper3の仕組みについては、Enriさんのページで詳しく解説されています。

Enri's Home PAGE (ファミリーコンピューター ROMカセット マッパー3)

 

蛇足になってしまいますが解説します。Mapperというのはカートリッジの仕組みのことです。Mapper3はバンク切り替えを行って、CHR-ROMの容量を拡張します。アルカノイドのCHR-ROMは2バンク(16KB)。グラディウスのCHR-ROMは4バンク(32KB)。グラフィックをいっぱい表示したい時に役立ちます。

Mapper3のPRG-ROMは32KB固定で、バンク切り替えをしません。

CHR-ROMのバンクを変えるには、PRG-ROMに対して書き込みます。ROMに書き込むのはあり得ないことですが、ROM内のバンクキーと同じ値を書き込めばデータバスが衝突しません。たとえば、バンク1にしたい場合、特定の番地に「1」を入れておいて、「*((char *)xxxx番地) = 1;」と書込みます。

グラディウスとかだとロジックICの出力ピンの2本にダイオードが付いていてキーを3Xhにしないと、PPUのアドレスバスの一部が強制的にLowに落ちるように作られてます。間違えてPPUが壊れたりしないのでしょうか。過激なプロテクトです。

 

回路図です。PPU~CHR-ROM間のアドレスバスを2本増やすだけなので、回路はシンプルだと思います。ロジックICを1個足すだけです。本物は74LS161を使ってますが、74HC161でも問題ありません。

現状だと4バンクですが、アドレスをもう2本足して、16バンクにするといいんじゃないでしょうか。エミュレータ側が対応していないかもしれませんが。

 

CHR-ROMに書き込み中。黄色いジャンパーワイヤーはA13とA14です。

 

バンク切り替えの実験プログラムです。BG画面に16x16=256個のパターンを並べてみました。贅沢すぎる使い方。バンクを切り替えると一瞬で全部の表示が変わります。この技術はアニメーション表示にも応用可能です。

github.com

実機で動作を確認。

 

 

ついでに紹介しますが、過去に私が書いたレトロゲーム機系の記事は以下の通りです。

日経ソフトウエア2020年5月号 メガドライブ特集。→ムック「土日で楽しむゲームプログラミング入門」に収録。

日経ソフトウエア2020年11月号、2021年1月号、2021年3月号 ファミコン特集(全3回)。→ムック未収録

日経ソフトウエア2021年7月号、9月号 ゲームボーイ特集(全2回)。→ムック未収録

日経ソフトウエア2022年1月号、3月号、5月号 PCエンジン特集(全3回)。→ムック未収録

日経ソフトウエア2022年9月号 レトロゲーム機特集(ファミコンゲームボーイPCエンジンメガドライブのプログラミングをダイジェストで紹介)。→ムック「初心者のためのプログラミング学び方・遊び方」に収録。→「日経クロステック」に再録。

、、、未収録が多すぎです。

雑誌の中古の入手が難しい場合はKindleで買うという方法がありますが、結構いい値段になってしまいます。

 

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

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

 

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つ増えました。