女神アルテミスの歌声 | //www.旧型、PSP開発幼稚園.game.jp/(本館)

女神アルテミスの歌声

■女神アルテミスの歌声2006-05/07

今日は、何で実機メガドライブのボイスは「汚い」のに、エミュは「キレイ」なのか?

実機でも「一連のトレジャー開発」のものは「何故キレイなのか?」

その謎に迫る。

■メガドライブは他のゲーム機と違って、「CPU」が2つ乗っている。そんで「同時実行が可能」である。 「他のゲーム機」ってのは、一連のNTDのゲーム機すべてと(SFCの特殊カードリッジ(HAL研のカービー)、は除く。 あれはカードリッジ内に本体よりずーーと高速なCPUが入っている。DSPはCPUと違う) (GB、GBC、FC、SFC) 「PCエンジン」(とFX)だな。
「プレステ」や「サターン」や「N64」は次元が違う。
「プレステ2」や「ドリキャス」や「ゲームキューブ」はもっと次元が違う。
■「同時実行は可能」だが、「同時アクセス」は出来ない。その為用途が限られてくる。(1+1が2にならない。サターンも同じ道) 昔「FM-7」という名前の「超レトロPC」があったが、それと基本的な仕組みは同じ。 「FM-7系」では「68B09E」という「CPU」(本当はMPU)が2つ乗っていて、「メイン」と「サブ」に別れていた。 つまり「マスターCPU」と「スレーブCPU」が存在するという事。 「マスターCPU」はメインのプログラムを担当し、「スレーブCPU」は画像処理を担当した。
「メガドラ」の仕組みも全く同じ。ROMは「マスターCPU」のM68000が起動するプログラムだ。 「マスターCPU」のM68000が、「スレーブCPU」のZ80を止め、その隙に「Z80のメモリを書き換え、 Z80のプログラムを転送する」んで、用意がOKなら、Z80動かして実行する。 Z80側からは操作出来るリソースが限られるし、確かM68000を止める事は出来ない。 「マスター」と「スレーブ」では「格が違う」からな。
■M68000は7。16MHz。Z80は3.5MHz。さて、ゲームを作るとしてドンナ仕事をさせようか? 「サターン」が当時の「ゲーセン」の機能(ポリゴン以前)を再現すべく。開発されたのと同じく。 「メガドラ」も当時の「ゲーセン」のレベルを再現すべく、開発された。 「スプライト」は横に32枚並べてもちらつかないし、(それ以上はちらつく)「音源」は2151は高すぎるから、 乗せられなかったものの「OPN」x2(の専用チップ)だ。そんで「チップセット内に簡易PSGの76496」があるから、 「OPN」のそれぞれの「PSG」(本当はSSG)を殺して、「PCM」に仕立て上げた。 つまり「PSGx2」を「PCM」に作り直した。
■この「PCM」が今日の本題。これは「PCM」っていうか。「PCMの振りした実は中身はPSG」なんである。 これは「PCM」としてハードウェアーが設計されてるから、「PSGx2」として使う事は出来ない。 「PSGに似た音」がだしたければ、本体VDP内蔵の「76496」を使え。これは「セガマークⅢ互換」だから、 文句は無いだろ。76496は3声+1ノイズで、スペック上はPSGと同じ。但し「特性」は大きく異なる。 さてそんなメガドラ「PCM」。ソフト屋さんが使う場合は「PCM」。でも、本当は中身は「PSGx2」
■当時の「AC」(ゲーセン)のゲーム開発の常識として。 メインのプログラムはメインプログラマーが作る。(マスターM68000) 音楽や効果音のプログラムは音楽プログラマーが作る。(スレーブZ80)
■メガドラはいいぞ。中身は当時の「AC」(ゲーセン)と同じだから、「全く同じ技術が活用出来る」。 「ヘッドハンティング」には「必要な手法」だな。 ちなみに、「PCエンジン」も「同様な手法」で、CPUは「ファミコンの速いの」だから、「FC開発」と、 「全く同じ技術が活用出来る」ってのが「ウリ」。「全く同じ手法」だな。だって実質の人材は少ない(見掛けの人材は多い)から、 牌の奪い合いだ。今と状況は「何も変わらない」。
■さて「音楽プログラマー」は名曲が書けるだけでは、当時は「仕事にならない」。今は十分ハードウェアーが 「進歩」したから、「そんなの全然昔話」だが、当時は「音源を100%活用」する為、「良い音楽を作る技術」以外の 「特殊な技術」が必要とされた。つまり、「Z80と音源」を使って、その「良い音楽」を「再現する技術」。
Z80のアセンブラは出来て当たり前。ちゅーか「ちゃんと動けば」別に人の作ったのを「真似すりゃ構わない」から、 楽な世界だが、それでも「基本的なコンピューターの仕組み」は理解してないと。「良い音楽」を書けるだけでは、 「仕事にならない」。ここは七連符ね。なんていったって、当時のZ80じゃ「人の真似」だけじゃ。ちょっと難しい。 (もちろん自分で作れば簡単)
■さて現実にゲームを作る「音楽プログラマー」は当然、Z80のレベルがアップするよな。「レベル」ってのは、 「安定したプログラムが書ける事」では無い。そんなの「必要ない」。堅実な「ビジネス、プログラム」は要らない。 ちゅーかそういう人材は「有害」。人の足ばかり引っ張る。 「不安定でもゲーム中にバグらなくて(自動復活)」かつ「実行速度が速い」プログラムが要求される。ぼけーっとしてても、 「人より速い」プログラムが書ける訳は無い。技術の研鑚が必須だ。他にも「小さいプログラム」を書く能力も、 「必須」。「堅実なビジネス、プログラム」は有害以外の何物でもない。
■「小さいプログラム」を書く能力も、重要。次元の高い音楽を再現したければ、「データー圧縮必須」。 圧縮率よりも解凍速度。が重要なのは言うまでもない。 「PCM」の楽音データーは、差し当たり「ランレングス」で圧縮するじゃろ。手間と時間には限度がある。拘って いたら、「ゲームの発売日」に間に合わない。実質の開発期間は「異常に短い」。訳がワカラン奴との折衝時間は 「異常に長い」。アイデアがあっても、「手間かける時間はない」。
■音楽の音を実際に出すときは、当然Z80の「IOポート命令」但しメガドラは「Z80のIOポートが乗ってない」から、 (注:TF4は「IOポート命令」を実行するが、そりゃ「デバッグ用途」だろ。開発中にメガドラ実機に「簡単なハードウェアー」を追加したんだろ。例えば「LED」とか) 実際はメモリアクセスだが、恐らくメモリウェイトが掛かるので、「実質的に同じ事」(だってIOだもん) それにそのIOって「FM音源」(注:PCMはFM音源内部)だから、「そんなに反応が速くない」
■ACのPCMデーター。元が5kHz程度だろし。そのまま持ってきても、対して影響はなさそう。まあ一回復号 してPCMにどうせ戻すから、そんときレート弄るだけなんだけど。
■さてメガドラの「アルテミス」。サンプリングレート的には「問題がない」。現に「エミュ」では「それ程変な音がしない」 つまり「データーには問題がない」。が、「プログラムに問題がある。」
■詰まる所「実験する時間が無かった」って事だ。納期は厳しい。

