細かな話題
目次
VDP2のプログラム
VDP2 は、背景やグラフィック、VDP1 の作ったスプライトなどを重ね合わせ、表示画面を作るためのプロセッサです。
VDP1と比べれば、VDP2は「プログラム可能」と言うほどではないかもしれません。
普通に、キャラクタ定義して、そのキャラクタをどう並べるのかを指定すれば画面が表示されます。
画面の解像度を決めたり、表示できる色数のモードを決めたりと言うのもよくある機能でしょう。
でも、以前に書いたように回転画面を使ったり縮小機能を使ったりすると、「特別なRAMアクセス」が必要になりました。ここら辺のタイミングはユーザーが指定する必要があります。
また、ある機能に必要なタイミングを指定すると、別の機能に必要なタイミングが得られなくなります。どの機能を使うか、よく考慮して決定する必要がありました。
ほかにも、背景として使用する枚数とか色数により、1枚の背景に必要なメモリ量は変わります。
キャラクタの定義や背景の配置定義に必要なメモリを、VDP2 の VRAM のどこに配置するか、などもプログラマが指定する必要がありました。
こういう部分に頭を使う必要がある…というのは、結局「プログラム可能である」ことになります。
メモリの使い方に大きな変化が出るたびに、新たな紙にメモリの割り当てを書き記しておくの。これやらないと、何が何だか分からなくなることあったから。
必要なメモリは、画面の解像度や色数、使いたいキャラクタの量などで刻々と変わります。
ゲームのプランナーの意見、グラフィックデザイナーの意見を聞きながら割り振りを調整するのは、パズル的でなかなか面白いものでした。
音関係のプロセッサ
音源チップ
ヤマハのものですが、サターン専用に設計されたものです。FM音源をエミュレート可能なサンプリング音源でした。
FM 音源として使う場合は、OPM 互換…を目指していたようです。X68k でも使われた奴です。4オペレーター、8声同時発音ですね。
でも、実際には OPM の音色パラメーターは使えなかったそうです。あくまでも「エミュレート」で、FM音源のパラメーターチューニングは微妙なものなので、完全再現は出来なかったんだって。
サンプリング音源として使用する場合には オペレーター1つが「1音」を発声できます。
エミュレート時に4オペレーター×8声なのだから、サンプリング再生なら32音が使えると言うこと。
FM音源としては、エミュレートが不出来な上最大8音。それに対してサンプリングなら32音も出るのなら、皆サンプリングを使いたがります。
でも、その割にはメモリが 512KByte しかなくてサンプリングメモリが足りない…と言う問題はあります。
これ、設計時には FM音源エミュレート機能を中心に使い、サンプリングはアクセントに、という想定だったそうです。
まさかエミュレートが完璧でないなんて、その時には思いもしなかったって。
(音源部分のメモリ容量の決定に関与した人に聞いたことがあります)
大抵はサウンドは専門の人が作ります。僕はプログラマだったので完成したデータを受け取って組み込んだだけでしたが、音楽自体「プログラム」ですよね。限られたメモリで、一定の決まりを守って作らないといけない。
2017.09.05追記
上の部分、音源チップが評価されていなかったような誤解を招いてしまったので追記です。まだチップの詳細が固まっていない時点でメモリ量などを見積もらなくてはならず、「FM音源中心でPCMも使える、X68kみたいな環境」として 512Kの見積もりとなったようです。
しかし、実際に完成してみると、PCM 32声が使えて、PCM 4つを束にするとFM音源っぽくも使える、というものでした。
PCM のほうがたくさん音を出せるなら、そちらの機能を使いたい。
でも、メモリ設計時点で「PCM はおまけ」的に想定していたので、メモリが少なすぎて使えない。
不評だったのは主にこの点。
FM エミュレートが不完全で…というのは、OPM の音色ライブラリが使える、と考えられていたのに、使えなかったため。
しかし、FMエミュレート機能自体は使われていますし、その音源自体の出来が悪かったわけでもありません。
結局、不評だったのは「事前に聞いていたのと違う」という点に集約されますね。
DSP
音源チップが出力した「音の波形」にたいして、DSPでエフェクトをかけられました。トンネルに入ったら効果音にエコーがかかる、とか。
DSPっていうのは、一種のCPUなのですが、CPUに比べると条件判断が苦手で、その分高速に動作するものを言います。
このDSPは、上に書いた音源チップの中に内蔵されていたそうです。
MC68000
サウンド関連を動かしていたのは、MC68000。メガドライブの CPU と同じものですが、動作周波数が上げられているため、より高速です。
先のDSPや MC68000 のプログラムなどは、僕はSGLと共に配布されているプログラムを使っただけなのでよく知りません (^^;;
すみません。
データアクセス
CD-ROM
CD-ROM 周辺には、2つの CPU が使われています。
ただし、この2つの CPU はあらかじめ ROM でプログラムを持っており、変更はできません。「プログラム可能」と呼んでいいかどうか微妙なところ。CPU なのにね。
まず、SH-1。CD-ROM からのデータ読出しを担当していました。
メイン CPUから見れば、SH-1 に「データ用意しといて」と命令を出せば、しばらく後にデータが RAM に入っているのです。
(SH-1 の下に、512KByte のバッファを持っていました。)
ゲーム中にデータを先読みしたりして、ロード時間を減らすのに役立っていました。
そして H8。日立の作った 8bit CPU です。CD-ROM そのものの、モーターを回したりピックアップを動かしたりするのに使われています。
僕は ST-V のプログラムをしていましたが、この2つは当然のことながら ST-V には載っていません。
あったとしてもプログラムできないのであまり関係ないかもしれませんが。