Gigamix Online

懐かしの8bitおもちゃPC「MSX」を骨までしゃぶり尽くそう。MSXの最新ニュース、ブログ、自作ソフトの配布など。

MGSDRV:仕様?バグ?未確認情報まとめ

【2024.02.21更新】 多重ループ(ループの入れ子)が誤動作する 追加
【2024.02.07更新】 音程を数値で指定するNコマンドは存在しない 追加
【2024.02.07更新】 SCC音源:音色定義が32種類までしか持てない 追加
【2023.10.15更新】 @eコマンドに関する事象 追加
【2022.11.23更新】 SCCでo1の音を鳴らすと音痴になるバグ?
【2022.2.8更新】 PSG音源の「\」(¥)コマンドを用いたピッチ調整量が、音の高さに応じて変動する?

 MGSDRVに関する既知のバグ情報、バグなのか仕様なのか分からないような未確認情報をまとめました。ご迷惑をおかけします。

 バグ情報・不具合情報をお待ちしております。当チーム @nf_ban(主宰) または @goripon_tw(プログラム担当) までお寄せください。

https://p.gigamix.jp/mgsdrv/cg/buglist.png

ちなみにMGSDRVの概要・ダウンロードは、こちらのリンクからどうぞ。 www.gigamix.jp

未解決・未調査の情報

SCCでo1の音を鳴らすと音痴になるバグ?

前にどなたか呟かれていた記憶があるけど見つからず… SCCでo1の音を鳴らすと音痴になっちゃうバグ(?)に打ち当たって色々試したところ、出だしに o1c (v0でOK) を入れることで回避できることを発見した。これって実機だとどうなるんだろう?そもそもこの現象はバグなのか…音源?ドライバ?エミュ側? pic.twitter.com/ftXqaaecmo — たかを🎯 (@takawo_n) 2022年11月22日

 出だしに o1c (v0でOK) を入れることで回避できます。詳細は以下のツイートにあります。

