mieki256's diary



2013/11/06(水) [n年前の日記]

#3 [digital] MEGA-CDのスペックとかMEGA-CD版シルフィードの仕組みが気になってきたり

「フラクタル 地形」でググってたら、たまたまMEGA-CD版シルフィードについて語ってるスレッドが引っ掛かって。

「ムービー垂れ流しゲー」と揶揄しながら何年間も執拗に叩き続ける人達がこの世に存在するという事実に「…うわあ。とんでもないもの見ちゃった」と静かにブラウザのタブを閉じたのだけど。まあ、そのあたりも、削除人とやらが自演して煽ってた光景の一つかもしれないと邪推しちゃったりもしますが。

それはともかく。シルフィードって、MEGA-CD程度の非力なスペックで「ムービー垂れ流しゲー」モドキを作ろうとチャレンジしちゃったところが凄いんじゃん、と個人的には思っていて。全画面相当(真に全画面ではなかったはず)の動画を再生するだけでもかなりキツかったはずだよなと。

例えばニコ動あたりで、8bitPC使ってアイマス動画の再生実験してる方々がいらっしゃるわけだけど。ああいうレベルの技術に近いだろうと。アレをゲーム商品のレベルにまで持っていったわけだから、当時としてはよくやったもんだよなあ、とんでもねえなあ、と。

でも、本当にそうなのかな?

そもそもMEGA-CDって、どの程度のスペックを持ってたんだろう。自分、メガドラ(メガドライブ)はそこそこスペック知ってるけど、MEGA-CDは全然知らないんだよなあ…。回転拡大縮小機能とやらの実態すら知らなくて。

てな感じで、MEGA-CDのハードウェアスペック・仕様についてググってみたのだけど。

これがほとんど見つからず。なので、本当に凄いことをしてたのか、意外とそうでもなかったのか、結局分かりませんでした…。

ということで、以下は全て、伝聞の類から自分が想像したソレの垂れ流しです。計算ミスしていたり、事実誤認もあるだろうなと。…でも、「こうだったんじゃないか?」とアレコレ想像してたら、あのタイトルを作った人達は(良い意味で)頭おかしいと思えてきました。

まあ、どのみち、さすがに今見るとショボイんですけどね…。ゲーム映像って進歩したよなあ…。

無駄に長いから読まなくていいですよ。自分の考えをまとめるために書き出してるだけですから…。

CPU。 :

_メガCD - Wikipedia によると、CPU は MC68000。12.5MHz で動いてたらしい。 _メガドラ が 7.67MHz だったらしいので、約1.6倍の速度アップ。

MC68000てのは、今のCPUと比べてどのくらいの性能なんだろう?

CPUの性能を示す値として、 _FLOPS があるけれど。これは浮動小数点演算の性能を見るものなので、浮動小数点演算機能を持ってなかった MC68000 では使えない感じ。リストにも載ってないし。

_MIPS という指標もあるけれど、異なるアーキテクチャでは比較できない、と書いてある。が、数値で見れるのはこのくらいしかないので、乱暴だけど、これで判断してみよう…。

ちょっと前にネットブックてのが流行って終わったけど。アレに使われてたのが、Intel Atom。遅い遅いと皆に叩かれまくったCPUだけど、アレでも 3,846 MIPS。

MC68000 を 8MHz で動作させると、0.7 MIPS。うわあ。桁が全然違う。

Intel系CPUとモトローラ系CPU(MPU)は、アーキテクチャが違う=各命令の性質が違うから、単純に比較をしたらマジで乱暴極まりないし、クロック数が 8MHz と 12.5MHz では結構違ってきそうだけど。それでもあえてそのへん無視して比較しちゃうと、今のCPUの、約 1/5500 の性能。

うーん。そんなもんか…。もっと性能低いかなと思ってたけど、意外に…。でも、今のCPUの1/5500の性能で動画再生を試みるって…どうなのソレ…。

RAM。 :

_メガCD - Wikipedia によると、RAM は 6Mビット。てことは、768Kバイトかな? 8ビット=1バイトですから。

768Kバイトを、偉い人からニコニコしながら渡されて、「さあ、これでプログラムもデータもどうにかせい!」と。しかも、「これだけ豊富なメモリがあれば、動画再生しながらバンバン弾撃って敵やっつけるゲームだって作れるだろ?」と。できるのかよ。できたけど。

まあ、8bitPC時代は、RAM 16KB 〜 64KB とかそんな感じでしたから、「768Kバイトもある! ウッヒョー! ここはパライソじゃあ」てな印象も…。当時は夢が広がりんぐ、だったのかなあ…。どうなんだろ…。

