イースⅠ・Ⅱ通史(19):PCエンジンCDROMの登場
冬コミで出すつもりの第2巻はPCエンジン版の『イースⅠ・Ⅱ』をどのように、何を考えて制作したのか、それは結果的にはオリジナルスタッフの方向と合っていたのかの答え合わせなんかを、1巻書いた後、オリジナルスタッフが思い出したことなんかを補足しつつ書いていくのだけど、そのターゲットになっていたPCエンジンCDROMももはや30年以上前のハードで、知らない人も多いだろうから、まず制作されたプラットフォームのPCエンジンについて説明しておきたい。
PCエンジンは1987年秋にNECホームエレクトロニクスから発売されたゲームマシンだ。
ポストファミコンを狙って作られたゲームマシンで、 ハドソンが開発したLSIを中心にした、当時としては高速、かつファミコンと比較して、圧倒的に強力なグラフィック・オーディオ性能を持っていて『R-TYPE』の移植などで名を馳せることになった。
そのPCエンジンにCDROMを繋いだのがPCエンジンCD-ROM2(CDロムロムと読む)。
史上初のCDROM搭載ゲームマシンで、しかも、ほぼ史上初の民生用CDROM搭載ハード。
1988年12月に発売されたのだけど、写真で分かるとおり――
- PCエンジン本体
右側。なおPCエンジン本体のAV出力は使わず、インターフェースユニットからの出力を使う。 - 台も兼ねるインターフェースユニット
RAMやいろいろな基板が入っている - CDROMドライブ
当時はCDそのものもまだ高かった時代だ。
この3つを組み合わせて、一つのゲームマシンになるようになっていた。
そして、お値段がとんでもない。
当時、物品税があったのでCDROMドライブとインターフェースユニットが別売されているのだけど、この2つをあわせて、なんと59800円!(後にセット売りに変更されたとき、57300円に値下げされる)
PCエンジン本体と合わせて、約85000円のゲームマシン!
このとんでもなくお高いゲームマシン用に『イースⅠ・Ⅱ』を作ることになるのだけど、それより前に、まず発売時の一般のCDROMに対する理解についてまず書いていきたい。
当時CDROMに代表される光学メディアは最先端中の最先端で、LPなどと違って非接触で半永久的な寿命があり(大嘘だったけど)、そして無限の容量を持っているというのがウリだった。
上は1987年9月売りのコロコロコミック10月号に掲載されたPCエンジンの特集に掲載されているCDROMの宣伝だけど「CD1枚の容量は、今まで出た全ゲームが入るぐらい巨大だ」というセリフと超メモリシステムでわかるとおり、ファミコンのROMと似たようなもの、という理解だったことがわかる。
そして容量については、全くの本当だった。
当時のCDROMの規格で、データを入れていいのは74分ではなく60分までだったので540メガバイトが最大容量だったが、これは当時のファミコン、セガ・マークⅢといったコンソールゲームマシンで使われていた半導体ROMからすると、冗談ではなく無限の容量と言っていい容量だった。
88年当時の半導体ROMは標準になりつつあったのは1~2メガビットで、容量としては128~256キロバイト。つまり0.125~0.25メガバイト。ギガバイトにすると0.000125とか、とんでもなく小さな数字になる。
当時、最大容量のROMにあたる、8メガビットでようやく1メガバイト。
CDROMの1/540の容量で、その点では疑いもなくCDROMは宣伝通りの無限の容量を誇る代物だった。
だがCDROMはディスクで、ディスクの上でゲームは動かない。
ゲームを動かすためには、CDROMからRAMにゲームを読み込み、RAMの上でゲームを動かさなければならない。