oct1不具合の問題が解決出来ました!(´∀`) 決め手は、テキスト401行目。冒頭で一瞬だけSCCのダミー音色を全ch一斉にv0o1cを鳴らすと、それ以降のSCC全chのo1は正確なオクターブで鳴らせるようになります。SCCベースも、これでバッチリ!😃https://t.co/Yo8oe5PTFe — ぎゃぶねこ (@gyabuneko) 2021年3月28日

L128を指定するとテンポがずれる?

MGSDRVでL128を指定すると、テンポがズレるみたいだなぁ・・・ L128はステップ値に換算すると「1.5%」なのだが、この小数点以下の端数がテンポずれの原因? あと、テンポ76~112で%1を指定してもエラーは出ないのだが、演奏途中で音が鳴らなくなる現象も。これら原因調査で耳コピが中断してもーた😅 — ぎゃぶねこ (@gyabuneko) 2021年6月1日

kf→koの切り替え前後に共通したリズム楽器が指定されている場合、そのリズム楽器が発声されない?

kf→koの切り替え前後に共通したリズム楽器が指定されている場合、そのリズム楽器が発声されない。(y14,32を間に記入することで回避できます。) https://f.msxplay.com/?id=d92848c3 #MGSDRV https://t.co/BrQnU2GnlW?amp=1 — Pt.Macumba (@Pt_Macumba) 2021年2月23日

 詳細不明ですが、回避策はあります。

vbの相対指定を使用すると他のリズム楽器も巻き込まれて音量が変化する?

vbの相対指定を使用すると他のリズム楽器も巻き込まれて音量が変化する。(vの相対指定と同じ動作をする。) https://f.msxplay.com/?id=9180ce68 #MGSDRV https://t.co/0o47EgjZDx?amp=1 — Pt.Macumba (@Pt_Macumba) 2021年2月23日

 詳細不明です。

opll_tuneで指定した値によっては音程が意図しない高さになる?

opll_tuneで指定した値によっては音程が意図しない高さになることがある。トラック1(音階指定,opll_tune使用)→トラック2(opll_tuneで指定した値と同じ値をyコマンドで書き込み)→トラック1&2同時再生 https://f.msxplay.com/?id=02a58331 #MGSDRV https://t.co/1tDPCaykZP?amp=1 — Pt.Macumba (@Pt_Macumba) 2021年2月23日
opll_tuneの指定値が171以下の場合にこの仕様が発動する。F-Numberの値は344-(171-opll_tune指定値)になり、Blockが-1される。(o1の場合はオーバーフローします。) — Pt.Macumba (@Pt_Macumba) 2021年2月23日

 詳細不明ですが、回避策はあります。

machine_id の使い方が不明?違いはあるのか?問題

研究いただいてありがとうございます。m(_ _)mmachine_idについて、既存データにmachine_idを付加するツールを使った事があるのですけど、私も違いが分かりませんでした^^;MSXメーカーや機種毎にカートリッジスロット部の抵抗値に違いがありますが、抵抗値を変更するしか特効薬は無い様ですね。 — ひぽぽ(ファミコンGimmick!👍 (@koichironakaza1) 2020年7月23日
machine_idの違いがわからないのは自分だけではないということで安心しました(おぃ 機種毎の音量違いはMMLのボリューム値を変えただけではなかなか対処できないのでほんとに厄介です。なので今作っているグラディウスの曲は機種による音の違いが出ないようSCCのみで作っているのですが・・・ — ぱるぷ (@parupu_x_nagae) 2020年7月23日
machine_idの挙動について昔ain氏に聞いたことがあるんですが、MGSCでは単純にIDの記録をしているだけで、実際の音量の調整はMGSELで再生時に行っていると聞いた記憶があります。動作は3音源の最大音量を下げて調整だったかと。なのでMGSDRV単体でのプレイでは反映されない…はず(記憶あやふやです — たかを (@takawo_n) 2020年12月31日
MSXplayのチップ毎の音量バランスは実機が基準ではありません。計算が軽いバランスになっています(確かvgmplayと同じにしたはず)。ただ、FS-A1STの実機で作ったデータを再生した際に、極端に違和感がないようなバランスにはなっているはずです。 — DSA (@ym2413) 2021年1月1日
 私(nf_ban)も調査を進めていますが、今のところ machine_id に対応するアプリは MGSEL のみ、machine_id の違いを定義する仕様書の類も存在しない、という状況です。

バグではなく仕様の情報

MMLコンパイルできない場合の確認点

1行が256文字を超えるとコンパイルに失敗する・演奏されない現象が発生する

MGSDRVなのかMSXplayなのか切り分けられてないけど、コメント行が256文字を超えると、コンパイルは成功している風なのだけど演奏がされない現象が発生しますね。。。長いMMLコメントアウトしたら急に音が鳴らなくなって焦りました😅 — drm (@NudiDrm) 2021年4月7日
確か一行の文字数にコンパイラ都合の上限があるので、複数行に分ければ通るようになると思います😊 — drm (@NudiDrm) 2022年3月16日

 MSXが現役だった頃は性能不足によりテキストエディタ側が長い行に対応できないといった都合が多々あり、横80文字程度の長さで改行を入れることがマナーだったりユーザー自身がそうする癖を付けたりしたため、昨今までこのような現象が見逃されていました。

 現状は、MSXplayでは適度な長さで改行を入れることで対応してください。よろしくお願いします。

MSXplayのMMLをあえて実機でコンパイルしたときに失敗する際の注意点

#MSXplay でシェアされる #MGSDRV 用MMLをダウンロードしてMSXの実機でMGSC(コンパイラ)に通してもうまくいかないときの確認点 ①MML(テキストデータ)の終端に0x1A(EOFコード)が存在しないと正常動作しない ②MMLに「#no_mgs」が含まれると保存されない ③文字コードをシフトJISにしないと誤動作する pic.twitter.com/HwjfAVX8p9 — Takashi Kobayashi (@nf_ban) 2022年1月3日

 特にMSXplayでシェアされているMMLデータをあえてMSXの実機でコンパイルしようとした場合につまづくポイントです。Windowsでは特に気にしませんが、テキストファイルの終端を意味するEOFコード(0x1A)がテキストファイルの終端に存在しない場合は意識的に付与する必要があります。

PSG音源の「\」(¥)コマンドを用いたピッチ調整量が、音の高さに応じて変動する?

え・・? MGSDRVにおける、PSG音源の「\(¥)」コマンドを用いたピッチ調整量って、音の高さに応じて変動する??? オクターブ2のドの音を「\」コマンドで半音上げるには「96」必要なんですが、オクターブ3のドでは半分の「48」でした。
オクターブ7のドだと僅か「3」!https://t.co/lxSlYJadSe — K.H.(焼飯⁧⁨太郎) (@Yakimeshi_Taroh) 2022年2月7日
PSGの周波数のレジスタ設定値が周波数の逆数に比例するので、高い音ほど音程の精度が甘くなることが原因と推測されます。SCCはPSGとの相互運用性を重視してか、PSGと同じ周波数の決定法となってますね。 — drm (@NudiDrm) 2022年2月7日
多分、デチューンのパラメータは周波数そのものの補正値ではなく、周波数レジスタ設定値に対する補正値なのではないかと思います。下記の表6.1がレジスタ設定値の具体例となります。オクターブが上がると設定粒度が粗くなるのが分かります。https://t.co/U8G1EwODRj — drm (@NudiDrm) 2022年2月8日
これはPSGの仕様ですね 高音域ほど僅かな数値で変化してしまい扱い辛いのです — gary (@keijiro_im) 2022年2月8日

 仕様、とのこと。

移調するコマンドは存在しない

Unfortunately there is no real transpose command. But, if needed, you can change the #psg_tune and transpose the entire song (I think I remembering seeing this technique from gyabuneko) https://t.co/9WWKFE6jnw — Xyz (@XyzGonGivItToYa) 2021年5月14日

 #psg_tune はPSG音源全体の音程の元となるデータを変更する命令で、これを用いれば移調も再現可能ですが、特定のタイムラインや特定のチャンネルだけ移調するようなケースは想定されていません。

音程を数値で指定するNコマンドは存在しない

MGSDRV、移調とノート番号での音程直接指定(Nコマンド)が無いんですよね……追加して欲しいです(^^; — aro (@arohiro74) 2023年11月27日

 MSX-BASICのMMLには音の高さを0〜96の数値で表現するNコマンドが存在しますが、MGSDRVには存在しません。

SCCI(スナッチャー付属サウンドカートリッジ)に対応している?

 コナミの各種ゲームカートリッジに内蔵されていたSCC音源はチャンネル4とチャンネル5を共通の波形でしか利用することができないハードウェア仕様でしたが、「スナッチャー」の付属サウンドカートリッジ(通称:「SCCI」「SCC-I」「SCC+」)はチャンネル4とチャンネル5を独立して利用できるハードウェア仕様となっています。

 ですが、MGSDRVではSCC-Iに現状非対応です(SCCと同じ振る舞いを行います)。SCCIのチャンネル4とチャンネル5は共通の波形で動作します。今後対応できるかもしれませんが、開発機材=実物(カートリッジ)の確保が急務。

あれ?mgsdrvってSCC+の4/5チャンネルの独立音色モードって対応ってしてたっけ。なんか昔対応してない、という話になったような記憶が...。— DSA (@ym2413) January 21, 2020
MGSDRVバージョンアップするとして。MSX1を想定した件の修正と、可能ならSCC+対応(4/5チャンネルの個別音色指定)はやりたいな。あとはバグ修正だけど…ややこしいのばっかりだからなー。むぐぐ。 — ごりぽん (@goripon_tw) 2020年9月15日

 SCC-I対応を行うにはドライバの新設計が必要との見解です。現状はペンディングです。

SCC+対応、そういえば似非SCCはSCC+相当で動作してるんだっけか…。うへぇ。判定できるのかな? — ごりぽん (@goripon_tw) 2020年9月15日
4チャンネルの波形メモリに書き込んで5チャンネルの波形メモリを読んで変化があれば似非とかなら判定できるかなと考えてますが…。 — ごりぽん (@goripon_tw) 2020年9月25日
mgsフォーマット自体にフラグを持たせて、mgscに#scc_type みたいなコマンドを拡張する感じではないでしょうか。既存のデータでも誤って4/5チャンネルに別音色を指定してしまっているものがありそうな気がするので、自動判定は難しそうな気がします。 — DSA (@ym2413) 2020年9月25日

音ずれが発生する

MGSDRVのバグで1つ思い出したのは、(発生条件が判らないのですが)「1音目の発音音階が化ける(別の音になる)」というやつです。 なので、今でもMGSDRVのデータは、全chでv0のダミー発音データを入れてます。 MSXplayの「Arabiyaan」にも入ってるw https://t.co/hbhre3y9G0 https://t.co/jtIlJiiwo1 pic.twitter.com/of5MZ7JkI7 — Wiz.@「ペンゴ!オンライン」2曲「キャラバンブーマー」1曲作編曲担当 (@WizardOfPSG) November 17, 2019
あー…想像以上にずれてますね。 流石にこれはMGSDRVのバグっぽいですね。 他にもいくつかバグがあったような。 https://t.co/zWQFTcM8a1 — Wiz.@「ペンゴ!オンライン」2曲「キャラバンブーマー」1曲作編曲担当 (@WizardOfPSG) November 17, 2019
いやぁ…どうでしょう?w 拙者は音を敷き詰めて曲を作るタイプなので、メロだけ浮かせて静かな音色でモーフィング掛けると目立つ…のかもしれません。 もしかすると、MGSDRVの作者の方が、何等かの対処をしてそうな気もしますが。 https://t.co/pcwrvxh9UC — Wiz.@「ペンゴ!オンライン」2曲「キャラバンブーマー」1曲作編曲担当 (@WizardOfPSG) November 23, 2019
Webの「MML Editor」に読み込ませた.MUSの演奏時間を拡張するコマンドがあったのか!MGSCの取説に載ってなかったような?やり方は、.MUSの冒頭に「;[duration=600s]」を書き込んでコンパイルすると、演奏時間が600秒に拡張される。コマンド内の「600s」の値を変更すれば、任意の演奏時間に変更可。 https://t.co/mznphNGJNh — ぎゃぶねこ (@gyabuneko) December 4, 2019

E+ と E が同じ音階になる

 一般的にMML表記の「E+」は「F」の音階または相当の音階になるようですが、MGSDRV(MGSC)では「E」になります。方言となりますのでご注意ください。

ぎゃー24行目に打込みミス発見・・!CDE [[BAEF+4E+4B] [AG+F+D4F+G+A]] [BAEF+4E+4BAG+F+D4F+G+A] 「E+4」の部分がそれです。幸い、音自体は「E」の音で鳴ってくれてました。てっきり「F」音が鳴るものと・・焦った~ — K.H.(焼飯太郎)@モーメントに作品まとめてます (@Yakimeshi_Taroh) October 15, 2020
厳密に言うとMGSDRVではなく、MGSCの仕様と思います。基本的には E+ = E で扱われることはないと思います。E+ = F で演奏するか、E+ と F を微妙に違う周波数で演奏するかは、調律や楽器によるかなと思います。 — DSA (@ym2413) October 16, 2020

ポルタメントの直後にオクターブコマンドを書くと違うポルタメントが演奏される

[その7] o5c_o6c のようにポルタメントの直後にオクターブコマンドを書くと、o5c→o7cへのポルタメントが演奏されてしまいます。_コマンドから次のノートまでの間のoコマンドが+1して解釈されてしまうっぽい。https://t.co/EN9umE0QBD — DSA (@ym2413) 2020年7月20日

多重ループ(ループの入れ子)が誤動作する

MGSCはどうもループの入れ子が深いと誤動作するようです。以下は5重ループでおかしくなる例 #MSXplay #MGSDRV https://f.msxplay.com/rUaFKvmOCZKj 多重ループあまり使わなかったので、気がついておりませんでした。 — DSA (@ym2413) 2023年11月6日

 どこまで深く入れ子にすると誤動作するのかはよく分かっていません。ご注意ください。

@eコマンドに関する事象

@eエンベロープで音色を切り替えると音がおかしくなる現象

 MGSDRVの @e コマンドは「現在の音色にエンベロープをコピー」という意味です。 @ コマンドで一度も音色を指定していない状態で @ e コマンドを使うと、音が出なかったり変な音が出たりします。

 特に曲の冒頭で音がおかしくなる場合が目立つのは、キーオンから @e が適用されるまで一瞬だけ別の音色が適用されているから。バグとも言えるかもしれませんが、ver.3シリーズにおいては仕様となります。

MGSDRV、@ e エンベロープで音色を切り替えると特に曲の冒頭で音がおかしくなることが多いですが、これはキーオンから @ e が適用されるまで一瞬だけ別の音色が適用されているからです。 — DSA (@ym2413) February 18, 2020
英語では何度かツイートしましたが、MGSDRVの @ e コマンドは「現在の音色にエンベロープをコピー」という意味です。 @ コマンドで一度も音色を指定していない状態で @ e コマンドを使うと、音が出なかったり変な音が出たりします。 — DSA (@ym2413) February 18, 2020

@コマンドで一度も音色を指定せずに音を鳴らすと最初の1音だけ「ビ〜〜ッ」っという謎の音が入り、以降の音は鳴らなくなる現象

 エレキベースの音が一瞬鳴った後、空のユーザー定義音色(すべての音色パラメータが0)に切り替わったことによって出る異音、とのこと。発音前に音色指定を必ず行ってください。

重箱の隅をひとつ。MGSDRVは一度も@コマンドで音色を指定せずに音を鳴らそうとすると、最初の1音だけ「ビ〜〜ッ」っという謎の音が鳴ります。それ以降の音は鳴りません。この最初の1音は一体なんの音でしょうか(続)https://t.co/5Ef76dRFJ3 — DSA (@ym2413) 2021年3月3日
実はこれ、エレキベースの音が一瞬鳴った後、空のユーザー定義音色(すべての音色パラメータが0)に切り替わったことによって出てしまった音です(続) — DSA (@ym2413) 2021年3月3日
結果としてエレキベースから→音色番号0番へのキーオン中の音色切り替えが発生します。この時点では、音色番号0番はADSRがすべ0初期化されたユーザー音色になっています。したがって、本来、何も音がでないはずですが、アタック部分だけ一瞬エレキベースになるので音が出てしまうのです(続) — DSA (@ym2413) 2021年3月3日
さて1音目はこのようにして音が出ましたが、2音目以降は、キーオン前から1音目で指定された音色番号0番になっています。したがって音色の切り替えは発生せず、何も音がでない、というわけです(終) — DSA (@ym2413) 2021年3月3日

@コマンドを指定せずに @eコマンドを利用すると演奏結果が不定になる

これは @ コマンドを指定せずに @e コマンドを使うと、演奏結果が不定になる(環境によってどんな音が出るか分からない)という現象ですね。MGSDRVの仕様です。この曲のイントロについては353行目から360行目の @e コマンドの前に @ コマンド(例えば11番あたり)を入れてやると直ると思います。 - DSA (@ym2413) 2021年3月2日
確かに、cpu=1にしたら、正常に鳴りました!Σ(´∀`;) という事は、実機MSXターボRの高速モードでそのMGSデータを実行しても、同じような現象が発生しますか? — ぎゃぶねこ (@gyabuneko) 2021年3月2日
今手元に確認できるターボRがないのですが、おそらく発生するのではないかと思います。なので、@ コマンドを @e コマンドの前に記述する対策の方がおすすめです。 — DSA (@ym2413) 2021年3月2日

