ファミコンのカートリッジ基板(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で買うという方法がありますが、結構いい値段になってしまいます。