kuma4649 / mml2vgm

GNU General Public License v3.0
105 stars 10 forks source link

huc6280 files don't play properly when using MAME #128

Closed musicalman closed 2 years ago

musicalman commented 2 years ago

こんにちは。 huc6280チップを使用した場合、MAME上でvgmファイルが正常に再生されません。具体的には、MAMEコアをvgmplayで使用しようとしています。 MAMEが最も正確なエミュレーションだと聞いているので、できればそれを使いたいのです。 サンプルは再生されますが、ウェーブテーブルが正しく読み込まれないようです。 MAMEは他のvgmファイルを問題なく再生するので、これはmml2vgmのバグか、私が何か間違ったことをしているかのどちらかだと思います。 今はまだ他の情報を持っていないのですが、何か分かったらお知らせします。 以下はその例です。 http://www.fileconvoy.com/dfl.php?id=g532774092240114f1000407679743905e8a915d78c

kuma4649 commented 2 years ago

すみません、症状をもう少し具体的にお願いできますでしょうか。。。

・出力した.vgmファイルをvgmplayで再生しようとしたら、出来なかった? いただいたファイルを再生したところ、mml2vgmでもvgmplayでもMDPlayerでも大きな違いは無いように聞こえました。 微妙な差であれば、そこがわかるように説明お願いしたいです。。。

musicalman commented 2 years ago

もっと情報がある! Vgmplayには、huc6280用のコアが2つあります。OotakeとMAMEです。 Ootakeコアは動作しますし、MDPlayerも動作します。 しかし、MAMEコアを使用すると、無音が聞こえます。 vgmripsのフォーラムでこのことを質問し、回答を得ました。どうやら、mml2vgmはMAMEコアが苦手とする方法で波形データを送っているようです。 私が得た返信をお見せします。英語にしておきます。

It looks like the MAME core doesn't like how the VGM sets up the channel: Code: 0x000003A9: B9 00 00    HuC6280:   Select Channel 0 0x000003AC: B9 04 5F    HuC6280:   Channel Control: Disable, DDA Mode Enable, Volume 0x1F = 100% 0x000003AF: B9 06 10    HuC6280:   Channel Waveform Data: 10 0x000003B2: B9 06 11    HuC6280:   Channel Waveform Data: 11 0x000003B5: B9 06 12    HuC6280:   Channel Waveform Data: 12

The VGM enables "Direct D/A mode" and turns the key off, then loads the instrument.

• MAME core: outputs what is written to register 6, does NOT set the waveform buffer (because of DDA mode) • Ootake core: output what is written to register 6, does load the waveform buffer (the condition is "is channel turned off" while MAME checks for DDA mode)

kuma4649 commented 2 years ago

つまり、音色設定の方法を修正すればMAMEcoreのほうでも発音できるようになるということでしょうか?

そして、チップ本来の動作として正しいのはどちらでしょう?MAMEcore? or Ootake?

musicalman commented 2 years ago

MAMEcoreがチップの正しい動作であることは、かなり確実です。 というのも、mml2vgmで生成されたファイルにのみ問題があるからです。 他のvgmファイルはどのプレイヤー(MAMEcore、Ootake、MDPlayerなど)でも問題なく動きます。 私は残念ながら、トーンセットアップに必要な変更を理解していません。必要であれば、他の人がさらに説明してくれるでしょう。

kuma4649 commented 2 years ago

TAG574をリリースしました。お試しください♥

musicalman commented 2 years ago

ほぼ動作しています! 唯一の問題は、パートH2がMAMEcoreで音を出さないことです。 例えば '@H0,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 'H2 T126 o4l4@0cdefgab>c

kuma4649 commented 2 years ago

あれれ...どうしてだろう...

kuma4649 commented 2 years ago

MAMEcoreでも発音できましたよ? 私の使っているvgmplayのバージョンが古いのかな

kuma4649 commented 2 years ago

バージョンが古かったみたいです。最新のものを使用したところ現象が再現しました。

TAG575で対応しておりますのでご確認ください。 原因としては、演奏開始直前の初期化コマンドに問題があったようです。

musicalman commented 2 years ago

ありがとうございます!直りました。 もうひとつ小さなことですが、MAMEcoreではトーンアルペジオがパチパチと音を立てて歪むのが気になります。 sample/HuC6280/testCommandArpeggioHuc6280.gwi で聴くことができます。 古いバージョンのvgmplayではこの歪みはありませんが、最新バージョンではあります。 これはMAMEcoreの動作であり、mml2vgmとは関係ないと思うのですが、気になるのでとりあえず書いておこうと思いました。

余談ですが、MAMEcoreはかつて思っていたほど正確なものなのだろうかと思うようになりました。 前述したような歪みがあるので、あまり使わないかもしれません。また、HardLFOにも未対応です。 それにしても、時間を割いていただき、ありがとうございました