ファミコン用カートリッジ基板の製作(設計編)

ファミコンのゲーム作りには絶対に手を出すまい、と心に誓っていたのですが、、、考えを改めました。今回も目コピーでカートリッジ基板を作りたいと思います。

f:id:nicotakuya:20200209132328j:plain

ファミコンカートリッジ分解

手持ちのファミコンのカートリッジを開けるところから始めます、、、が、方法がよくわからず、マイナスドライバーでこじ開けたらツメが折れてしまいました。

すごい敗北感。

 

f:id:nicotakuya:20200210153731j:plain

基板のサイズを測る

ノギスでサイズを測定します。ピン間隔は2.54mmピッチですね。板厚は1.2mmくらいでしょうか。

 

f:id:nicotakuya:20200301121800p:plain

回路を解析

回路を調べます。ファミコンの資料はネット上に一杯あるので、解説は特に不要だと思います。上の基板の写真は、右側を左右反転してあります。

このカートリッジはマッパー2を採用している「うっでいぽこ」です。プログラムROM容量は128KB。16KB単位でバンク切り替えを行っています。キャラクタRAMは8KBです。キャラクタROMではありません。このため、ROM側からデータをコピーしています。

2つのロジックICはバンク切り替えに使用しています。ファミコンのカートリッジはCPUリード信号とライト信号が兼用になっているという妙な仕様です。プログラムROMはずっとアクティブになったままで、バンク切り替え時に書き込もうとするとデータバスが衝突するようになっています。データバスの衝突を回避するためには、バンクのページ番号をあらかじめROMに書き込んでおくとのことです。「Enri's homepage」というサイトに書いてありました。

 

f:id:nicotakuya:20200229214900p:plain

ファミコンカートリッジ基板。32KB

さっそく基板を設計してみました。外形は目コピーですが、回路は現代の部品にアレンジする必要があります。

キャラクタROMかキャラクタRAMか、どちらかを選択する必要がありますが、やはりRAMのほうが使い勝手がいいです。値段を考えると秋月で売ってる32KB(256Kbit)がベストです。8KBしか使わないので、もったいないですが。端子のピッチは1.27mmですが、これなら手でハンダ付けできます。

プログラムROMはやっぱりフラッシュメモリですね。WE信号をどこかのピンに割り振る必要が出てくるのですが、2本あるVCCのうち1本に割り当てました。

アドレスバスが少ないので、バンク切り替えをしない場合、容量が最大32KB(256Kbit)になってしまいます。ただし、手持ちのフラッシュメモリが512KB(4Mbit)です。バンク切り替えなしでも面白いゲームは作れる(スーパーマリオとか)と思うのですが、これはさすがにもったいないので、この基板はボツにしました。

 

f:id:nicotakuya:20200227083337j:plain

基板のチェック

やっぱりバンク切り替えをするしかないってことになったのですが、一気にハードルが上がります。容量が512KBだと「ドラゴンクエストIV」が有名なので、マッパー1に決めました。マッパー1だとMMC1という専用のICが必要になってしまいますが、当然、売ってません。どうやって入手するのかが大問題ですが、解決を後回しにしてとりあえず設計してみました。

f:id:nicotakuya:20200229214808p:plain

ファミコンカートリッジ基板

最終的に出来上がったCADデータです。

フラッシュメモリのOE信号を外部から制御したいのですが、カードエッジの中に該当する端子がありません。しかたないので、2本あるGNDのうち1本を割り振っています。

バックアップRAMを載せて、リチウム電池を入れる空間を確保しておきました。バックアップRAMには安全装置がなくて、MMC1からチップセレクト信号がきたら書き込み可能になってしまいます。ドラクエのセーブデータが間違って消えてしまうことがよく話題になりますが、これは当然だなと思います。

バンク切り替えとフラッシュメモリの相性がよくありません。1バイト書き込むたびにバンクを切り替えていたら、ものすごい時間がかかってしまいます。なので、いざとなったらジャンパピンでMMC1の電源を切れるようにしてみました。

実際に作ってみて動作に問題がなければ、データを公開しようと思います。

(追記)

f:id:nicotakuya:20200316012824p:plain

基板のCADデータをさらに手直し

その後、基板の高さを50mmから48mmに縮めました。が、作る値段は1円も変わらなかったです。

続きはこちらです。

https://nicotakuya.hatenablog.com/entry/2020/03/16/152958