元コンパイルの開発者のつぶやき

知ってる人は知っているが、メガドライブのサンプリングはすべからくダミ声だ。
主原因は、サンプリングデータの再生速度が不安定だから。
一定間隔で再生すべきデータが時々遅延するために波形がひずみ、ダミ声化する。
これは再生がソフトウエアだから、でもある。

ソフトウェア再生でも、再生速度が安定していれば音質は維持される。
PCエンジンは6992Hzのタイマ割り込みを使っているので、その速度で再生するぶんには割とキレイ。
メガドライブは、サンプリング再生に使えそうな割り込みをなぜか1つも持っていない。
FM音源にはちょうといい感じのタイマーもあったが、割り込みに入っていない。
なんか設計上の理由があったんだろうか。

ではどうするかというと、逆にサンプリング再生にCPUを100%使う。
幸いメガドラにはCPUが2つあるので、68000はゲームを担当、Z80がサンプリングと、分業すればいい。
しかも68000とZ80はうまいことバスを使い分ける前提でハードが設計されている。
だから本来、Z80はサンプリングに専念しても支障はないし、事実させる事が多い。

そうは問屋がおろさないのが68000側。実はバスを使い分ける前提で設計はされていたものの、
実際の実装では68000側のメモリ空間での特定の操作をする時だけは、Z80と衝突する可能性がある。
特定の操作ってのは、一部のアドレスへのアクセス、及びDMAの動作。
だから68000側は、それに抵触しそうな間だけは、Z80を強制停止せざるを得ない。
その期間はサンプリング再生が止まるので、長ければ長いほど波形が歪み、どんどんダミ声化していく。