MSX用カートリッジ基板の自作

www.youtube.com

 MSX用のカートリッジ基板を自作してみました。上の動画は製作過程です。

 

f:id:nicotakuya:20210820132344j:plain

市販のゲームカートリッジを分解

まず、 仕組みを調べるため、MSX用のカートリッジを買って分解してみました。「プロフェッショナル麻雀」っていうゲームです。税込みで308円。

f:id:nicotakuya:20210820132515p:plain

回路の解析結果

調べた結果です。32KBのROMだけが入ってました。専用ICもなくて、シンプルです。

 

f:id:nicotakuya:20210821042255p:plain

回路図

基板を解析して、回路図に書き起こしてみました。コンデンサを省略してます。

カードエッジの端子のA14がどこにもつながっていません。最初、変だと思ったのですが、これは、CPUが0x4000番地にアクセスした時にROMの0x0000番地をアクセスさせるための処置です。そして、端子のA15がROMのA14につながっているので、0x8000番地にアクセスするとROMの0x4000番地がアクセスされます。結果として、全部のアドレスが0x4000ずれて伝わります。

f:id:nicotakuya:20210820132754p:plain

PC-6001MSXのスロット

 PC-6001のROMカートリッジインターフェース(取扱説明書より)とMSXのカートリッジスロット(https://www.msx.org/より)のピン配置を比較してみました。

両者は驚くほどそっくりです。アドレスバスとデータバスのピン番号が同じです。5V、GND、RD、WRも同じです。

特に違うのは、4番ピンですね。MSX側の「SLTSL」はスロット選択時にLowになる端子です。一方、P6側の「CS2」は0x4000~5FFF番地(8KB)をアクセスした時だけLowになります。

 

f:id:nicotakuya:20210726041418j:plain

PC-6001用カートリッジ基板とフラッシュメモリ

解析の結果、PC-6001MSXのカートリッジの端子がすごく似てるということがわかったので、以前作ったPC-6001用のカートリッジ基板を流用します。

 

f:id:nicotakuya:20210821041910p:plain

8bitworkshop.com

8bitworkshopというサイトからMSX用サンプルプログラム(Hello World)のROMイメージを頂戴しました。

8bitworkshop.com

このサイト、凄いことにファミコンとかAtari2600とかMSXのプログラムがWebブラウザだけで作れてしまいます。エミュレータ機能も搭載しているので、動作チェックもすぐにできます。謎の技術です。

MSXの場合、C言語に対応しているのもありがたいです。

 

f:id:nicotakuya:20210821041942p:plain

00をFFに変換

ダウンロードしたROMイメージは32KBです。細かい話ですが、データの後半が全部00で埋まってました。これだと、ROMの書込に時間がかかるので、自作ツールでFFに変換しました。

 

f:id:nicotakuya:20210821041642j:plain

自作のフラッシュメモリライターで書き込み

 以前PC-6001用に作ったフラッシュメモリライターを使って、フラッシュメモリにROMイメージを書き込みます。ROMには0x4000番地から書き込みます。この仕様もPC-6001と同じです。データが「AB」で始まるところも同じ。アクセス可能な範囲は0x4000~0xBFFFなので、容量は最大32KBになります。

この自作カートリッジ基板はアドレスバスを全部つないでしまっているので、ムダな領域ができてしまいます。

 

f:id:nicotakuya:20210821094814j:plain

MX-101

MSX本体を持っていなかったので、駿河屋で中古品を買いました。5626円。

ダンボールいっぱいの静岡新聞といっしょに届きました。状態は文句なしです。ACアダプタが欠品してましたが、手持ちのもので問題なく動きました。

 

f:id:nicotakuya:20210821041830j:plain

動きました

フラッシュメモリの書き込みが終わったら、カートリッジ基板をMSX本体に挿し込んで電源を入れるだけです。

4番ピンの仕様の違いがどう影響するのか心配でしたが、無事に動きました。今回は回路設計も基板設計もしないで終わりました。

 

f:id:nicotakuya:20210821183245p:plain

今回動かした基板の回路図

PC-6001用のカートリッジをそのままMSXに接続して大丈夫なのか、、、ちょっと心配だったので、回路図で確認してみました。「SLTSL」をROMのCEに直結しています。これだとスロット読み込み時は常にアクティブになっていて、「CS12」の状態を見ていないのが心配なところです。74HC32で「CS12」とOR演算してからCEに入れたほうが確実のように思えます。

今、気が付きましたが、この回路だとA15がつながっていないですね。0x8000~0xBFFFにアクセスすると、ROM側は0x0000~0x3FFFにアクセスされます。たまたま未使用領域なので、問題なく動いているようです。しかし、気分的によくないので、ジャンパ線でA15をつないだほうがいいと思います。

 

(2021/08/25)

作り方はこちらで公開中です。PC-6001用とMSX用のページを統合しました。

sites.google.com