もう一つのライブラリ
このページは、以前に書いた内容に誤りがあったことを訂正するためのものです。
セガサターンのゲームについて、僕はSGLが「最初期の頃を除くほとんどのゲームで使われたのではないか」と書いていました。
しかし、そうではない、という情報が寄せられました。調べると、僕の認識が誤っていたようです。
お詫びして訂正するとともに、経緯を説明しておきます。
目次
セガ・サターン(別ページ)
サターンの3D性能(別ページ)
サターンのCPU(別ページ)
太陽系の惑星たち(別ページ)
細かな話題(別ページ)
次世代ゲーム機戦争(別ページ)
反論紹介(別ページ)
お詫びの骨子
SGL を使っていないゲームが多数ある、ということは、記事に書いた「多くのゲームで SH2 は2つともフル活用されていた」という主張が誤りであることを意味します。
記事を書いた最大の動機は「サターンのサブ CPU は実際にはほとんど使われていない」という都市伝説に、一石を投じたい気持ちでした。
実際、記事を書いてから「ちゃんと使われていたんだ」という反応をしてくださる方も多く、目的は達成できたと思っています。
しかし、今回寄せられた「SGL はそれほど多くは使われていない」という証言には十分な信憑性があります。
ただ、情報を寄せてくれた方も、これが即「サブ CPU を使っていないことを意味するわけではない」ことも教えてくださいました。
つまり、こういうことです。
・初期を除く、ほとんどのゲームでサブ CPU はフル活用されていた、というのは誤り。
・ただ、SGL を使用したゲームは一定割合で存在し、これらのゲームではサブ CPU を活用している。
・SGL を使用していないゲームでも、サブ CPU を活用しているものはある。
「全然使われていない」わけでもなく、「ほとんど使われていた」わけでもありません。
どの程度の割合でサブ CPUが活用されていたかまではわかりませんが、以下詳細を説明いたします。
2つのライブラリ
元記事にも、SGL のことを「新 OS と呼ばれた」という表現をしていました。
新があるなら旧もあるわけで、サターンには、セガから2つのライブラリが提供されていました。
この二つ、どうやら「家庭用部署」と「業務用部署」で、別個に開発されたもののようです。
同じようなものを別々に開発していた、というと、社内的に仲が悪いように見えますが、そういうことではありません。
セガではハードウェアを作る部署と、家庭用ゲームを作る部署、業務用ゲームを作る部署が分かれていました。
ハードウェアの部署は、基本的にはソフトは作りません。
試作中のハードをソフトを作る部署に渡し、改良のための意見を貰ったりはしていました。
その意味では、ハードとソフトの両方を作れる会社と言う利点は活かしているのですが、部署としては別です。
ところで、メガドライブの時は、業務用に互換基板が作られたのはヒットの後でした。
(メガドライブは 1988年発売。互換基板で最初に発売された「コラムス」は、1990年)
しかし、サターンの際には、業務用との同時開発でした。
このため、新ハードの試作品は、家庭用部署と業務用部署に同時に渡されることになります。
ハードだけあっても、すぐにゲームを作ることはできません。
まずは、ゲームを作る「基本部品」となる、ライブラリから作っていく必要があります。
話の流れを切ってしまいますが、非常に非常に参考になるページがあったので、リンクしておきます。
この後、2つのライブラリを紹介しますが、それらのマニュアルが置いてあります。
他にも、社外秘だった各種開発資料の英語版のPDFを収集してあります。
ハードウェアマニュアルや、SGLのマニュアルは、英語になっていることを除けば、僕が紙で見たのとほぼ同じです。
解析したファンがまとめたとか、フェイクなどではなく、流出物です。
いったいどういう経路で電子版元データを入手したのだろう…。日本語では印刷して冊子として配布していましたが、海外では最初から PDF だった、というような可能性はあります。
これらの英語マニュアルは「日本語からの翻訳」のようですが、日本語マニュアルの流出がない以上、当時を伝える一級資料です。
SBL
サターンは、プレステとの対抗上「多くのサードパーティの参加」を促す必要がありました。
このためには、開発経験が乏しいサードパーティでも、C言語だけで十分にハードウェアを扱えるようにする必要があります。
このため、ライブラリの作成が急務となったのです。
家庭用部署では、サターンに参加してくれるサードパーティのために、早期にライブラリを準備しました。
このライブラリは Sega Basic Library (SBL)と呼ばれます。
(一般的にこう呼ばれていたようですが、正式名は Saturn System Library だった様子です)
僕は SBL を使ったことが無いので、残念ながら詳細な解説を行うことができません。
以下は、マニュアルを斜め読みし、用意された命令群から感じられる雑感です。
メガドライブの時代は、アセンブラでプログラムを作るのが一般的でした。
しかし、サターンではC言語を使うのが前提となっています。
これは、時代の変化によるものでもありますし、使用される CPU の設計思想の違いでもありました。
ここで1つ問題となるのが、C言語では CPU のレジスタを直接制御するような方法が用意されていないことです。
割り込みの禁止、CPU の内部モードの設定などは、やはりアセンブラで記述するしか方法が無いのです。
そこで、アセンブラでないと制御できない非常基本的な部分について、C言語から呼び出せる形で、アセンブラで記述されたプログラムを準備することになります。
基本的な事ですから Sega Basic Library なのです。
C言語でも、メモリマップド I/O で設計された I/O ポートをアクセスすることはできます。
でも、それらも「可能である」というだけで、C言語が本来行うべきことではありません。
ジョイパッド入力の取得、CD の読み込み、VDP1 へのコマンド受け渡し、VDP2 のレジスタ設定、サウンド用 MC68000 との通信やサウンドチップの制御、SCU を使った DMA 転送…
こういったものが、SBL の主要機能でした。
ライブラリと言っても「便利に扱う」ためのものではなく、「C言語からハードを直接制御する」だけのものです。
ハードが準備した機能以上のものとしては、3D演算・ポリゴン表示機能も作られています。
ただし、これも VDP1 を制御する機能の一部として作られているだけで、必要最低限しか機能が用意されていません。
また、ハードウェアとC言語の橋渡しが主な目的なので、サブCPUをライブラリが勝手に使用するようなこともなく、サブCPUの使用はプログラマに任されていました。