FS-A1にFM音源を追加する実験 が終わった後、ずっとメガアダプタもどきにFM音源を追加する実験をしていました。

 

きっかけはセガmkIIIのFM音源ユニットの回路図が公開されているEnriさんの記事(2023/8現在サイト閉鎖されたもよう)を見つけたことでした。

しかし、メガアダプタには拡張端子がありません。

 

やっぱり無理なのかなぁと思っていたところ、メガアダプタにFM音源ユニットをつないだというTAK.NAV 氏の記事を見つけました。

(「メガアダプタにFM SOUND UNITを搭載する」で検索すると引っ掛かります)

 
これによると、拡張端子にある信号のうちデータバス,アドレスバス,RD,WR,電源ラインはそのままセガmkIIIカートリッジの同名の端子につなぎ、KBSELのみメガドライブ側の端子につなげばいいそうです。
 
これなら大して苦労せずにメガアダプタもどきにFM音源を追加できそう、と始めたのですが、これがなかなか難産でした…。
 
〇FM音源を追加したメガアダプタもどき基板
 
実はFS-A1用の基板と一緒に注文してありました。
変な形をしてますが、
 
〇実際に使う基板
 
使うときにはこんな風に切り離します。
右側の基板はエッジコネクタ用なんですが、今回は試作基板を作った時に作ったものがあるので使いません。
 
〇完成した基板
 
これが組み上がった基板です。
(実験するだけなので、パスコンは省略してます)
 
冒頭でふれたとおり、基板を組み上げた後が大変でした。
基板自体は1月初頭に組み上げたのに全然FM音源が鳴らなくて、2か月経った今日ようやく鳴らすことができました。
 
◇◇◇
 
この2か月間いろいろと試行錯誤していたんですが、まあそれは省略するとして。
 
原因は、「セガmkIII/マスターシステムのソフトはポートF2Hの下位4bitをチェックしているのに、この基板は最下位2bitしか処理していなかった」ことでした。
 
幸いポートF2Hのラッチを担当していたGALのマクロセルには余裕があったので、bit3/bit2の配線を追加して、論理合成しなおすことで対処できました。
 
【3/2追記】
MD1(VA5)、MD2で動作することが確認できました。
【3/2追記終わり】
 
原因特定の決め手になったのは、Enriさんが公開している「I/Oポート Peepingプログラム」でした。
このプログラムのソースをベースに、ポートF2Hの動作を確認するプログラムを作ってマスターシステムで動かしたところ、上位4bitと下位4bitで挙動が異なることが分かりました。
有用なプログラムのソースを公開してくださっているEnri氏に感謝です。
 
ちなみにEnriさんのこのプログラムは「The Macroassembler AS」でコンパイルできることになっていますが、同じソースに複数のORG疑似命令があるため最新の「The Macroassembler AS」ではエラーになりました。
The Macroasembler ASでの対処方法はわかりませんが、z88dk付属のz80asmならORG疑似命令を使わずに特定のアドレスにニーモニックを置く方法がわかりますので、私はz88asm向けに書き換えて使っています。

 

以下、個人的備忘録

 

基板設計データ、GALの合成データ、ATtinyのプロジェクト一式はSMStoMD変換基板r3.lzh。
調査結果を反映した基板設計データや、今回の調査結果のまとめはSMStoMD変換基板r4.lzh。