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。