@eコマンドを適用すると他の場所で@eコマンドが適用された状態になるときとならない時がある

[その1] ある場所で @e コマンドを適用したFM音源音色は他の場所(他のチャンネルでも) @e コマンドが適用された状態になるときとならない時がある。https://msxplay.com/?open=d03cba3a6f3fddb211fcba0d2862f6fe70cf13b3 — DSA (@ym2413) 2020年5月5日

@eコマンド内で一切音量定義を書かずにループ終端コマンドをつかうと演奏時にドライバがハングアップする

[その2] @eコマンド内で一切音量定義を書かずにループ終端コマンドをつかうと演奏時にドライバがハングアップする。 — DSA (@ym2413) 2020年5月5日

どのFM音源音色に@eコマンドを適用したかによって発音される音色が微妙に異なる

[その3] @eコマンドの先頭でFM音源音色を切り替えると、どのFM音源音色に@eコマンドを適用したかによって、発音される音色が微妙に異なる。理由はドライバの内部的に一瞬だけ、@e の処理が始まる前に、そのチャンネルに設定されたFM音源音色が有効になる期間があるため。 — DSA (@ym2413) 2020年5月5日
...これはMGSDRV側で発音前に@eコマンドの中身を先読みしないと回避できないので、実装コスト的にあえて無対策という気がします(ここを変えると過去とのデータの互換性も失ってしまう)。 — DSA (@ym2413) 2020年5月5日

