サターンの3D性能

目次

3Dゲームの文法

ポリゴン

SH2 の演算速度

ツインCPU

SGLの動作

ゲームの基本ジオメトリ演算サブCPU実行命令


ツインCPU

さて、セガサターンの完成が近づいたとき、後のライバルとなるプレイステーションの噂が徐々に伝わってくるようになります。


プレステは R3000 という CPU を、33.86MHz で動かしていました。

動作周波数が2割ほど高いですが、これはそれほど脅威となる能力差ではありません。


それよりも、プレステは3D演算用に、ジオメトリエンジンと呼ばれる計算回路を搭載していました。

先に計算したように、セガサターンではジオメトリ演算を秒間19万回行えます。プレステでは、この処理を専用の装置に任せることにより、秒間450万回を達成している、としていました。


ただ、450万ポリゴンが表示できるわけではありません。ジオメトリエンジンは「頂点単位」ではなく「ポリゴン単位」での演算が基本だったようで、秒間150万ポリゴンが実際の計算速度になります。また、計算能力は高くても表示が追いつかず、表示能力は36万ポリゴンが公称値となっています。


テクスチャやグーローシェーディングを使用すると、ジオメトリエンジンの計算能力も、ポリゴン表示能力も低下します。
両機能とも使うと、ジオメトリ演算は50万ポリゴン、表示は14万ポリゴンが公称値です。ただし、これらの機能を「全ポリゴンに適用する」必要はないでしょうから、ここまで性能を落とすことはないでしょう。

セガサターンは「究極の2Dゲーム機」だったので、表示能力は十分にあります(公称秒間 30万ポリゴン)。

問題は計算能力です。先に書きましたが、3D計算だけをやっても 19万頂点。実際にはゲームを動かさないといけないので、半分の時間をゲーム処理に取られたとしたら10万頂点程度でしょう。

サターンの計算の場合、隣り合ったポリゴンは頂点を共有します。しかし1頂点で1ポリゴン出るわけではないので、2割引きで8万ポリゴン程度でしょうか。

プレステの36万ポリゴンはピーク値ですから話半分で18万ポリゴンとしても、サターンはその半分も表示できないことになります。互角に戦うには、せめて2倍の計算量は欲しい…!


計算能力を大幅に上げる策が必要でした。しかし、ジオメトリエンジンのような装置を設計するのには、非常に時間がかかります。

日立には、セガから「もっと性能を上げられないか」という相談が持ち込まれます。しかしもう設計に残された時間はわずかで、今から性能を2倍に引き上げるなんて、魔法のような方法があるわけがありません。


…いや、ありました。「こんなこともあろうかと!」ではありませんが、SH2 に搭載されていた、もう一つの機能が注目されます。

SH2 はセガの依頼を取り入れて設計されましたが、セガ専用の特注品と言うわけではなく、日立社内での要望によってつけられた機能もあったのです。


それが、マルチプロセッサ機能。2つの CPU を協調動作させ、演算力を増加させるための仕組みです。

日立社内の有力者の依頼を無視できず、「渋々」つけられた機能でした。研究用の側面が強く、設計者は「きっとだれにも使われることはない機能だろう」と思っていたそうです。


マルチプロセッサ機能を使えば、CPU はそのまま、セガ側の設計もほとんど変更を加えないまま、CPU を倍増できます。つまり、性能も倍になるのです。




現在(2013年)では、パソコンでもマルチプロセッサが当たり前ですが、2000年以前はマルチプロセッサは非常に珍しい構成でした。そのため、マルチプロセッサに慣れているプログラマが少なく、サターンは事実上シングルプロセッサとして使われていた、という噂があります。

…根も葉もない都市伝説です。


先に書いたように、SH2 1つでは性能が全然足りず、シングルプロセッサでは事実上 3Dゲームは作れませんでした。


本体と同時発売タイトルの一つ、バーチャファイターは、業務用のプログラム (V60のアセンブラで記述)を、SH2 に変換する「コンバータ」を作り、コンバート後のプログラムを修正していく…という形式で作られています。

先ほど書いた通り、MODEL1 ではジオメトリ演算を行う回路があり、3次元座標でポリゴンの表示を指定するだけで表示が行われます。しかし、サターンでは前述のように SH2 で計算を行う必要がありました。

2台の SH2 を上手に使い、計算を行うプログラムが作成されます。ただ、開発期間が短かったことなども影響したのか、このプログラムはバグだらけで、「サターンは想像していたより性能が低い」という印象を与えてしまっただけでした。


それでも、バーチャファイターは「良い叩き台」でした。セガサターンで実際に動作する3Dゲームを作り上げたのですから。

バーチャファイターのプログラムはこの後解体され、3D 演算ライブラリとして再構成されます。もちろんバグも修正され、2Dでも3Dでも使いやすい形にまとめ上げられています。これが、当時は「新OS」とも言われていたSGL … SEGA Graphics Library です。


SGLの動作

ゲームの基本

SGLの動作説明の前に、ゲームを作成するうえでの「基本」を説明しましょう。ファミコンでもメガドライブでも同じ、基本中の基本の部分です。


たとえばシューティングゲームを想像してください。


自分が操作した通りに自機が動くのも、撃った弾が飛んでいくのも、敵が動いているのも、敵の放った弾幕が美しく散らばるのも、全部プログラムで動かしています。


ゲーム開始直後、自機が表示されているだけで敵が何もいない時と、巨大なボスの前で100発の弾幕を避けているときとでは、プログラムが処理しなくてはならないキャラクターの量は異なります。


当然、プログラムの処理速度も変わります。開始直後はすぐに処理が終わるでしょうし、ボスの前では処理に時間がかかるでしょう。


しかし、開始直後は自分の動きが速く、ボスの前では遅い…なんてことはありません。


ファミコン以前のパソコンゲームなどでは、そういうものも非常に多かったですね。
あれはあれで「低い処理能力で頑張っている」感じがして好き。

ゲーム処理の概要これは、「画面の描画タイミング」を使ってゲームの処理速度を整えているためです。

テレビの NTSC 信号では、1秒間に画面を 60回描き変えます。ゲームのプログラムは、この画面1回分を基準に動いているのです。

具体的には、ゲームの処理は 1/60秒以内に必ず終わらせるようにします。速すぎる分には構いません。そして、処理が終わると、CPU は画面描画が終了するのを待ちます。

ついでに言っておけば、ここでいう「ゲームの処理」では、一切画面を変更しません。画面描画中に画面を変更しようとすると、表示が乱れるためです。


右に概要図を示しています。橙色の部分が敵関連の処理で、敵が増えればどんどん処理も増えます。
そのままではゲーム進行状況で処理の量が変化し、速度が変わってしまいます。
それを、ピンクで示した「描画終了待ち」で一定の速度に整えています。

そして、画面描画が終わったタイミングを見計らって、画面を変更します。これによってゲームの速度は安定しますし、画面も乱れず、綺麗な画面が表示できます。

描画タイミング待ちには2つの理由があるのです。


そして、次の1/60秒のゲーム処理を開始します。これが、ゲーム作成の基本中の基本となります。


次ページ: ジオメトリ演算


前ページ 1 2 3 4 次ページ

(ページ作成 2013-11-05)
(最終更新 2014-12-02)
第2版 …他の版 初版

前記事:セガ・サターン     戻る     次記事:サターンのCPU
トップページへ

-- share --

250100

-- follow --




- Reverse Link -