ちなみに、ソニック1は4MビットROMだった記憶が。

そういや、当時のMEGA-CDタイトルの中に、「ベアナックル」「ザ・スーパー忍」「ゴールデンアックス」「コラムス」の4本がパックになったものがあったっけ。「どうしてこのラインナップなんだろ」と不思議に思ったものだけど、1本丸々MEGA-CDのRAMに読み込んでしまえば、そのまんま動かせるタイトル群だったからパックにしたのかな…?

CD-ROMドライブ。 :

CD-ROMドライブの速度がよく分からず。MEGA-CDって、等速・1倍速…だったよね? 違うのかな?

等速と仮定したら、転送速度はどのくらいになるのかな。等速てのは、音楽CDをフツーに再生できる速度、なんだけど…。

音楽CDは、44100Hz、16bit、ステレオ=2チャンネルで記録されているので、単純計算では 1秒間に 44100 x 2バイト x 2チャンネル = 1764000バイトが転送できる。約172Kバイト/秒、ですかね?

でも、 _CD-ROM - Wikipedia によると、等速では150Kバイト/秒、と書いてある。…アレ? 計算より少ないな? なんでだろ? エラー訂正ビットがどうとかなのかな。でもそれを含めたら、転送できる量はもっと増えるはずだよな。うーん。

まあいいや。1秒間に150Kバイト転送できる、として考えていこう…。

1秒間に画面を何回書き換えるかで、1フレームで使えるバイト数の目安が得られそう。シルフィードって、背景動画は何FPS(フレーム/秒)だったんだろう? 60FPSや30FPSは出てないよな…。20FPS〜10FPSぐらいなのかな…?

20FPSなら7680バイト、15FPSなら10240=10Kバイト、10FPSなら15360バイト=15Kバイト、が使えることになるのかな。

「1枚につき、7680〜15360バイト使っていいぞ! さあ、これで動画作れよな!」って話ですね。

表示画面。 :

MEGA-CDの画面表示性能は、メガドライブのソレと同じ、と仮定して。 _メガドライブ - Wikipedia によると、画面の解像度は 320x224 ドット。同時発色数は64色。

例えばコレを、今時のPC画面として計算すると、320x224ドット x 6ビット(=64色が表現できる) = 430080ビット = 53760バイト = 52.5Kバイト。

だけど、PCと同じような容量計算はできない。昔のゲーム機は画面表示の仕組みが違うので。

メガドライブでは ―― メガドラのBG画面(背景表示用の画面)では、この 320x224ドットは、8x8ドット単位で区切られている。その8x8ドット単位を、1キャラと呼ぶとして。

その1キャラには、4パレットの中から、1パレットを選んで割り当てることができる。1パレットは16色。だから、1キャラ=8x8ドットの中では、16色までしか使えない。…ややこしいなあ。

320x224ドットは、40x28キャラ=1120キャラ。1キャラにつき、4bit(16色) x 8x8ドット = 256ビット = 32バイトが必要になるので、メガドラの画面全体を表現するために必要なバイト数は、1120キャラ x 32バイト = 35840バイト = 35Kバイト。

プラス、パレット分も必要か…。メガドラは512色中16色を使えるとされているから、パレット内の1色分につき9ビットが必要…なんだけど、実際はどうだったかなあ…。RGB = 3:3:2 の8ビット、だったような…。でも、ググったら、1色に2バイト、という記述も見かけたし…。自分、何か別のハードと混同してる気がしてきた…。

とりあえず、1色2バイトと考えて。4パレット分に必要なバイト数は、2バイト x 16色 x 4パレット = 128バイト。…誤差の範囲だなあ。パレットデータ分は気にしなくていいか。ていうかたぶん、シルフィードの背景って、パレットを1つしか使ってない気がする。16色だけで表現してたりするんじゃないかな。そうしないと、手前のオブジェクトやステータス表示で使えるパレットが無くなっちゃうもん。だからパレット分は全然考えなくていいな。

ということで、35Kバイトあればメガドライブの1画面分をまるっと表現できるはず。計算間違ってるかもしれんけど。

今時の感覚でハードウェア仕様を決めちゃうと、1画面、52.5Kバイトになる。でも、仕組みを工夫することで、35Kバイトで済んでいる。当時のゲーム機はハードウェアレベルでも、容量の圧縮を必死に試みていたわけですよ。

ところで、CD-ROMから15FPSで動画をベタに転送すると、1フレーム10Kバイトしか送られてこない。だけど画面は35Kバイト。残り25Kバイトはどうやって埋め尽くすの? このままじゃ画面の真ん中に小さい小さい動画が再生された状態になっちゃうよ。まあ、そういうゲームも結構ありましたけどね…。

