Reloaded趣味でやっているハードウェア関連(主にFPGA/レトロアーケード基板互換SoC開発)について書いていきます。ないブログに表示されています。新しい記事を書く事で広告が消えます。この頃(1980年代前半)のナムコの基盤には「爆発音を出すための音源」が載っていることがあって、これまた独特の「体に響くような」迫力のある爆発音を出していました。この音源は数バイトのパラメータを与えて再生要求を出すと、パラメータに従ってノイズを重畳して「爆発音」を発生するというものです。搭載しているタイトルでは主に「自機の爆発音」に使われています。(「ギャラガ」「ラリーX」では本当にそのためだけに載っている。)実はこの音源、中身は富士通製のMCU(今で言うとAVRとかPICの類)で、「爆発音を合成するソフト」が内部に組んであって機能を実現しているのです。「爆発音を発生させる」だけの為にワンチップマイコンを使っているという....。当時はメモリが高価だったので、「単純にPCMで音を鳴らす」ということのほうが遙かに「贅沢」だったのですが。(余談ですが、デジタルオーディオであるCDの世界初の民生機が発売されるのは「ゼビウス」稼働の約半年前の1982年10月。プレイヤーがすごく高価で一般家庭にはまだまだ普及していなかった頃の話。電気屋さんで見るぴかぴか虹色に光るディスクは、ものすごい近未来感と憧れを感じさせてくれたものです(じじい)。・自機の爆発音の4種類の音がこの音源の担当です。実装しようと思ったのですが「さすがに爆発音の為だけにマイコンを組むようなそんな元気はないわよ!」(誰?)ということで、今回は思いっきり手抜きして「使われている4種類の音をPCM録音しておいて、パラメータと再生要求を受けたら該当する音を再生する」という「表面的な動作だけを真似る」モジュールを作ることにしました。(将来的にはちゃんと実装したいのですが、とりあえず爆発音が出ないと遊んでいても物足りなくってねぇ)PCM再生をするとなると当然PCMデータを入れておかなくてはならないのですが、それについては前々回のROM周りの話の時に少し触れています。(BlockRAMに載せられる容量ではないので、外部のS-RAMに載せて他のROMと共に時分割でアクセスしています。)ここでもう1つ問題があるのですが、起動時にS-RAMにロードする元データはどこに入れておくのでしょうか?それは他のROMと同じようにコンフィギュレーション用のシリアルROMに内容を入れておくわけですが、シリアルROMの容量にも限界というものがあるわけです。(512KB)で、PCMデータというものはそれなりに大きいわけです。今回、シリアルROMに書き込む回路データと「ゼビウス」のROMセットの総容量は480KBを越えます。残りの32KB程度にそれなりの音質で4つの効果音を格納しなくてはなりません。結論からいえば、満足のゆく音質で4つの効果音を入れることはできませんでした。容量の問題だけであれば、ADPCMなどを実装するという手もあるのですが、元々オリジナルの仕様を模倣しているわけでもなく「爆発音さえでればよい」という姑息的なものだったはずなのに、そこまでやるのも本末転倒な気がするので、とりあえず今回はこのまま行きます。なんとか2つは入りそうなので、使用頻度と重要性を勘案して「地上物爆発音」と「自機の爆発音」を選びました。このような「諸般の事情」と「妥協」に満ちたものではありますが、ソースはこちらです。(モジュール自体は2チャンネルを時分割処理するために倍の20KHzで駆動しています。)何のことはない、外部からの要求で2チャンネルのPCM再生(というかROMからのデータ読み出しと数値の加算とサンプリング周期で更新されるラッチ)を行うだけのモジュールです。このモジュールからの出力は前回のWSGのAUX入力に接続され、WSGの出力とミックスされてDACでアナログ出力されるようになっています。これで爆発音はでるのですが....。なんだかいろいろぐだぐだです、今回。見とけ!(捨て台詞)次回はいよいよビデオ周りの予定です。SilverメールアドレスURLコメントパスワード<<さてビデオ周りを。ボード(01/22)さてビデオ周りを。