Skip to content

MSX本体が無くてもFM音源カートリッジとMGSDRVを使用してMGS楽曲データを再生し鑑賞できる個人製作のハードウェアです

License

cliffgraph/MGSPICO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MGSPICO

2024/03/29 harumakkin

mgspico-03
fig.1 MGSPICO

これは何?

MSX本体が無くてもFM音源カートリッジとMGSDRVを使用してMGS楽曲データを再生し鑑賞できる個人製作のハードウェアです。MGSDRV は Raspberry Pi Pico内で動作しますが、RP2040用に移植したものではなく、MSX用のMGSDRVを HopStepZ というMGSDRV専用エミュレータを使用して動作させています。 また、ファームウェアver1.2から、勤労五号(KINROU5.DRV)というMuSICA上位互換ドライバも使用することでMuSICA楽曲データも再生できるようになりました。MuSICAデータを再生することができるようになっても名前はMGSPICOのままです。ご容赦を。

使い方

用意するもの

  • MGSPICO
  • MGSDRV.COM(Ver3.20)
  • MGS楽曲データファイル(.MGSファイル)
  • KINROU5.DRV(Ver2.00)
  • MuSICA楽曲データファイル(.BGMファイル)
  • microSD カード
  • FM音源カートリッジ
  • SCC音源カートリッジ
  • DC5V電源(microUSB、もしくは、センタープラス 2.1mm DCプラグ)

動作確認済みFM音源/SCC音源カートリッジ

カテゴリ カートリッジ 備考
PSG/OPLL SoundCoreSLOT EX
PSG/OPLL MSX SOUND ENHANCER
SCC MSX2版 スナッチャー 付属SCCカートリッジ (MGS/MuSICA供にOK)
SCC MSX版 SALAMANDER カートリッジ MuSICA(KINROU5.DRV)では現状検証中
MIDI MIDI PAC v2 MGSPICOに直接接続では使用できず。MSX Slot Expander経由で使用できた

microSD カードの準備

  • microSDカードを用意します。(32GBの容量の物で動作確認しています、それ以外では行っていません)
  • microSDカードを、FAT、もしくは、FAT32フォーマットを施します。
  • microSDカードに、MGSDRV.COM、player.com をコピーします また、MuSICAデータも鑑賞したい場合は、KINROU5.DRV、playerK.comもコピーします
  • 鑑賞したいMGSデータファイル(.MGS)、MuSICAデータファイル(.BGM)もカードへコピーします(1000ファイルまで)

セットアップする

  • microSDカードをMGSPICOのスロットに取り付ける
  • FM音源/SCC音源を取り付ける
  • AudioOutにスピーカーなどを取り付ける
  • MGSPICO に電源を取り付ける。microUSB or DCプラグ(電圧と極性を間違わないこと!)

ex1 ex2
fig.2 セットアップ例

操作方法

注意:MGSとMuSICAは同時に使用できません。●スイッチを押しながら電源をONするとMuSICAモードで起動します。何もせず電源をONするとMGSモードで起動します

  • STEP1. 電源を入れます
  • STEP2. ディスプレイにMGSPICOのタイトルと、"for MGS" もしくは、"for MuSICA"が表示されます。
  • STEP3. FM音源/SCC音源を認識できれば、音符マークと、SCCマークが表示されます すぐにmicroSD内の最大3つの楽曲ファイルのファイル名が表示されます
  • STEP4. ▲/▼ スイッチでファイルを選択できます
  • STEP5. ● スイッチで、再生を開始します、同じファイルを選択した状態でもう一度押すと再生を停止します

トラブルシュート

  1. "Not found MGSDRV.COM"、"Not found PLAYER.COM" と表示される。この場合は次のことが考えられます
    • microSDカードが正しく挿入されていない。フォーマットし直しや、容量を変更を個なってみてください
    • microSDカードにMGSDRV.COM、PLAYER.COMが正しく格納されていない。格納されているか確認してください
  2. "Not found KINROU5.DRV"、"Not found PLAYERK.COM" と表示される。この場合は次のことが考えられます
    • microSDカードが正しく挿入されていない。フォーマットし直しや、容量を変更を個なってみてください
    • microSDカードにKINROU5.DRV、PLAYERK.COMが正しく格納されていない。格納されているか確認してください
  3. MSX SOUND ENHANCERとSCCを組み合わせるて使用するケースでFM音源が鳴らない
    • MGSPICOの電源をSW2を押しながら入れると解決します(ファイルリストが表示されるまでの1秒間押します)
    • MSX SOUND ENHANCERはFM音源認識用ダミーROMを持っていますが、SCCカートリッジをパススルースロットで使用するためにこのROMを切り離す設定にしているかと思います。そのためMGSDRVがFM音源認識できずFM音源のデータを再生しません。MGSPICOの電源をSW2を押しながら入れるとMGSPICOが持つFM音源認識用ダミーROMと同じことをMGSDRVに対して行いますので、MGSDRVがFM音源があるものとして動作します。

ガーバーデータと部品表

  • MGS-PICO-XXX/ ディレクトリ内を参照のこと。はんだ付けの難度は高いです。
  • raspberry Pi Picoにインストールするファイルは、RasPiPico/dist/mgspico.uf2 です

