似非P6ROM製品版

前スレはコチラ。

http://niga2.sytes.net/wordpress/?p=690

1年間塩漬けになっていた似非P6ROMプロジェクトは2021年11月から本腰を入れて開発再開。OPN2の音質は、高音質化改造されたメガドライブ実機と比較して劣らないレベルを目指し、最終的にOPN2のアナログ電源は+12Vからレギュレータで+5Vを生成して分離、OPAMPはアナログ+5Vの単電源とすることで比較的良好な結果が得られた。+12V電源を要するため、断腸の思い(嘘)でCASIOのMSXは対象外へ。

当初は裸基板でリリースするつもりであったが、試作機を剥き身のまま雑に扱っているうちにFlashROMが壊れる事例が発生したため、ケースは必要と判断。P6系の同人ハードで有名なBAKUTENDOさんの作品に倣って、リップルレーザーさんにアクリルパネル製造を依頼してみた。

前面パネルはクリアブルーを選択。製品名やロゴはテプラの裏貼りとした。コストはかかってしまったが、製品として恥ずかしくない仕上りになった。

PC-6601SRのスロットに挿した状態。程よい出っ張り具合。

もちろんT.Matsushima氏による「特攻空母BELUGA」も遊べる。ソフトウエアはFlashROMのバンク0にプリインストールされている。Mr.PCのファミべーキーボードアダプタや、赤外線ワイヤレスな猫の手リモコンシリーズは家電のケンちゃんで不定期で頒布中(売り切れ御免)。

MSXでは8kバンクで1MbitまでのMegaROMゲームを起動できる。コナミバンクやSCC付きのゲームも動作するが、SCC音は鳴らない。

スロットに挿入する際は逆差し防止機構がないので要注意。上面や背面スロットでは間違わないと思うが、セパレートキーボード機の前面スロットではラベル面が下を向く機種がある


音声ケーブルの接続

似非P6ROMには音声入力端子があり、MSX/P6本体からの出力音声とOPN2サウンドをミキシングすることができる。

ミキシング入力はステレオで、入力レベルはRV1/RV2で調整できる。接続には下のようなケーブルを用意する。

これは秋月電子の3.5mmステレオミニプラグオーディオケーブル(90cm)[DCB-AKI09]を切断してRCAプラグをつけた自作品。LRの芯線はまとめてRCAのセンターピンにハンダ付けした。なお、100均のケーブルは芯線にハンダ付けが困難なリッツ線が使われていることがあるのでオススメしない。

この組み合わせでも接続可能。共立エレショップで取り扱いあり。

出力端子からはラインレベルで信号が出るので、適当なアンプやアクティブスピーカーに接続すればOK。

上画像のようにMSXでVGM再生する場合は、プレーヤーのVGMPlay 1.3ににパッチを施し、Makoto(OPNA)の偽装工作を要する(後述)。MSX本体や周辺機器の状態によっては似非P6ROMでVGM再生出来ないので注意。具体的には、多くのSONY機(HB-F1XD/mk2/XDJ/XVなど)や拡張スロットなどで、スロットのデータバスとCPU間にバスバッファが存在する環境ではNG。MSXのスロットでは、IOデバイスのデータ読み取りの際に/BUSDIR信号でバスバッファに入出力方向の明示をすることになっているが、P6では/BUSDIRのピンに/ExCAS信号が割当たっており、戦士のカートリッジの拡張RAM制御に必要である。このため、似非P6ROMでは/BUSDIR出力をオミットした。これはMSX/P6両対応を実現するための「仕様」ということでご理解いただきたい。なお、松下A1シリーズの基本スロットにはバスバッファが存在しないため、この問題は発生しない(拡張スロットを使うとNG)。MSX用のOPN系音源は、いずれきちんと対応したカートリッジをリリースするつもりなので、主にMSXでVGM再生したいユーザーはそれまで待って頂いたほうが良いと思う。


VGMPlay 1.3パッチ情報

VGMPlay for MSXは下記サイトで配布されていて、ソースコードも閲覧できる。

http://www.grauw.nl/projects/vgmplay-msx/

2022年現在のVGMPlay 1.3はOPN2実音源には対応していないが、Makoto(OPNA)には対応している。OPN2のFM音源部はOPNAと互換性があり、似非P6ROMのOPN2のIOアドレスはMakotoと同じ#14-17hに割り当ててある。よって、Makoto(OPNA)に偽装することでOPN2の発音が可能である。

具体的にはVGMPLayのMakoto検出プログラムを書き換え、OPNAが存在するものと認識させればよい。ソースコードを読むと、OPNAの存在はステータスレジスタやADPCMレジスタを読み書きして確認しているようだ。以下にMakoto検出部分を抜粋。なお、Makoto_STATUS1はIOアドレス#16hを指す。

VGMPlay 1.3では、冒頭の IN A,(16h)が59F3hからの2バイト「DB 16」に該当する。ここをSCF ,RETにすればMakotoが存在することになるので「37 C9」に書き換える。これでOPN系のVGMデータが強制的にIOアドレス#14h-17hに流し込めるようになる。

OPN2クロックを変更する場合

似非P6ROMのOPN2クロックはMakotoに合わせて8MHzを選択している。VGMPlay 1.3ではMakotoのクロックが6C79hと6D8Chと725Chからの3バイトに「00 12 7A」と書かれており、10進数に直すと7A1200h=8000000となる。

