星くんとの会話
星くんからメッセンジャーで来た話があまりに面白かったので、ちょっとブログで取り上げることにした。
もちろん、当人の許可はもらっている。
星くんについては、僕のブログの星恵太君のことでも読んで頂きたい。
■星
PCエンジンはなんで音がイマイチなのか、高音も低音もダメだから、これにつきるかもしれないっすねwwww だから、作曲レベルで得意な音階をせめ、楽曲的にも技術的にも高いマジカルチェイスは別次元だったですよね。
なんて話を同業だった知人としていて、岩崎さんのお耳にも入れたくなってメッセしました。お目汚し、あしからずです。
■僕
サイコーに思うのがさ「32バイト足すだけじゃん」なのか「32バイト<も>必要なのか」の感覚の違いだよねw
32バイトって、あんときビット単位で詰めてた感覚からすると、ゲームオーバーは常駐バンクじゃん? 絶対無理! な量で、星が「すません、ゲームオーバーの音良くしたいんで32バイト常駐バンクに追加したいんすが」って言ったら「なにふざけたこと言ってんの?」って絶対に言ってたはずwwww
毎日、常駐バンクがパンクして「何を追い出せるか」で必死になってたんだぜ?w
■星
■僕
■星
そうか、、考えてみたら3Bit×32バイト、波形一音色毎に浪費してたのですね。めちゃ酷い話だ
と、こんな会話をしていたわけなのだけど、全く、意味がわからないであろうから説明しておこう。
イース1・2ではサウンドは「共通領域」と呼ばれる最大14KBの領域に詰め込まれていた。
これは音が鳴る時にドライバーは割り込みで駆動されるので、必ず物理アドレスの上にデータが見えていなければならないルールがあった(回避することはできるがデメリットの方が遥かに大きい)ので、この制限があったわけだ。
このあたりの細かい説明はクソ面倒くさいので割愛するが、全部で64KBある物理アドレスのうち16KBにプログラムが見えていて、最初の8KBはI/Oバンク、そして40KBに汎用データを配置していくって構造…とか説明したってワケわからんよね。ともかく14KBの中にデータはなければならなかった。
そして、この14KBの常駐バンクは他のプログラムやテキストデータやともかく常駐してないとマズいものが置かれている場所だったので、いつでも恐ろしくメモリが足りなかった。ここに32バイトの波形メモリのデータを「もうちょっと音よくしたいから、つけくわえてください」とか言われたら、当時の僕とHahi君は間違いなくにべもなく「メモリねえよ!」で終わりだったのは賭けてもいい。
加えて書くと、なんとこの32バイトの波形データは全く圧縮されておらず、3×32=96bit=12バイト分のデータが無駄に使われていたというのだから、全く許しがたいという話なわけだ。いくつの波形があったのかはさすがに覚えていないが、10もあれば120バイトなわけで、120バイトもあればちょっとしたコードの一つや二つは入って、あああああ…みたいな感覚のサイズだ。
全く許しがたい仕様だったわけだ。
当時の開発者から「ちょっと理解できねーぞ」ってツッコミが入ったので、めんどくさくて割愛した説明を書いてみる。
1)割り込みのベクターは常駐部においてあり、そこで割り込みルーチンが起動する。
2)MPR操作して、CDROMBIOSを出す。
3)サウンドドライバーを呼び出す。
4)終わったらMPR操作して戻す。
5)割り込み終了
と、こんな風になるわけだけど、ここでサウンドデータは物理メモリにこのとき見えている必要は確かにない。
2.5)MPR操作して、サウンドデータバンクを呼び出す
を入れれば、物理メモリに出てくるのだ。
だけど、これをやるとMPRを操作する無駄な処理が入るし、だいたい初代CDROMのデータはたったの8バンクしかなく、そのうちの2バンクは常時物理アクセス可能になっている。ならば、MPRを操作する無駄をやるより、常駐バンクにある方が効率がいい判断だったわけだ。またこれにはもうひとつ理由があり、僕が作ったメモリ管理ではデータ管理用のindexがデータバンクの先頭にあり、これを操作してデータを呼び出すのが標準手続きだった。ここにサウンドのためだけにイレギュラーな処理をいれるよりは、常駐バンクに置いたほうがプログラムは小さくなったわけである。
なにもかも懐かしい25年前の話である。
気が向いたら、そのうち、PCエンジンでどんな風にデータを圧縮していたかとかも、書いてみたいと思っている。
1件のコメント
コメントは現在停止中です。
AGENT: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36
「以前PCE YS I-IIのゲームオーバーの曲がなぜ音色がああなったのか」
岩崎さんのイース本が発売される前、まさにこの質問をTwitterで岩崎さんにさせていただいたのでした。その時には「内蔵音源ではオリジナルの音色の再現が難しかったからではないか」的なお返事をいただいた記憶があるのですが、その理由をここまで詳細に記していただきありがとうございます。興味深いことこの上なし、です。