そもそも、320x224ドットは多過ぎじゃね? メガドラには 256x224ドットの画面モードもあるから、そっちを使うことにしよう。これなら28Kバイトで足りるぞ。イエッフー!

だけどこれでも、CD-ROMから送られてくるデータ量に対して、18Kバイト足りない…。 となると、動画データの圧縮と展開をするしかないですわな…。

圧縮は、国民機 NEC PC-9801 や、もしかすると X68K が頑張ってくれるかもしれない。でも、圧縮データの展開は…。今のCPUの 1/5500 の性能で、さてどこまでやれるのか…。

ということで、単純計算でも、なんだか結構とんでもないことしてたんじゃないの? と思えてきたのでした。

とはいえ、例えばアニメGIFがどのくらいの容量でアニメをしてるのかを考えたら、頑張れば不可能ではないのかも、という気も。と思ったけど当時のCPUでアニメGIFを展開したらどのくらいの速度になるのか、ちょっと想像つかないなあ。意外とイケルのか、それとも全然ダメなのか。15FPS前後で再生できますかね? X68KでアニメGIFがグリグリと表示できていたなら、意外とイケるということになりそうだけど。

余談。アニメGIFの仕様が入った GIF89a は、1990年に規格が公開されたらしい。そして、MEGA-CDの発売は1991年。アニメGIFのほうが先輩だったのか…。

VRAMの転送速度。 :

TV画面に表示する画像データを保持しておくメモリのことVRAMと呼ぶのですけど。メガドライブって、VRAMへの転送速度も、速くはなかった気がするんですよね…。いや、ぶっちゃけ遅いよね?

例えば、メガドラ版スト2は、画面の上のほうの何ラインかがまっ黒で、時々チラチラと色ノイズが出るんですけど。アレ、たぶん、キャラがアニメする時に、ROMからVRAMへの転送が間に合わなくて、仕方ないから上のほうを非表示にして、そこで転送時間を捻出してたんじゃないか、と想像するのです。今見ると、意外と小さいキャラですよ。それでもそのままじゃ間に合わなかった。そのくらい、メガドラは遅い。

で、シルフィードも、画面の上のほうがチラチラしてた記憶が…。

「圧縮データを展開するところまではどうにかなったな!」
「ああ…だけどVRAMへの転送が間に合わねえ…どうすんだコレ」
「しょうがねえから、ちょっと隠して転送時間を増やそうか」
「おっ。隠したことで画面面積も少し減った! 転送すべき量も、ちょっと減らせるぞ!」
「よし! これでなんとかならんか…なってくれ…」

みたいなことをしてたのではないかなと。いや、本当にチラチラしてたのか少し自信ないですけど。偽記憶かな。チラチラしてたかなあ。してたと思うんだけどなあ。

何にせよ、当時のメガドラのゲームで画面の上のほうがチラチラしてたら、「あっ。あっ。ダメッス! この転送量は無理ッス! 次のフレーム来るッス!あーっ、 間に合わないッス! 画面滅茶苦茶になるッス!」とメガドラが悲鳴を上げそうになってるところをプログラマーがどうにかなだめつつ動かしてたゲーム、と思っていただいてもよいのではないかと。

PS1やSSはどうだったんだろう。 :

ここまでダラダラ書いて思い出したけど。PS1(プレイステーション1)やSS(セガサターン)も、CD-ROMだったような…。実は MEGA-CDと同じだったり? と思ってググってみたら、PS1、SSは、倍速ドライブだったのですな。さすがにそのくらいのスペックは上げてくるか…。

考えてみたら、既に当時、 _ビデオCD てのもあったんだよな…。それを考えると、CD-ROMに動画を入れる発想は、全然無茶じゃない…。実際、PS1やSSは、散々ムービーを流してたし。

でも、PS1は、MJPEG動画のデコーダ用にハードウェア載せてたっけ。あの当時は、まだまだハードウェアで処理しないと動画のデコードなんて厳しくて。自分も、動画再生支援機能付きを謳ってたから、ATIのビデオカードを買った記憶がありますけど。

SSは、「ソフトウェア処理でどうにかしちゃる!」と豪語してた記憶があるけど。PS1のソレと比べたら、やっぱりどうにかなってないように見えたなあ…。

まして、SSより前の製品のMEGA-CDで ―― MC68000でどうにかしちゃる、ってのは…。まともなことしてたら無理だよなあ。

2013/11/07追記。 :

_2013/11/07の日記 で続きをメモしました。

以上です。

過去ログ表示

Prev - 2013/11 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project