@eコマンド内でFM音源音色を切り替えると音が違うことがある

[その4] @eコマンド内でFM音源音色を切り替えると、発音タイミングによって稀に音が出なかったり、違う音色が出てしまうことがある。YM2413のエンベロープがちょうどAR→DRのように遷移するタイミングで@eコマンドの処理が重なると発生する。 — DSA (@ym2413) 2020年5月5日
... 要するに@eコマンド内で発音中に音色切り替えを行うと、発音が安定しないことがありますが、チップの内部処理まで含めて考えると、まぁそうなるよね、という感じです。割り込み1/60ベースのドライバで意図通り制御するのは難しいので、技術的な制約ですね。 — DSA (@ym2413) 2020年5月5日

FM音源:曲の先頭、休符の直後、音色切り替え直後の1音だけ違う音色になってしまうことがある

[その5] FM音源で、曲も先頭、休符の直後、音色切り替え直後の1音だけ違う音色になってしまうことがある。これは YM2413 のチップのバグ(と言い切ってしまおう)です。キーオフ時の消音機能の実装がハード的にぶっ壊れているためです。詳しくは、https://t.co/uwSWhuUyyP — DSA (@ym2413) 2020年5月5日

FM音源:「9音リズムモード」でHチャンネルの音量が全く反映されない

