じぇみに広野氏が語るコンパイル製サウンドドライバの話

元コンパイルの開発者、じぇみに広野氏(@jeminilog/@kopandacco)が語るコンパイル製ゲームソフトのサウンドドライバに関するツイートをまとめました。
27
じぇみに @jeminilog

PC-8001版モンスターパニック(誰が知ってるんだそれは)の作者。FC版ルナボール、ZANAC、PCE版ガンヘッド、スーパーアレスタ、海外MS版パワーストライク2等のプログラマー・・・って昔のばっかで最近コレってのがないのはどうなん。このアイコンはコンパイル時代のHDDから掘り出したんだけど描いたのダレでござるか。

ぱんどら @kopandacco

趣味はPCのジャンクいじり。組んだりバラしたり壊したり(おい)エロねたもRTするのでフォローしてくださる方はご注意を。絵描きは最近復活したけど技量的にはうんまあほら。ですのでこの可愛いアイコンはのとすさん(https://t.co/5AtdySPD9l)制作なのです。


ぱんどら @kopandacco

そういえばそろそろ時効だと思うが、コンパイルのサウンドドライバーの元ネタはおそらくセガ。ごく黎明期のは判らないけど、ハッスルチューミーくらいからのはセガのをお手本に作ってあるはず。

2014-07-23 12:10:22
ぱんどら @kopandacco

もちろんセガの業務用のは見た事ないので、SG-1000用とかが元ネタじゃあるまいか。で、C-SOあたりでそれを自社用に改修し始めた。やったのはなぜか私。音楽の知識とかなかったんだが、その前にタイマ割り込みで動く、MZ80K用のサウンドドライバーもどき作った流れかね?

2014-07-23 12:10:30
ぱんどら @kopandacco

以後、Midiや生音の時代になるまで、ほとんどのサウンドドライバーを担当した。しなかったのはPC-9801系と、あとネオジオポケットも、お仕着せのドライバ以外使う事まかりならんと言われて、謎仕様の物を使わされた。

2014-07-23 12:10:38
ぱんどら @kopandacco

ネオジオポケット版でボイス有りにするとBGMが消えるのはそのドライバーの仕様。実際は共存できたんだけど、サンプリングとBGMの切れ目でノイズが入る可能性があるから禁止と言われた。最初からそういう使い方を想定して設計しておくべきだと思うんだがどうか。

2014-07-23 12:10:45
ぱんどら @kopandacco

SN76489を2個積んでるので最大8CH鳴らせそうなのに、4CHしか鳴らせない謎実装とかも良く判らん。正直、パッと見にはいいのに、細部が色々残念な機械ではあった。面白そうなCPUだったのに。

2014-07-23 12:10:54
ぱんどら @kopandacco

実は武者アレスタも私のドライバじゃないけど、あれはまあ差に気付く人いないと思うからいいとして(データレベルで互換あったし)

2014-07-23 12:11:02
ぱんどら @kopandacco

ところでMSXあたりだと顕著なんだけど、あの時代の家庭用の機械って3CHとか4CHしか発音数がない。(そう考えると曲がりなりにも5CH発音できたファミコンはやはり化け物だな)その乏しいCH数から更に効果音に持っていかれると、BGMはとてもチープになってしまう。

2014-07-23 12:11:10
ぱんどら @kopandacco

だから逆に、BGMは3音使う前提にして、効果音が鳴る時はそのうち重要度の低いパートを受け持つCHを持って行っていまう、という発想をした人はかなりいると思うし、私もやった。

2014-07-23 12:11:17
ぱんどら @kopandacco

ただ最初は、優先順位の低い部分をまず演奏させ、優先順位の高い音でそれを上書きする手法をとった。3D描画で例えるとZソート法。この方法は時間経過で音が変動しないPSG類ならあまり問題はないが、FM音源やサンプリング音源だとまずい。

2014-07-23 12:11:25
ぱんどら @kopandacco

そういう音源は、発音開始したらそのままにしないと駄目で、上書きとかできない。だからのちに、優先順位の高いパートから演奏させ、それに隠れる優先順位の低い部分は音の出力をさせない方式に切り替えた。さっきのたとえで言うならZバッファ法

2014-07-23 12:11:34
ぱんどら @kopandacco

手法を変えたのはガンヘッド以降。ガンヘッドまではZソート法だったので、優先順位で負けているパートがサンプリング音だった場合、ちょっとだけ鳴ってしまう。ガンヘッドでハイスコアなどファンファーレが鳴ってる時にプツプツと音が混じるのはそれが原因。

2014-07-23 12:11:44
ぱんどら @kopandacco

あと、元々音楽をやってる人間じゃなく、Midi等知らないが故の不足点もあった。音を弄る機能はあったが、いちいち個別のパラメーター設定が必要だった。それをまとめた「音色」という概念があれば、もっと扱いやすかったと思う。

2014-07-23 12:11:53
ぱんどら @kopandacco

ADSRの概念も最初は無かったし、やや無理矢理後から実装したけど、これも「音色」で制御できれば良かったんだろうな。まあ、今だから思いつく事ではあるんだが。って訳でそろそろオチもなくおしまい。

2014-07-23 12:12:01
ぱんどら @kopandacco

ちょい補足。ネオジオポケットがSN76489を2個積んでるのに、4CHしか音を出せないってどうなってるのかという件について。SN76489の仕様は理解してる、と言う前提で説明すると、まず1つ目は、ノイズ以外の3チャンネルが出力され、ノイズ出力は殺されてる。そして(もづく)

2014-07-23 13:38:36
ぱんどら @kopandacco

(もづき)2つ目はトーンが全部殺され、ノイズのみ出力。モード3(トーン部のCH3の出力をジェネレーターに使うモード)でしか使わない想定になっている。2個目のSN76489は、ノイズを音程可変にするためだけに丸々使われている。

2014-07-23 13:38:46
ぱんどら @kopandacco

誰だこの仕様を提出したのは。そんな事しなくて、両方の出力を全部使えるようにして、ノイズで凝りたい人は自主的にトーンを1つだけ潰す事にすれば良かったんじゃないでしょうか。そうしちゃまずい理由は何?

2014-07-23 13:38:54