■昔「FM-7」の「PSGx2」で「キレイなPCM」(8ビット32kHz+)を再現させた人(バンクの戸田氏)がいて。 (2MHzの68E09Eで再現) 過去日記参照:2006-03-04 12:58:55#?? Gensで遊ぶ(SEGADRIVE) 過去日記参照:#4お魚サウンド調査中(2006-02/03) (ちなみにCDは16ビット、44kHz) 詰まる所。8ビット32kHzってのは16ビット16kHzと同等。が、アンプ回路がタコではないので(そんな変なフィルターはない) 16ビット22kHzグライの感じ。つまり、普通のCDと対して変わらんレベルのクオリティーだ。 昨今のMP3より上って感じ。(圧縮22kと無圧縮22kだと、変わらん曲は変わらんが、変になるのは露骨に変になる) そりゃ22kだから「露骨に上がない」が、「変なフィルター」がなけりゃ「まあまあ」だな。 (注:昔のスペック22kの機械には露骨に「変なフィルター」が乗ってた。だからみんな22kは変な音だと今でも思ってる。 が、昔の「サンプラ(楽器)」は「変なフィルター」が乗ってないから「ちゃんとした音」が鳴る。)
■さてと、話は、「Z80のプログラムに問題がある。」って所だな。業務用(AC)のDACならDACの後ろに「フリップフロップ」 が乗ってるの常識だろ?。だから、「音素データーを保持する」 つまり一コマンド打つだけで、「鳴り続ける」。PSGでもFM音源でも、「パラメーターさえ間違えなけりゃ」 鳴り続ける。ナムコ音源もおそらく同じ。
■メガドラの「PCM」は「鳴り続けない」。つまり「減衰する」。そこに「フリップフロップ」が付いてない。 相当部分に「電解コンデンサ」が付いてる。 「電解コンデンサ」が「パルス信号(つまりメモリアクセス)」を受信したら、「電解コンデンサ」に「パルス電圧」を 保持するも、「時間がたてば当然抜ける」っていうか、「時間が経つから抜ける」のではなくて、その先に付いてる。 「電流増幅のアンプ回路」に引っ張られて「無くなっちまう」。つまり、「減衰する」。
■「減衰」はゆっくり行われる。が、(こちらで実験した所)「最低でも毎フレーム更新」しないと厳しい時間だな。 (1フレームはNTSCで1/60秒。1フレームはNTSCで262ラスタ。非表示期間含む。) (非表示期間=オーバーラップ分+走査線の戻り時間) (1フレームグライ)で半分に減衰。で大体「メガドラ」になる模様。A28で実装した。 (とりあえず250ラスタで半分に減衰に調整してみた。注:数字はテキトー。「電流」を計算しないと値が出ないし、 電解コンデンサは劣化して容量変わるし、そんな真面目にやるだけ「無駄」。聞いて確認すれば良い。)
つまり「フェリオス」は「ランレングス」展開再生時に1フレーム以上更新しない部分がある。 「トレジャー」はそんな事しない。毎フレームちゃんと「更新」する。...という事だな。 じゃな。 (2006-05/07、21:21)