試行錯誤して、9音リズムモード (FGHチャンネルにリズム使用) で、Hチャンネルに音量が全く反映されていない事に気づいた。多分、ハードウェア的な仕様だよなぁ。でもなぜかソフトエンベロープ(@e)指定だと、固定の音量に下がる挙動になる不思議。多分、v と@eで内部処理が違うんだろうな。#MGSDRV — たかを (@takawo_n) 2021年2月23日

 本来設定できない「9音リズムモード」。特殊な環境なのでバグなのか仕様なのか分かりにくいのですが、OPLLの仕様のようです。

レジスタ構成の関係でHチャンネルはvがシンバルの音量、音色番号がタムの音量(14,13,12...,0,15の順で音が大きくなります)になります。例えば H y14,32 q8 v8@14 c4 でシンバルが音量8、タムが音量0で鳴ります。G チャンネルだとvがスネアの音量、音色番号がハットの音量になります。 — DSA (@ym2413) 2021年2月23日
作る側の夢としては、9音リズムモードなる opll_mode 2 を用意してもらって、そのモードではFGHチャンネルのリズム音源に指定したMMLが思い通りに音に反映される動作…という感じになるのでしょうか — たかを (@takawo_n) 2021年2月23日

 こちらは新バージョンへの要望。

SCC音源:最初の1音をオクターブ1の g から始めると正常なオクターブで音が出ない