LICENSEと利用に関する注意事項

  1. MGSPICOのファームウェアとそのソースコード、回路図データおよび資料ファイルは MIT License で配布されます。ただし、MGSPICO は、FatFsと8x16文字フォントを使用しています。FatFs/8x16文字フォントのソースコードの扱いに関しては各々のLICENSEに従ってください。
  2. 本作品は同人ハードウェア&ソフトウェアです。本作品の設計およびソフトウェアは品質を保証していません。音源カートリッジや音響設備、その周辺機器が故障、破損したとしても自身で責任を負える方のみ本作品をご利用ください。特にハードウェアの製作を伴いますのでリスクがあります。製作の腕に自身のある方のみご利用ください。
  3. 本作品の設計資料とソースコードの改変や改造、また、別の作品への利用、商用利用は自由です。ただし、1. 2.の制限を超える利用は各自でその責任と義務を負ってください。

MGSPICOが組込利用しているソフトウェア(PICO-SDK以外)

起動時に読み込んで使用しているソフトウェア

修正履歴

date MGSPICO firmware note
2024/03/17 mgspico.uf2(v1.4) - 順次再生する機能を追加した。一曲2回ループ演奏したら3回目の冒頭でフェードアウトして次の曲に移るようにした、ループせずに曲の最後に消音する曲に対しては強制的に次の曲に移るようにした。従来の同じを繰り返し再生はできなくなった。同時に公開しているmgspico.uf2と、PLAYER.COMと、PLAYERK.COMを必ず組み合わせて使用すること。異なる世代のものを混在させないように注意すること
- 起動時の/RESET信号の期間が長くなるようにした(For FlashJacks)
- YAMANOOTO カートリッジ の PSGを有効化する処理を追加した(For YAMANOOTO )。
2024/03/17 MGSPICO-04A MIDI PAC v2との組み合わせではMIDI PACが動作しない問題を解決した。MGSPICO-03C基板と異なり、カードエッジスロットの9番ピン(/M1端子)を10kΩ抵抗で3.3Vにプルアップする回路が追加になっている。※MGSPICO-03C基板をすでに製造された方も抵抗器(10kΩ、1/4w程度)を用意いただき抵抗器の片足を9番ピン(/M1端子)へ、もう片方の足を3.3Vにハンダ付け改造していただければMGSPICO-04A基板と同等になります。m(__)m
MGSPICO-03E (試験用に製作したもので、最終的に欠番とした)
MGSPICO-03D (試験用に製作したもので、最終的に欠番とした)
2024/02/25 mgspico.uf2(v1.3) MGSモードで一部の曲のPSGの音が正しくない問題を修正した。ただし対症療法であり、今後も再発の可能性がある
2024/02/24 mgspico.uf2(v1.2) MuSICA互換ドライバを使用してMuSICAデータファイルも再生できるようにした。MuSICAデータ再生中のレベルインジケータ表示のために、KINROU5.DRVのワークアエリアの一部を公開いただきました作者様(@yarinige.bsky.social)と、仲介いただいたMSX Club Gigamix主宰(@nf-ban.gigamix.jp) 様に感謝申し上げます
2024/02/17 :-- mgspico.uf2(v1.1) 起動時に検出した音源をロゴで表示するようにした。また再生中は再生時間を表示するようにした。そのほかリファクタリング。
2024/02/15 MGSPICO-03C ガーバーデータを修正した(microSDとスペーサーの位置が干渉してしまうので、microSDスロットの位置を少し移動した。機能に変更なし)。
2024/02/11 MGSPICO-03B 初公開

余禄

MGSPICOの機能に関係ないですが、開発中に見つけたものをメモ書きしておきます。

SoundCoreSLOT EXとMSX SOUND ENHANCERの違い
  • SoundCoreSLOT EXへは、CLOCK信号を供給しなくても鳴ります。自前のクリスタルを内蔵しているようです。ただしFMPACKと同様±12Vの供給は必要です。MSX SOUND ENHANCERはCLOCK信号の供給は必須ですが、±12Vは必要ありません。音質へのこだわりなのだと思うのですが二者のアプローチの違いが面白いです。
1usもしくは数100ns単位のwait時間の作り方
  • pico-sdkの busy_wait_usは、最小単位の1usを指定すると実際のwait時間が1usだったりそれよりも長かったりして不安定になります。sleep_usは繰り返し使用すると全体が停止してしまうことがありました(ほか処理との組み合わせなども絡んでいるとは思います)。なので、アドレスバス、データバスの制御では、nop命令をforループで繰り返す古典的な手法で1us、および数100ns単位のwait期間を作り出すようにしました。繰り返し回数は実測で決めましたので、今後コンパイラやsdkが更新される度に再調整が必要になるのかもしれません。
MGSDRVでの曲の終わりの判定方法
  • mgspico.uf2はv1.4から、曲データを順次再生することができるように成りました。公開されている曲データはゲームBGMが多く、繰り返し再生する用途の曲が多いので、曲データの切り替えは2回再生したら、という条件で行っています。曲の終わりからまた初めから聞くことも多い曲が多いので2回は再生したいという思いです。KINROU5には再生回数を返すAPI(PLYCHK)が、MGSDRVの場合はワークエリア(LOOPCT)から現在何回目かを知ることができます。(一度目の再生中KINROU5のPLYCHKでは 1 が得られますが、MGSDRVのLOOPCTからは 0 が得られるという違いがありますが)
  • ところが、作者の意向だと思うのですが、曲データによってはループせずに曲の終わりで消音して止まってしまうものがあります。この判断方法がわかりませんでした。MGSP2ソースコードを参考にさせてもらったのですがそれでも上手く判定できませんでした。仕方ないのでMGSPICOでは17トラックのワークエリアを常に監視し、どのトラックもKeyOn/Offされない期間が2.5秒続いたら、曲は終了していると判断する、というようにしました。

About

MSX本体が無くてもFM音源カートリッジとMGSDRVを使用してMGS楽曲データを再生し鑑賞できる個人製作のハードウェアです

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages