1990年6月 – CDROMを拡張する!?

イースの製作メモの最後で書いたが、天外2の開発を始めるからやってくれ…と話された後、中本さんとしばらく話し込んだ。
1990年半ばには、僕はフリーでの税金処理の面倒くささ(これも一度ブログで書きたい話だ)に参って、当時、角川メディアオフィスの編集長だった佐藤辰男さんの誘いを受けて、角川メディアオフィスの社員になっていた。

角川メディアオフィスは、角川歴彦氏によって創設された角川書店の子会社。この会社のメンバーの大半が3年ほどして、角川のお家騒動に巻き込まれる形でメディアオフィスを退社し、メディアワークスの創設に関わる事になる。
そしてこのメディアワークスが後に角川歴彦氏が角川書店に戻ることになり、最終的に角川の傘下に入る形になる。
このあたりのビックリな話も一度書いてみたいところだw

例によってどっかで食事して、そのあと飲んで…という流れだったはずだが、大雑把にはこんな内容だった。
「天外2をよぉ、作るとして、今のCDROMだとどうなんだべさ?」
「ビジュアルはイースと同じが上限。戦闘はノーアクセスは無理で、バックグラウンドリード必須。ちょっと豪華な天外1ですね」
「そんなもんか?」
「そんなもんですよ」
「だって」


僕は続けた。
「仮に天外1みたいな感じで国に分かれてるとして、1つの国のマップが例えば例えば256×256が1マップとしてインデックスつけてセコく削って圧縮したとして、15-20キロは食いますよ。これはメイン側に置くしかないじゃないですか。ADPCMの読み取りは遅いから。イースでも基本的にマップはメイン側(ADPCMではないメモリ)にしかおいていませんしね。これで最低2バンクでしょ? 128×128って設計もあり得ますけれど、128×128って8x8の64画面しかないですからホント狭いからやりたくないんですよ」

当時のゲームマシンでは全て8x8ドットのキャラクタを基本に4つまとめて16×16ドットを地形1ブロックにして、ドラクエのようにマップを作るのが普通の方法だった(これの方がメモリを食わない)。PCエンジンでは、これをCELL(セル)と読んでいた。
1画面は当時256×192ぐらいだったので、32キャラx24キャラ=16セルx12セルってことになる。ただし、もちろん正方形の方が計算しやすいので、作るときは16セルx16セルの正方形を1画面として扱っていたから、上記のような計算をしていたわけだ。
画面といわずにブロックとか言えば良かったんだけど、内部的には32x32の画面として扱っていたので、画面って言ってたんだよな~

「そりゃそうだなぁ」
と、中本さん。
「あと、メインメモリに常駐しないといけないのがメニュー周り・システム・戦闘ルーチン…サウンドデータ、いろいろやったら4バンクぐらい食いますよ。これでメイン側はほぼ終わっちゃって、残りはADPCDMだけ」
「ふむ」
「となると、ADPCMに置く事になるのが、マップのキャラ・プレイヤーキャラ・敵のデータ…ともかく基本的にはVRAMに転送するメインものと、圧縮されたメッセージデータ。ぐらいですけれど、天外1は対面戦闘じゃないですか」
僕はなおも続けた。
「だから天外2もそうなると思うんですよ。対面戦闘でしかも天外1ってキャラでかいのが標準だったから、でかいのもいるでしょ? ちょっと種類置くだけであっというまにメモリ食ってパンクですよ。せいぜい4種類もおけば終りだと思います。もちろんそれぞれについて色変えを2種類ずつとか用意したら8種類とかになりますけど、これじゃゲーム成り立たないから、データをCDから読むしかない。となるとバックグラウンドリードが確定になっちゃうわけですよ」

「バンク」ってわけの分からない言葉を説明するため、ここでPCエンジンのメモリ管理を解説。
PCエンジンのCPUはハドソンが65c02をベースに拡張した物で、直接扱えるアドレス空間は64キロバイトしかない。ところが当時のゲームは既に64キロバイトじゃ全然足りないサイズになっていた。
そしてバンクはPCエンジンの64キロバイト以上のメモリを扱うための仕掛け。別に珍しい方法ではなく、当時はPC-8801とかの8ビットPCでは普通の方法で、ファミコンでもMMC(メモリ・マネジメント・コントローラ)という名前で、良くカートリッジに載せられていたのだけど、PCエンジンでは最初からCPUの機能として搭載していたということだ。
どういう仕掛けかというと、まずメモリは8キロバイトの塊で扱うと決め、これを1バンクと呼ぶ。メモリは、このバンクが0からズラズラと並んで本のページみたいに数字で任意のページを指す事ができる。これを「メモリバンク」と呼ぶ(正式名称ではない)。
そして、PCエンジンの「プログラムを走らせたり、データを読める範囲」の64キロバイトも、8キロバイトの塊に分かられている。こっちはアドレスバンク0-7と呼ぶ事にする。
そして、例えばメモリバンク0をアドレスバンク1に出して、そこでプログラムを動かしたりRAMならデータの書き換えをしたり出来たわけだ。違うたとえをするなら、アドレスバンクは作業用の机、メモリバンクは本棚。机は8つあって、本棚から机に自由に本を出して読み書きできるという仕掛けだった。
ちなみに実際は8アドレスバンクのうち一つはシステムの都合で固定される(正確には固定されるわけではないが、実質固定されると考えたほうがいい)ので、作業用の机として使えるのは7つだった。

「あとビジュアル(今でいうムービー)は、自分で作ったから知ってますけど、圧縮は速度を考えると今のLZS以上のものを使うのは難しいし、ツールやいろいろなものの改善をしてもせいぜい1-2%しか圧縮率は上がりませんよ。となると、イース以上のものを作るのはものすごく難しいです」
「そうかぁー」
中本さんは言うと上を向いてヒゲを撫で回した。

当時のマシンは非常に非力で今では普通に使えるハフマン+LZS系なんて使うとデータ展開に時間かかりすぎて破綻した。
かなり高速だったPCエンジンでも、ハフマンバイナリツリーで圧縮すると、0.5キロバイト弱/1Vsync(16.7msec)、LZ圧縮の場合で2キロバイト弱/1V程度の展開速度だった。また、当時は実際のスレッドを作るのがメモリの都合でとても辛かったので、擬似マルチスレッドで動かしていたが、画像1枚を展開するのにアニメーションを実行しながらだと平均して6-12V(0.1-0.2秒)。処理が厳しいときは30v、0.5秒ぐらい必要だった。

「なんでそんなこと聞くんですか?」
「今よ、CDROMのよ、メモリを拡張しようって企画が進んでるんだべさ。それで天外2を第一弾にしたいと思ってるんだべさ」
「えっ!?」
驚いた瞬間だった。
正直、イースを作った段階で、技術的な意味ではPCエンジンCDROMはほぼ使い尽くしていた。
だから、天外2を作ってくれと言われたのはうれしかったが、例えばアニメーションをやるにしてもあとはBIOSを経由しない、今でいうストリーミングのようにCDROMから直接データを読み取って駆動する方法ぐらいしか技術的にやれることは残っていなかった。
またムービーに限って書くなら、その質も想像がついた。
なんせこっちはストリーミングがあるのが標準のCD-iで、散々その研究をしていて、せいぜい秒8-12枚も動けば運がいいってこともわかっていた。
だいたい「まともな画質で、まともにムービーをやるのはほぼ無理」なのは明らかだった。
というのもだ。CDROMは雑には秒150キロバイトでデータがやってくる(等速)。全画面の表示をPCエンジンで仮に行うとすると、32キロバイト。秒4枚しか動かないって話になる。超高速ルーチンで例えば2倍に圧縮できたとして、ようやく8枚。しかもやってくるデータをVRAMに転送するのに猛烈にデータバスもCPUも使うから、ストリーミングをすると圧縮するのはとても厳しい(CD-iではハードウェアがやっていた)。
だったら画面を小さくするほうがいい。
で、テレビと同じ8枚に設定したとして、150/8=18キロぐらい。画面の半分ぐらいを16色のアニメーションでやることが出来る計算になるが、これだと「音」が全く出ない事になってしまう…と考えていくと、どんどんやれることがショボくなっていくし、それになにより等速でそんなアニメーションデータを入れると「CDROMで扱えるアニメーションはCDROMの容量に等しく最大74分」ってことになり、しかもCDオーディオは使えない。
だったらイース式の手作りアニメーションをやったほうがマシ、というのが僕の判断だった。