[その6] これは実機では未検証で、もしかすると msxplay 側の不具合かもなのですが SCC音源チャンネルで、最初の1音をオクターブ1の g から始めると正常なオクターブで音が出ません。サンプルこちらなので、どなたかお試しいただけると…。https://t.co/hudF9QAAVg — DSA (@ym2413) 2020年5月5日

SCC音源:音色定義が32種類までしか持てない

MSX研鑚推進委員会さん (@mdpc___) の WAVE_SCC を使って例のボイスを鳴らしてみる実験。ダディダ~ これは……とんでもなく凄いツールが世に放たれてしまったのでは…?🤩 pic.twitter.com/njJhH0y65h — たかを🎯 (@takawo_n) 2024年2月6日
音色定義の少なさは痛いですよね。せめて倍あれば… そこは似たような音色は端折るなりして、工夫で乗り切るしかないですね👍 少なくとも私には需要ありまくりですよ~!素晴らしいツールをありがとうございます😊 — たかを🎯 (@takawo_n) 2024年2月6日

 SCC音源の音色定義に割いているメモリ容量は1音32バイトで、計32種類(1KB)も定義できれば十分かと思われていましたが、まさか32種類以上の音色を定義したくなる日がやってくるとは…

半角スペースの入れ方に注意

ちょいと所用でMGSDRVをいじってるんですが、「音階と音長の間」の半角スペースは無視されるけど、「マクロ種別と数値の間に半角スペースを入れるとエラーになる」のね…知らなかった。例)〇a8〇a 8〇*b8×*b 8…って、こんな書き方しようとしてるのは拙者だけかもしれませんがw — Wiz.@「ペンゴ!オンライン」2曲「キャラバンブーマー」1曲作編曲担当 (@WizardOfPSG) 2020年12月6日
MGSDRV自体はコンパイルされたバイナリデータを再生するので、どちらかというとMGSCの仕様ですね。MGSCもソースが失われていて復旧もされていないので手を加えられないのですよ。 https://t.co/PnLQ1eFXX1 — ごりぽん (@goripon_tw) 2020年12月7日
 twitter@Wiz.さんの報告。「音階と音長の間」の半角スペースは無視される、マクロ種別と数値の間に半角スペースを入れるとエラーになる。バグとも言えるかもしれませんが、ver.3シリーズにおいては仕様となります。

