クララが立った!ゼクセクスが鳴った!

http://www2s.biglobe.ne.jp/~tns/nr650110.html
先日書いたNSFプレイバックカートリッジの続報です。
先ほど、作者の方から連絡がありまして、私が作ったNSFが鳴らない理由が判明しました! 結論から書きますと…


・演奏がおかしいデータは$4003がReadできることを期待しているらしい?
が正解。 元祖MCK&mckcで作ったデータは、本来 Write only である $4003 のレジスタを Read してしまう仕様らしく、通常のファミコンだとこの部分を read した場合に不定値が返る為、正常な演奏ができないんだそうです。 従って、対処は現在のMCKコンパイラの最新版「ppmckc」でコンパイルすること。 これで $4003 を Read することがなくなるので、正常な演奏になるらしいです。 とりあえず、検証用に作者の方にコンパイルしていただいたXEXEX1面のデータだけ置いておきます。 実はまだ新しいマシンにMCK環境を作ってないんですが、ppmckc環境ができたら早速リコンパイルしてみたいと思います。 …やっぱり、PogoShellで聴けないのもコレが原因か??
んで、何で N-LINE AT では演奏できたのよん?という理由ですが、どうやらディスクシステムは $4003 を Read した際の挙動が違うらしく、不定値は返さないらしいです。 なるほど…納得。
そういや、MCKも良いんですが、quad氏の音源ドライバも是非試してみたいですねぇ。 …というか、暇があればそちらのMMLコンパイラも作ってみたいなぁ。