じぇみに広野氏が語るレトロゲーム機のPCM再生技術

元コンパイルの開発者、じぇみに広野氏(@jeminilog/@kopandacco)が語る各種レトロゲーム機のPCM再生技術に関するツイートをまとめました。 (1)メガドライブのPCM再生技術 (2)ゲームボーイのPCM再生技術 (3)スーパーファミコンのPCM再生技術 (4)ファミコンのPCM再生技術 続きを読む
49
じぇみに @jeminilog

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

ぱんどら @kopandacco

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


ぱんどら @kopandacco

毎度のと言うには不定期すぎるつぶやきを始めてみる。

2014-02-07 19:04:02
ぱんどら @kopandacco

技術と言うのは必ずしも普遍的な物ではない。時代を超えて使える技術もあれば、特定の状況でしか使えない技術もある。丸太から車輪を切り出す方法なんて、あっても役に立つ人は少なかろう。

2014-02-07 19:04:15
ぱんどら @kopandacco

その昔FM-7で当時としては高速でポリゴンを表示するゲームがあったが、今、その技術のどの部分がどこで役に立つか謎だ。ああ、役に立たないとは限らないんだが。

2014-02-07 19:04:26

(1)メガドライブのPCM再生技術

ぱんどら @kopandacco

って訳で使いどころのなくなった技術。メガドライブで、比較的きれいにサンプリング音声を再生する方法。知ってる人は知っているが、メガドライブのサンプリングはすべからくダミ声だ。

2014-02-07 19:04:36
ぱんどら @kopandacco

主原因は、サンプリングデータの再生速度が不安定だから。一定間隔で再生すべきデータが時々遅延するために波形がひずみ、ダミ声化する。これは再生がソフトウエアだから、でもある。

2014-02-07 19:04:45
ぱんどら @kopandacco

アーケード用メガドラ相当のボードは音声再生のハードウェアを専用で乗せているので、同じ再生レートでもはるかに綺麗に再生できる。アーケード版ぷよぷよとかね。

2014-02-07 19:04:55

アーケード用メガドラ相当のボード→SEGA System Cの事。
「System C」と「System C2」の二種類が存在するが、PCM機能(ADPCM)をハードウェアで搭載しているのは「ぷよぷよ」「ぷよぷよ通」等で使われているC2の方のみ。

ぱんどら @kopandacco

ソフトウェア再生でも、再生速度が安定していれば音質は維持される。PCエンジンは6992Hzのタイマ割り込みを使っているので、その速度で再生するぶんには割とキレイ。

2014-02-07 19:05:07
ぱんどら @kopandacco

メガドライブは、サンプリング再生に使えそうな割り込みをなぜか1つも持っていない。FM音源にはちょうといい感じのタイマーもあったが、割り込みに入っていない。なんか設計上の理由があったんだろうか。

2014-02-07 19:05:17
ぱんどら @kopandacco

ではどうするかというと、逆にサンプリング再生にCPUを100%使う。幸いメガドラにはCPUが2つあるので、68000はゲームを担当、Z80がサンプリングと、分業すればいい。

2014-02-07 19:05:26
ぱんどら @kopandacco

しかも68000とZ80はうまいことバスを使い分ける前提でハードが設計されている。だから本来、Z80はサンプリングに専念しても支障はないし、事実させる事が多い。

2014-02-07 19:05:36
ぱんどら @kopandacco

そうは問屋がおろさないのが68000側。実はバスを使い分ける前提で設計はされていたものの、実際の実装では68000側のメモリ空間での特定の操作をする時だけは、Z80と衝突する可能性がある。

2014-02-07 19:05:47
ぱんどら @kopandacco

特定の操作ってのは、一部のアドレスへのアクセス、及びDMAの動作。だから68000側は、それに抵触しそうな間だけは、Z80を強制停止せざるを得ない。

2014-02-07 19:05:57
ぱんどら @kopandacco

その期間はサンプリング再生が止まるので、長ければ長いほど波形が歪み、どんどんダミ声化していく。さてDMAってそんなに頻繁に、しかも長期間使うのだろうか。

2014-02-07 19:06:17
ぱんどら @kopandacco

DMAはメインメモリからVRAMへの転送が主な用途。キャラクターデータの書き換えとか、画面のある程度以上の面積の書き換えではこれが大活躍する。でも、毎回使うかというとゲーム次第で、そうでもない。

2014-02-07 19:06:29
ぱんどら @kopandacco

ところがだ。スプライトの表示用データはVRAMみたいな空間に書き込む必要があって、それにもDMAが使われる。こっちは当然毎フレームやらなきゃならない。つまりダミ声化は回避不能。

2014-02-07 19:06:39
ぱんどら @kopandacco

と言いたいところだが、スプライトデータはそこまででかくない。ならサンプリング再生中だけは、DMAを使わずにCPUでごりごり書き込んでも、どうにか間に合うんじゃね?

2014-02-07 19:06:49
ぱんどら @kopandacco

というのをぷよ通マスターアップ後に思いついてサンプルを作った。音質が劇的に改善されたが、当然日の目は見ないまま。唯一、メガドラ魔道ではこの手法が採用されたはずなんだが。

2014-02-07 19:06:58
ぱんどら @kopandacco

条件が特殊すぎて、今更何かに応用できるはずもないロストテクノロジーとなった。まあロストしたのはテクではなくターゲットだが。

2014-02-07 19:07:10
ぱんどら @kopandacco

でも、あーそんなの知ってる、とうの昔に使ったぜーって人がいたら教えてほしいと思った。ならあまりロストでもなくなるしね。

2014-02-07 19:07:19
1 ・・ 4 次へ