MGSCNV: ver.2→ver.3への変換の違いについて

ver2をver3にツールで自動変換した.mgsファイルを、MSXplayの逆コンパイル機能で変換したMMLを解析してみたのですが、違いがあったのは・・・・データの冒頭で「machine_id」と「alloc」が追加されている・テンポが1/2になっていて、MMLの音長も1/2にされている続きます — ぱるぷ (@parupu_x_nagae) 2020年7月23日
検証に使用したファイルも自前のレンタル鯖に置いておきますね。ver2のBASICファイルhttps://t.co/TCWPNj2dcrver2をver3に自動変換して、MSXplayで逆コンパイルしたテキストhttps://t.co/l1CJ99vwbY — ぱるぷ (@parupu_x_nagae) 2020年7月23日
 変換後のテンポと音調が1/2になるのはバグとも言えるかもしれませんが、ver.3シリーズにおいては仕様となります。

プライマリのマッパーRAMへしか常駐できない?

MGSDRV ですが、PrimaryMemoryMapper にしかインストールできないみたいですね。プライマリを消費し尽くしてから常駐させて、MGSPから曲を読み込んだら、漢字RAMのときと同じ理由で死ぬかなと、テストを試みたのですが、そもそも MGSDRV がプライマリしかダメでした (^^;#MSX #MGSDRV — HRA! (@thara1129) October 19, 2020
常駐部分の簡略化とスロット切替のコストを嫌ってのことですね。基本的にDOS2でマッパ使って常駐するものには要プライマリマッパってのが多いような? https://t.co/YWxDBHOJIo — ごりぽん (@goripon_tw) October 19, 2020
 各種拡張メモリカートリッジをスロットに差すような「マッパーRAMが複数ある状態」の場合でも、MGSDRVではプライマリのマッパーRAMでしか常駐できません。turboR規格の場合は本体内蔵RAMが自動的にプライマリになります(A1ST 256KB、A1GT 512KB)。

任意のアドレスへ移動(リロケート)ができない?

制作しているメガROMゲームにMGSDRV実装案もありまして、自己書き換えやっているのでRAMのどこに置いたらいいかと、PAGE1ですかねぇ・・・? — むらかたとうじ/村方凍二 (@ipheion78) 2020年12月7日
mgsdrv.com を丸ごとROMにおいて、+0010h~(だったかな?)を RAMのpage1の 6000h~ にコピーして使えばよいと思います。そこにおかれる前提でアドレスが設定されてるので。 — HRA! (@thara1129) 2020年12月7日
元々がPage1(確か6000h~)で動作しているのでリロケートしないと他には置けないですね。ドライバのサイズは8KB上限と定められていたかと思いますが…ワークRAM込みだったかな?やっぱりROM組み込める版が必要か…。 — ごりぽん (@goripon_tw) 2020年12月7日
仕様書を見ると、一時期 MGSDRV.REL というものが公開されていて、それは L80. COM でアドレス再配置できたようですが、いまはCOMしか見あたらないので 残念ながら6000h固定ですね😅4000h~5fffhは自由に使って良いようです。 — HRA! (@thara1129) 2020年12月7日
以前はMGSDRV.RELが公開されてたのか。まさにMGSDRV.REL公開できないかなと考えてたところなので…仕様書読んでみるかー。 — ごりぽん (@goripon_tw) 2020年12月7日
 MGSDRV本体はリロケータブルではありません。ただし過去にMGSDRV.RELというファイルがパソコン通信ネットで流通していて、MSX-L80を用いて再構成することで任意のアドレスへ移動が可能だったようです。

 当クラブではMGSDRV.RELを入手および管理していません。もし今でも関連ファイル・アーカイブをお持ちの方がいらっしゃいましたらぜひご連絡ください。

管理者は見ている

2桁年ぶりにMGSDRVをバージョンアップするかもと言う話になってるんだけども。最新版って3.20で合ってるよね?(汗)(苦笑)何せ2桁年経ってると手元の物が最新かどうかも微妙なうえ、もうちょっとバージョンが上がってたような気もするので…。 — ごりぽん (@goripon_tw) September 14, 2020

MGSDRVのトップページ → https://www.gigamix.jp/mgsdrv/