じぇみに広野氏が語るレトロゲーム機のPCM再生技術
SFCのゲームって、ROMベースなのに起動が遅いなーと思った人はいませんか?実はその主原因は多分これ。サウンドのロード時間ですね。遅いんだこれ。
2014-02-07 20:19:14また64kbytesのメモリ空間で、プログラムとワークとデータ全部を突っ込むので、けっこう狭い。だからゲームで場面が変わったらサウンドの読み替えは普通にやってると思われます。曲とか音色とか。
2014-02-07 20:19:22で、当時のゲームでメモリ大食いの候補だったサンプリング音声データ。こんなの当然、サブCPUのメモリ空間に常駐できるわきゃない。でもカートリッジに入っててもサブCPUからは手が届かない。
2014-02-07 20:19:30さっき言った様にサブCPU空間は余裕なんて言葉に縁のない世界。サンプリングボイスのサイズ分をまるっと確保なんて贅沢はできない。
2014-02-07 20:19:48だもんで私の場合は、サウンプリングデータ長を512くらいにでリピート再生を設定し、まず256転送して再生開始。再生が始まったら後半256に続きを書き込み。
2014-02-07 20:19:56再生が後半に差し替わったタイミングで今度は前半を書き換え。以後、そろそろ使い終わったかなって頃にそっちのデータを書き換え続ける。実はどこまで再生したのかを知る手段がなかったので、時間管理が命。
2014-02-07 20:20:05割と長いセリフでも破綻しなかったので、まあうまくいってたんでしょう。でもこれ、他社はどーやってたのかねえ。某おしゃべりなんちゃらとか、相当長いセリフ喋ってるし。切れ目でリセットしてたのか。
2014-02-07 20:20:14ファミコンのPCM再生技術
アイドルとか声優がファミコンでしゃべる。その一点だけで売るソフトがあっても良さそうなものだが意外にない。普通にデータを作るとガビガビになるとかがネックだったろうか。あるいは、当時は普通にファミコンが売れていたので、あえて飛び道具にリソースを振る必要がなかったためだろうか。
2014-08-23 23:12:17@zolge1 前にちょっと触れたようにPCMは配置アドレスの制限が厳しくて、メガロムの恩恵が得にくかった(というかほぼ得られない)のも原因かも。
2014-08-23 23:20:32@kopandacco やはりそういうことですかね。当の任天堂がマリオ3とかに至るまであんまり活用していないのが不思議でなりません。実はしれっと使ってた方は相当スキルが高かったとかなのかもしれません。
2014-08-23 23:22:51需要があるかどうか不明ですがファミコンのサンプリング機能について。手元に資料があるわけじゃないので、ちまちま間違えるかもしれませんが、そこはご容赦を。
2014-08-24 00:27:49まずファミコンじゃなくて、サンプリング一般の話。基本は音量を時系列にしたがって記録しています。だから昔の基準だと、結構容量面でハードでした。なおCDは確か16bitを左右別々、頻度を44.1kHzで記録してます。
2014-08-24 00:27:59さてデータ量を減らすには3つくらい方法がありまして、頻度(サンプリングレート)を下げるか、記録に使うbit数を減らすか、何らかの圧縮をかけるか。
2014-08-24 00:28:10たとえばデータを1bitにしたのがMSXのレイドック。いわゆるガラガラ声。4bitで持ってるのが魔導物語。前回との差分で記録するのがDPCMとすると、それに一工夫してるのがADPCM。アーケードにはよくADPCM処理用チップが積まれていたと思われます。(アーケードぷよ通とかそれ)
2014-08-24 00:28:21ファミコンはちと変わってて、波形が上がるか下がるかを1bitで表現する方法で、差分方式の一種です。結構複雑な波形を再現できるので、1bitなのに割と音質がいい。音量小さめになるけど。
2014-08-24 00:28:35ところがファミコンでPCMデータを配置できるのって何故か$C000番地以降だけ。メガロムは普通、$8000から$BFFFまでの16KBytesを切り替え、$C000以降は固定で使うので、相性よくありません。別のアドレスを切り替えるメガロムもあるにはあるんですが。
2014-08-24 00:28:46だから普通は$C000以降に固定のPCMデータを常駐させる使い方になる。そして大事なプログラムを入れる領域でもあるので、そんなに大量にはPCMで占有できない。実はそのあたりを回避できるカートリッジが存在した可能性はあるけど、あったとしても一般的じゃなさそう。
2014-08-24 00:28:57専用でよければ別の音源をカートリッジにのっけた方が話が単純だし。そういうわけでファミコンではあまり長尺のPCMは使われていないのではと。(グラ2のラスボスも専用ボイスはなさそうなので、他のボイスの再生レート下げて流用してるんじゃないかな?と)
2014-08-24 00:29:07@zolge1 私の知ってるファミコンでのサンプリングの制約(に至る理由)まとめてみました。何かのハード支援がないと乗り越えられない壁があると思っています。
2014-08-24 00:35:49(5)PC-9801(BEEP)のPCM再生技術
リクエストがあったので言うけれど、PC-9801のBEEP音でサンプリングをする手法はうちの発明ではなく先行例がある。BEEP音自体は矩形波で、しかも音量が代えられないという性質があり、そのままでは大したことができない。
2014-12-10 20:33:30