ところで当時、ROMはコンピュータに直結されている代物で、ROMの上で本当にそのままプログラムが動いたので、ROMの容量=上の図でいうRAMと見て、ほぼ間違いではなかった(ただし書き込みは出来ない)。
だから1~2メガビットは128~256キロバイト程度のプログラム及びデータを置く領域があることになる。
つまりCDROMはプログラムから見ると上の図のRAMの容量が当時で言う容量の意味に近かった。
そういう意味では雑誌などでは明らかに誤解されていた(理解されていなかった)わけだけど、ではPCエンジンCDROMにはどの程度のRAMが積まれていたのか?
たったの64キロバイト。
ビット表現をすると0.5メガビットで、メガROMの半分。
PCエンジンを例にとるとローンチソフトのほとんどは1メガROM以上。
『THE功夫』すら1ロードでは動かない程度のメモリしか積まれていなかったのが、PCエンジンCDROMの真実だった。
ところが88年の初期に僕がハドソンに行ったときはハドソンの上の方は、このメモリ問題を致命的とは思っていなかった。
なぜか?
CDROMはパソコンのフロッピーと同じような外部記憶だから、パソコンと同じように作ればいいと思っていたから。
当時の8ビットパソコンのメモリは64キロバイト程度で、それでフロッピーでゲーム作れるんだから、CDROMでも同じようにいけるだろうと思っていたわけだ。だから、もちろんメモリはあるに越したことがないのは、わかっていたが、作れないわけではない、と思っていた。
すすき野のザ・ロイヤルで「メモリもっといりますよ」って中本さんに言ったとき、中本さんはほぼ上のような論理を並べて「作れないことはないべや」と返した。
ところが、もうゲームを作るときプログラムも一度に扱うデータも大きくなってきていて、メガROMぐらいの容量は当たり前になっていた技術部の現役メンバーからは、それじゃあとてもゲームは作れないというので、最低1メガビット(128キロバイト)は欲しいと要求していた。
だけど、そんなことをすると値段が跳ね上がるので、88年春ごろに大モメした挙句、64キロバイトに決定した。(と記憶している。僕がハドソンに行ってちょっとして決まったという記憶)
あまりにメモリが少なすぎるというので『桃太郎電鉄』の飛田雅宏さんも、『R-TYPE』の和泉勇さんも「ゼンゼン分かってない、こんなんじゃゲーム作れないよ!」って怒っていた。
ところでメモリが64キロバイトだろうと、上の人たちが思っていたようにフロッピーディスクのようにCDが使えるならば、致命的な問題にはならなかったかもしれないが、残念ながらそうではなかった。
CDROMはCLVで、データの読み込み位置を探すシーク、すなわち読み込む位置にヘッドを動かすときに多大に時間がかかる構造だ。
フロッピーのような使い方をすると途方もなく遅いのだ。
CLVは”Constant Linear Velocity”、すなわち線速度一定。
容量を稼ぐのに有利だが、シークに時間がかかる構造になる。540メガバイトの容量の代わりにアクセスの容易さを失ったとも表現できる。
世の中のアクセスが高速な物理的に回転するドライブは、ほぼすべてCAV、”Constant Angular Velocity”=角速度一定方式。
おまけに当時のドライブはシークが公称で最大3-5秒なんてスペックで、実際はもっと遅かった。
だから例えば2箇所から64キロバイトずつデータを仮に読むと…
- 1~3秒ぐらいヘッドを移動させ、読み込み位置に移動させる。
⇒0.5秒(読み込み) - 1~3秒ぐらいヘッドを移動させ、読み込み位置に移動させる
⇒0.5秒(読み込み)
と、だいたちょっと読み込むと3-4秒ぐらいは止まってしまい、もちろん読み込むものが増えると、ヘッドを移動させる時間は増えるので、それはそれは遅い代物だった。
簡単に書けばCDROMはデータの持ち方を工夫しないと、とんでもなく遅いメディアになる特徴があり、だからCDでデータを高速に読み込むためには、データの配置と持ち方それ自体を考えなければならないのだけど、もちろん当時のハドソンにそんなノウハウはない。
というか、そんなノウハウを持っている人間は世界中見回してもほとんどいなかったのは断言できる。
しかも、さらにマズいことに、当時のハドソンのCDROMシミュレータは全くCDROMのシークタイムをシミュレーションしていなかった。
だから88年に僕がハドソンに行ったとき、みんなフロッピーディスクを使う感覚で、バリバリCDROMから読み取る構造でゲームを作っていた。
そして僕はそれ(主に『天外魔境1』の開発途中版)を見て「うわーこれ実際のCDだとクッソ遅いんだけどな」と思ったし、それを言ったのだけど、答えは「はあそうなんですかー」だった。
そんなこと普通は実際に直面しないとわからないし、だいたい作るのに必死なんだから、考える余裕もない。
それに普通に設計すれば、あちこちを何度も読む構造になるのが当たり前だ。
そして、実際にゲームを本物のCDに焼いてみて、初めてその遅さを実感したわけだけど、もちろんそれは設計から根本的に直さないといけないので、直せるわけもない。
だから1988年末に発売された『ファイティング・ストリート』にしても、『No・Ri・Ko』にしても、細切れのデータを読みまくる構造になっていて、もちろんとんでもなく遅くて、手に入れたユーザーの一番の不満は「CDROMは遅い!」になっていた。
でも普通に考えると速くしようがないわけで、外向けにはCDROMは540メガバイトの無限の容量を誇る夢のメディアと宣伝されてはいたけれど、ハドソン技術部内部では「オチョコで海の水をすくうようなモノ」と揶揄され、絶望的な雰囲気になっていた。
追記しておくと、この当時のコンソールゲームマシンはファミコンディスクシステムを除いて、ロード時間なんて実質存在していなかった。だから当時の感覚ではゲームは電源を入れた瞬間に起動するものなので、ロード時間が特に長く感じられた、というのも事実だと思う。
このガッカリな雰囲気が変わり始めたのが1988年の12月~89年1月初頭だった。
アルファシステムの佐々木社長がPCエンジンのBIOSの機能を見ていて、ADPCMバッファがメモリとして使えることに気がついたのだ。
これはアルファシステムで移植することになっていた『ワンダーボーイⅢ モンスターレア』の準備をしているときに気がついたのだろうと思っている。長谷川君は、佐々木社長の事を「楽することの天才」だから、こういうものを見つけられるんだといっていた。
ADPCMはオーディオの再生ハードだけど、再生するADPCMデータを読み込むためのメモリが64キロバイト搭載されていて、ADPCMを再生しないときはADPCMバッファ用メモリは実はデータ置き場として使えることがわかったのだ。
ADPCMのメモリは直接プログラムが実行できる場所ではないので、データ以外は置けなかった
この事実は決定的だった。
なんせデータ+プログラムなら0.5+0.5=1メガビットに等しいゲームを書けるようになったのだ。
シークが遅くても、メガロムならば、そこそこのゲームが動かせる!
CDROMシステムの実用度は跳ね上がり、技術部は色めきたった。
しかも、ここでもう一つ、とても重要なことがわかった。
ADPCMはCD上の位置と時間を指定して再生を始めると、自動的に連続的にADPCMバッファにデータを読み込みながら再生していく機能があったのだけど、自動的に読み込む機能と音の再生は別で、読み込むデータを指定すると、指定時に一瞬ゲームが止まるだけで、あとはゲームが動いたまま、自動的にADPCMバッファにデータを読み込み、絵の切り替えしたり、データの差し替えを行うことが可能になった。
この通称バックグラウンドリードと呼ばれる技術が、飛田・和泉コンビによって実用的にゲームで使えるように整理され『コブラ・黒竜王の伝説』に、アドベンチャシステム(僕と飛田さんの設計によるivのデビュー作でもある)と共に投入され、CDROMの容量をフルに使ってゲームを作ることが出来るようになった! と誰もが思った。
ところが、なんとADPCMのメモリを高速にメインメモリやVRAMに転送するとデータ破壊が起こる事実を、これまたアルファシステムの佐々木社長が発見した。
この事実は『黒竜王の伝説』のデバッグ中に発見され、黒竜王のサボエラーのシーンで出やすいのでサボエラー現象と呼ばれていた謎の画面が壊れるバグの原因を突き止める結果になったのだけど、もちろんひっくり返るほどの大騒ぎになった。
でも、プログラムで対処すればメモリ破損は回避出来ることが分かり、メモリ破損を起こさずにADPCMを読み書き出来るルーチンをCDROM BIOSを作った小林さんが作った。
ただし、もともと遅かったADPCMバッファが、さらに遅くなったのだけど、それもメモリが64キロバイト増える事実の前には問題ではなかった。
ところで余談なのだけど、なんとこのサボエラー現象を発見したのは『黒竜王』の半年ほど後に、僕が『イースⅠ・Ⅱ』のシナリオの修正のためにとっ捕まえた長山豊君だったと、最近わかってビックリした。
こうして最終的にADPCMバッファは音を出さなければ、チョット遅いけど64キロバイトのデータバッファとして使用出来るようになり、トータルで1メガビットのゲームを書けるようになった技術部はCDROMに対して、結構ハッピーな気持ちになれた。
そしてADPCMを利用すると1メガビットのプログラムを書けるようになったPCエンジンCDROM黎明期を背景に『イースⅠ・Ⅱ』の製作は始まるのである。
5件のコメント
コメントは現在停止中です。
懐かしい記事をありがとうございます。
F1サーカスを作っていた当時の記憶が蘇ってきました。
たしかにCDからの読み込みは死ぬほど重くて驚きました。
そしてADPCMのリアルな音も良かったです。鈴鹿のピットに行って本物のF1のエンジン音を収録できたのも良かった。
当時はCDの読み込みで苦労しましたねー(笑)
ハドソンから共有されるツールがとても使いやすかった。
などなど・・・芋づる式に記憶が蘇ってきました。
F1サーカス、楽しかったですねー
僕は大好きなゲームでした。今でも実は公式ゲームより面白いと思ってたり…w
今 実機でCD-ROM2をプレイしても、当時クソミソに遅いと言われてたほどにロード長く感じないんですよね(ソフトによってはタイミングや頻度に苦笑することはあれ)。
いかに今のゲームでロード時間に耐性がついたのかを実感します。
ところで重箱の隅で恐縮ですが、書籍になる前のほうがいいと思いますので、コブラの敵キャラは「サボエラー」ではなく「サボイラー」ですね。
BIOS書いた小林さんからも突っ込まれましたw 「サボイラーだよ!」ってw
覚え間違いの原因って、
サボイラーの画面でエラーがでるからサボエラー……
なんてそういうネタをかました人が当時居たとか、じゃないですかね。