後にBIOSを経由せず直接ハードウェアを操作するソフトで登場した。ただ画質は想像の範囲だったし、これをやるメリットがどれだけあるだろうと僕は思っていた。

「じゃあ、岩崎は拡張できるとして、容量どんだけいると思ってるんだべさ?」
「互換どうすんですか?」
「今度、カードにSRAM積めるようになんだよ。だから今のCDROMの人はそのカードを買ってもらうとバージョンアップできるって計画だべさ」
「どんだけ(カードにRAMは)積めるんですか?」
「いまんところは4メガが最大だべさ」
「聞く必要ないですよ。4メガに決まってますよ
「4メガかあ…4メガ高いんだよな…」
「で、中本さん。天外2は拡張CDで作ると考えていいんですか? そうか違うかは決定的な違いになりますから、決めておかないと怖いですよ」
「今、絶対とは言えないけどよ、ほぼ絶対だと思っておいていいべさ」
「わかりました。じゃあそれを前提に考えます」

さすがに、このとおりの会話をしたわけじゃないが、内容の流れはほぼ正しいのは自信を持って言える。
聞かれたとき、なんでこんな分かりきった事を中本さんは聞くんだろうと思いながら解説してたので、ものすごく良く覚えているのだ。
歳を食った今なら、自分が考えている方向が正しいかの確認をするための資料の一つとして意見を聞いていたのだと良くわかるわけだが、当時は「中本さんも技術者なんだから、どう考えても自分で分かるはずで、なんで聞くんだろう」と本当に不思議に思っていた。

つまり、バラしてしまえば、天外2は最初から実質的にスーパーCDROM用に設計されていた。
ただ当たり前のことながらスーパーCDのスペックや中身が決まらないと発表できないので、黙っていただけだったのだ。
こうして天外2はスーパーCD(当時は名前はなかったけど)で作っていくことだけは決まった。

LinkedIn にシェア
Pocket

3件のコメント

  • AGENT: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.151 Safari/534.16
    たしか月刊PCエンジンに掲載されていた座談会だと思いますが、
    岩崎さんが「天外IIはビジュアルシーンはフル画面でフルアニメーション、拡大縮小、回転を実現する」と仰っていて
    凄く期待して発売を待ちわびたのが懐かしいです。
    スーパーCDのシステムカードのRAMが4メガになっていたら、
    その後のゲームソフトの内容もさらに充実したんでしょうね。

  • AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; Tablet PC 2.0)
    ああ、やっぱりそうだったんですね。
    当時は全然新着画面が紹介されないのが不思議でした。
    仕様が決まるまでの期間中に進められる作業は、シナリオとか美術設定やツール作成など以外で、どのような物があったのでしょうか?

  • AGENT: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16
    >> も 様
    次ぐらいから、そんな話をちょうど書いていきます。結構やることあったんですよ、エエ。
    >> shi 様
    まさにそれが、タイトル・オープニング1です。PCエンジンで自分が書いたプログラムの最高傑作は間違いなく天外2の鬼怒のシーンとオープニング1(球が飛ぶヤツ)です。
    次がエメラルドドラゴンのタイトル・オープニングかなー…

コメントは現在停止中です。