QUASI88 - PC8801 Emulator

QUASI88のサウンドについての補足 (いいわけ)

  QUASI88 のサウンド出力機能 (以下、サウンドドライバと呼びます) は、mame/xmame (以下、xmame と呼びます) から移植されています。xmame のサウンドドライバ部分を切り出して、強引に QUASI88 と結合させることにより、xmame 相当のサウンドが鳴るようになりました。

  もっとも、xmame のサウンドドライバは当然 xmame 自身で使うように設計されているため、これを強引に QUASI88 で使うようにした結果いくつかの不具合が出るかもしれません (し、問題ないかもしれません)。なので、QUASI88 のサウンド出力がおかしいからといって、xmame のサウンドドライバがおかしいということにはなりませんので、悪しからずご了承ください。

  特に、サウンドのテンポについては完全に QUASI88 側で制御していますので、xmame ではサウンドのテンポがまともなのに、QUASI88 ではおかしい、なんてことはよくあると思います。


  さて、QUASI88 が xmame のサウンドドライバを最初に移植したのは、ver 0.3.0 (リリースは1999年8月) の時です。相当前のことですね。当時の xmame は バージョン 0.36b1.2 でした。この時は YM2203 (サウンドボードI) 関連の部分だけを移植しました。

  その後、xmame のほうはどんどんバージョンが上がっていきましたが、QUASI88 のサウンドドライバのほうはあいかわらずそのままでした。最新のに追従するのが面倒だったからです。x_x;

  でもさすがに最初のサウンドドライバの移植から3年以上が経過しており、このままではいかんじゃろ、ということで再び最新の xmame からサウンドドライバを移植することにしました。結果、QUASI88 の ver 0.5.0 では当時最新の xmame バージョン 0.61.1 のサウンドドライバが組み込まれました。この時の xmame の YM2608 はリズム音が鳴らなかったのですが、リズム音が鳴るように勝手に改造しました。ただし、リズム音の音源用のWAVファイルが必要です。


  しかし、このバージョン (QUASI88 ver0.5.0)、どうもサウンドの出力がいままでとは違うのです。
気づいたのは以下の点。

  1. YS2 のオープニングのサウンドがなんかおかしい。
  2. ゲームアーツのゲームでよく使われている音声合成の出力がフェードアウトしてしまう。

うーん、なんでだろ ??? 以前 (xmame バージョン 0.36b1.2あたりからの移植) ではそんなことはなかったのですが………。


  その後も、xmame はバージョンアップを繰り返しバージョン 0.65.1あたりからは、YM2608 のリズム音も鳴るようになりました。リズム音の音源用の WAVファイルなども不要です。さっそく、QUASI88 ver 0.5.1 で、このサウンドドライバを移植しました。しかし、それでもやっぱりサウンド出力の感じがおかしい。

  1. ALPHA の銃を撃つアニメの時の、銃の発射音がしょぼくなっている。

うーん、困った。


  そうこうしている間に xmame はバージョン 0.71.1 になり、ADPCM周りのコードが書き換えられました。これを QUASI88 ver 0.5.2 で取り入れようとしたところ、さらに以下の点に気づきました。

  1. 蒼き狼と白き雌鹿 ジンギスカン のオープニングの音声がめちゃくちゃになっている。

だんだんと収拾がつかなくなってきた…


とりあえず過去のxmameのFM部のソースと比較しながらいろいろとソースをいじってみました。
結果、

  1. については、FM音源とPSG音源の出力レベルのバランスが問題ではないかと思います。それぞれの出力レベルをいじると、問題なさそうに聞こえました。なのでデフォルトの出力レベルを、FM音源 = 100%、PSG音源 = 20% にしています。

  1. については、xmame バージョン 0.36b1.2 の頃のソースでは、音声合成モードの時になにやら例外処理らしきものがあったので、それを組み込んでみたら、とりあえずフェードアウトはしなくなりました。

  1. については、xmame バージョン 0.62.1 時点でのソースと、キーオンした時のワーク初期化処理が若干異なっていたので、おなじようにしてみたらとりあえずちゃんとなるようになりました。

  1. については、ADPCM処理のワーク初期化を適当にいれてみたらなんとか直りました。

というわけで、最新の QUASI88 ver 0.5.2 では、xmame 0.71.1 をベースに、何個所か手を加えています。
もしかするとこれにより、他でおかしなサウンドが出てくるかもしれません。


  ちなみに、QUASI88 ver 0.5.3 以降では、あの有名な fmgen も組み込んであります。(起動時のオプション -fmgen で fmgenが有効になります)。 fmgen を使う場合は YM2608のリズム音の音源用にWAVファイルが必要となりますが、xmame よりも音質がいいという話です。
  もっとも、作者の貧相な耳では劇的な違いは分からないです…… x_x。fmgen は C++ 言語でかかれているのですが、作者は C++ を知らないため、もしかすると実装に間違いがあるかもしれません。(というか、すでにちゃんと音がでていない箇所が見つかってしまった……どうしよう……またそのうちに直しておこう。)