似非P6ROMではオシレータを追加して8MHz以外のクロックをOPN2に供給することが可能。音源のクロックをメガドラ実機と同じ7.6704MHzにする場合はX1にオシレータ(EPSON SG-8002DC +5Vを推奨)を実装し、左のジャンパーピンを下側ショートにすればよい。VGMPlayの周波数設定は、7670400=750A80hになるので、「00 12 7A」 をサーチして「80 0A 75」と書き換えることになる。ここを直しておかないとPSGとミキシングした際に不協が生じる。

作者のGrawさんがOPN2に対応してくれるまでは、VGMPlayのバージョンが上がっても上記データのサーチ&書き換えで追従できるだろう。


似非P6ROMでVGM再生

実際にどのような音が出るのか、メガドライブのThunder ForceIVのVGMデータを使ってサンプリングしてみた。

MSX本体は初代FS-A1改。電源はiPadの純正ACアダプタでUSB化、内部の±12V電源はDC-DCモジュールで生成している。メガドライブのDCSG音はPSGで代理発音されるので、MSX本体の音声出力からケーブルで似非P6ROMのミキシング入力に接続し、音声出力をPCのUSBオーディオ(UA-30)を経由して録音した。

Thunder force IVの3番、4番、7番、11番、33番目の曲を各30秒収録した。fade out処理以外は無加工で、曲間の無音部にノイズが目立つが、ノイズ成分のほとんどは本体PSGサウンドに由来する。

OPN2単体の音質確認のために同じ曲を本体PSGミキシングなしで収録してみた。ホワイトノイズは聞こえるが、本体のデジタル信号由来のノイズはほぼ聞こえないレベルだろう。

そもそも、OPN2はホワイトノイズが多い石のようで、静かな曲を再生すると背後に雨が降っているようなノイズが混入する。特にThunder force IVの7番の中間部で顕著。こちらもPSGミキシングなしで収録。

この傾向は高音質化メガドライブ実機でも同様のようなので、YM2612実音源の特性なのだろう。


制限事項

似非P6ROMは、P6とMSX両対応とするために敢えていくつかの設計上のお約束を無視しており、そのため以下の制限が発生する。

  1. MSXで似非ROM機能とMSX-MUSIC(OPLL)の同時使用は不可
  2. MSXのVGMPlayでOPN2発音ができない環境が存在
  3. OPN2の割り込み機能は使用不可
  4. スロットに+12Vが供給されていない機種ではOPN2発音不可

1.についてはOPLLのIOアドレス(#7C-7Dh)と戦士のカートリッジのバンクレジスタ(#70-7Fh)が重複することが原因。MSXでの使用時も#70h-7Fhのバンクレジスタは有効で、ここに値を書いてしまうとアドレス空間4000-5FFFhのバンクが切り替わってしまう。OPLLアクセスで#7C-7Dhに書き込んだときも同様に切り替わるので似非P6ROMのFashROMにOPLLを使うソフトをインストールして運用することはできない。なお、これらのIOレジスタは書き込み専用なのでバス競合は発生しない。MIDI-SAURUSなど同じ理由で同時使用できないデバイスが存在するので、IOマップで確認を。

2.は既に解説しているが、スロットのデータバスとCPU間にバスバッファが存在する環境ではVGMPlayでの似非P6ROMのOPN2の発音ができない。具体的には多くのSONY製のMSXや外付けの拡張スロットが該当する。P6とMSXでスロット10pの役割が異なることが原因。FS-A1シリーズの基本スロットであれば問題なく発音できる。

3.はP6とMSXでスロット8pの役割が異なることが原因。MSXではCPUの/INTが繋がっているが、P6では/NMIが繋がっている。MSXでは音源の/IRQを/INTに接続すれば問題ないが、P6ではNMIが発行されてしまってNG。そのため、音源の割り込み機能はオミットした。P6ではスロットに/INTが存在しないので音源の割り込み機能の実装自体が不可能。

4.は、アナログ電源の生成に+12Vを使用していることが原因。OPN2はDAC内蔵音源であるため電源ノイズがモロに音声信号に現れる。MSXのVcc電源はデジタルノイズで酷く汚染されているため、音源のデジタル・アナログ電源の分離は絶対に必要。Vccに含まれるノイズはフィルター回路では十分な除去ができなかったため、比較的クリーンな+12Vを利用することにした。CASIO機(PV-7やMX-10等)ではスロットに±12Vが出ていないので似非P6ROMの音源は使えない。

バス競合のような致命的なエラーは回避できるように設計したつもりであるが、後から別の問題が出てくる可能性はあるかも…。


似非P6ROMのリリース計画

前スレに書いたように、OPN2音源の入手性には問題があるが、初回リリースのみ発音確認したリファービッシュ品を実装して頒布することにした。IC表面が削られてリマークされているので、見た目が怪しい点はご了解いただきたい。

 

音源部組み立てキット版

以後は音源部をキット化した半完成品を頒布する予定であるが、YM2612は各自調達が必要。音源ガチャでドロップした石を死蔵している方には最適かも? こちらも需要はあまり多くないと思うので少数で終息する予定。

似非P6ROMはどちらかというとP6寄りの設計で、MSXでの使用時に何かと制限があるため、主にP6での使用を想定しているユーザーにお求め頂ければ幸いである。

“似非P6ROM製品版” への4件の返信

  1. Hello, Niga-san. It’s Iyatemu. I’m posting this comment to give you my email address to discuss Makoto/MSX OPNA Sound Cartridge. It’s in the email field, but I’m not sure if you can see it. You can contact me at any time.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

wp-puzzle.com logo