2024/03/29 harumakkin
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プラグ)
カテゴリ | カートリッジ | 備考 |
---|---|---|
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カードを用意します。(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プラグ(電圧と極性を間違わないこと!)
注意:MGSとMuSICAは同時に使用できません。●スイッチを押しながら電源をONするとMuSICAモードで起動します。何もせず電源をONするとMGSモードで起動します
- STEP1. 電源を入れます
- STEP2. ディスプレイにMGSPICOのタイトルと、"for MGS" もしくは、"for MuSICA"が表示されます。
- STEP3. FM音源/SCC音源を認識できれば、音符マークと、SCCマークが表示されます すぐにmicroSD内の最大3つの楽曲ファイルのファイル名が表示されます
- STEP4. ▲/▼ スイッチでファイルを選択できます
- STEP5. ● スイッチで、再生を開始します、同じファイルを選択した状態でもう一度押すと再生を停止します
- "Not found MGSDRV.COM"、"Not found PLAYER.COM" と表示される。この場合は次のことが考えられます
- microSDカードが正しく挿入されていない。フォーマットし直しや、容量を変更を個なってみてください
- microSDカードにMGSDRV.COM、PLAYER.COMが正しく格納されていない。格納されているか確認してください
- "Not found KINROU5.DRV"、"Not found PLAYERK.COM" と表示される。この場合は次のことが考えられます
- microSDカードが正しく挿入されていない。フォーマットし直しや、容量を変更を個なってみてください
- microSDカードにKINROU5.DRV、PLAYERK.COMが正しく格納されていない。格納されているか確認してください
- 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 です
- MGSPICOのファームウェアとそのソースコード、回路図データおよび資料ファイルは MIT License で配布されます。ただし、MGSPICO は、FatFsと8x16文字フォントを使用しています。FatFs/8x16文字フォントのソースコードの扱いに関しては各々のLICENSEに従ってください。
- 本作品は同人ハードウェア&ソフトウェアです。本作品の設計およびソフトウェアは品質を保証していません。音源カートリッジや音響設備、その周辺機器が故障、破損したとしても自身で責任を負える方のみ本作品をご利用ください。特にハードウェアの製作を伴いますのでリスクがあります。製作の腕に自身のある方のみご利用ください。
- 本作品の設計資料とソースコードの改変や改造、また、別の作品への利用、商用利用は自由です。ただし、1. 2.の制限を超える利用は各自でその責任と義務を負ってください。
- FatFs Copyright (C) 20xx, ChaN, all right reserved. http://elm-chan.org/fsw/ff/00index_e.html
- 8x16 文字フォント FONT8X16MIN.h https://github.com/askn37/OLED_SSD1306
- MGSDRV (C) Ain./Gigamix https://gigamix.jp/mgsdrv/
- 勤労5号(MuSICA互換ドライバ) (C) 1996,1997 Keiichi Kuroda / BTO(MuSICA Laboratory) All rights reserved. https://sakuramail.net/fswold/music.html#muskin
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へは、CLOCK信号を供給しなくても鳴ります。自前のクリスタルを内蔵しているようです。ただしFMPACKと同様±12Vの供給は必要です。MSX SOUND ENHANCERはCLOCK信号の供給は必須ですが、±12Vは必要ありません。音質へのこだわりなのだと思うのですが二者のアプローチの違いが面白いです。
- pico-sdkの busy_wait_usは、最小単位の1usを指定すると実際のwait時間が1usだったりそれよりも長かったりして不安定になります。sleep_usは繰り返し使用すると全体が停止してしまうことがありました(ほか処理との組み合わせなども絡んでいるとは思います)。なので、アドレスバス、データバスの制御では、nop命令をforループで繰り返す古典的な手法で1us、および数100ns単位のwait期間を作り出すようにしました。繰り返し回数は実測で決めましたので、今後コンパイラやsdkが更新される度に再調整が必要になるのかもしれません。
- 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秒続いたら、曲は終了していると判断する、というようにしました。