2011-01-26 Wed [ 昔のこと::古の技術 ]
PCエンジンの牧歌的なROM開発の時代は1988年の年末に終わり(もちろん開発は1988年には始まっていたので開発者にとっては88年半ばからだけど)、CDROM時代に入っていく。
では、そのCDROMの開発機はどうなっていたかというと上のとおり。Hu7とは別に、もう一個Hu7CDという新しいパッケージが登場する。PCを除く点線の中身がソレ。以下がハードウェアのリスト。
当然ソフトもあってhu7用のBIOSのバイナリ、BIOSのシンボルファイル、ユーテリティ的なPCエンジン用のソース、あとCDエミュレータ、CDに書き込むソフト、CDからテープにバックアップ/レストアするソフト、ADPCMのエンコードソフト、などがセットに入っていたはず。
ここで時代的に説明しておかないといけない話を一つ書いておく。
現在ではCDROMだろうがDVDだろうが、マスター(工場でプレスするデータ)はBD-RもしくはDVD-RもしくはCD-Rで提出するのが常識だが、PCエンジンのCDROMのマスターはほぼ全てMT(8ミリビデオテープ)で提出していた。
というのも、最初はCD-Rが存在しなかったから。当たり前だが、存在しないCD-Rでマスターを入れられるわけはない。
そして当時、CDROMのマスターの方法として一応確立されていた方法はいくつかあったが、ハドソンが選んだのはExabyte社の8ミリビデオテープをコンピュータのデータ記録に使用したドライブを使う方法だった。だから8ミリビデオテープにデジタルデータを記録するExabyteというドライブを使って、テープに書き込み、次にそれをエラーチェックしてマスターとして提出する形になった(ちなみにこれは生産工場側、つまりNECと話し合いがもたれて、この方式になったはずだが、残念なことに僕はこれに決まった過程は知らない)。
この8ミリビデオテープはマスター提出には規格があり、専用テープを使う必要があったが、それ以外は別に専用ビデオテープの必要はなく、普通の市販のビデオテープが使えたので、高いExabyte社の純正品ではなく、富士フィルムの出していた8ミリビデオテープを使うのが僕とHahi君の標準だった。なんで富士だったのかというと、いろいろ購入してテストした結果、富士が一番エラーレートが低い気がしたからだ。
また、CD-Rがなかったので初期のCDROM作品ファイティングストリートなどのデバッグは本当に大変で、ともかくCDエミュレータでデバッグしまくり、最後にマスタリングし(製品と同じものを作る)、それでデバッグする方法を取ったが、エミュレータで1日遊んでいるのは結構大変だった。
これが1989年の半ばからCD-Rが登場したので、1989年の夏あたりから、デバッグにはCD-Rが使えるようになった。ところが初期のCD-Rは60分までしか入らなかったので、イースではデバッグに使えなかった。だからイースでは悲しいことに初期CDROMと同じマスタリングしてデバッグする方法しか使うことが出来なかった。
またCD-R自体の信頼性が恐ろしく低いのも大問題だった。すぐにライトエラーするし、エラーしなくても実はライトエラーを起こしていることがあるしとマスターとして使える代物ではなかった。ライターも恐ろしく神経質なハードウェアで、ちょっとした電圧変動でたちまちライトエラーを起こして、ディスクトレイを開いて、ベローンとエラーしたディスクをはき出すのだからたまったものではなかった。
実際、天外2ではデバッグにCDーRを使ったが、20台ぐらいCDライター並べていっせいに板焼きしていたが、20枚突っ込んだCD-Rのうち15枚ぐらいがベローンと吐き出されるとキレそうになったし、ハングアップ報告を受けても、プログラムのせいでハングアップしているのか、それともCDーRのせいなのか全く分からず、不安定さには本当に辟易とさせられた。
これが急速にマシになって、94年あたりではCD-Rでも出していいぐらい質は上がるが、僕は出したことはない。エメドラも確かMTで出した。
そして次世代(PS1/SS/FX)になると、問答無用でCDRでマスターを提出することになるが、これまたエラーチェックには結構苦労させられた…けれど、こんなのは余談だ。
また、余談の余談だが、当時はCDROMの容量そのものがプロテクトになったので、PCエンジンでは全くプロテクトがかかっていない。リージョンチェックもないので、海外版CDROMのTurboCDのゲームも全部動く。
と、当時のマスター事情がどうだったか、まで説明したところで、開発機が実際にどんな風に動作するのか?
と、こうしてHu7側からは98+ハードディスクがCDに見える…という仕掛けだ。
当初はハドソンのCDエミュレータにはリードエラーをシミュレーションする能力がなかったので、イースの開発してるときにとても困ったので、エミュレータの開発をしていた小林さんに頼んでつけてもらった。確かCTRLを押しているとREAD ERRORで、キーコンビネーションのいくつかで特定エラーを発生させるという方法だった。
「イースに至るまでエラーチェックされていなかったのか?」と不思議に思う人がいるだろうが、理由はある。
PCエンジンのCDROMはデータ部は二重化することが規定で定められていた。当時、CDROMの信頼性がどの程度か全く分からず、結構エラーが起こるかも知れないという理由で用意されたが(今から見れば笑い話でしかないが)、イースより前に発売されたソフトはデータトラックそのものを二重化し、それをCDROMの一番最後にバックアップトラックとしてつけ、代替データトラックとしてそのトラックを(トラック番号で)指定する簡単な方法で作られていた。
この方法は動くことが(原理的に)わかっていたので(テスト時に一度だけ代替トラックとメイントラックをひっくり返して読めることを確認するだけでいい)、誰も気にしていなかったが、イースでは当時のCDROMの容量の都合上、その方法を使えなかった。そのために代替データ部を別の方法で指定したのだが、誰も使ったことがない方法だったために正しい計算かどうか分からず、エミュレータにエラーをさせないと、テスト出来ないので、エラーを起こす機能が必要になったわけだ。
ちなみに、エラーさせてみたら、最初のうち動かなくてどうして動かないのかメッチャ悩んだのだが、該当する代替データの設定についてのマニュアルの説明がひどくてセクター数の計算にLead inが入る事実が全く記述されていないのが理由だった。当時、CDの構造を端から端まで知ってなかったら、理由が永遠にわからなかったのではなかろうかと思う。
では、このキットで、どういう開発方法が想定されていたのかというと
と、こんなプロセス。天外1の連中やアルファシステムの連中は、最初のうち、は上のようなプロセスでやっていたわけだが、正直、たいそう面倒くさいうえに、大問題があった。
なぜならデバッグはHu7側で行われるわけだが、デバッガにシンボルテーブルというものを一緒にロードしないと、ソースコードとまるで対応がつかない謎の画面でデバッグするハメになる。つまりシンボルテーブルがほとんど必須(正確にはBIOSのシンボルテーブルと、プログラムのシンボルテーブルの2つを合わせたものをロードする)。
ところがシンボルテーブルはアセンブルしてリンクするときに出来上がる=(1)で出来上がる。これをデバッグするためにはHu7側のPCにデータを持ち込まなければならない。
今なら別にどってことはない。ネットワークでホイで終りだが、当時はネットワークなんてなかった。つまりFDでやりとりするしかなかった。そして、いちいちシンボルファイルをFDに書き込んで持っていく…こんな面倒くさいことをやってられるわけがないので、僕らがイースを作るときには、ハドソンの連中は、とんでもない裏技でソフトを開発できる状態にしていた。
それが左の図。SCSIはディジーチェーンで繋ぐことができるので、原理的には2台のPCを繋いでしまっても構わない(乱暴な説明で現実には様々な制限はある)。このムチャな方法を編み出した結果、以下のような開発が可能になった。
つまりシンボルテーブルをどっかからコピーする必要が一切なくなり、とても効率良く作れるようになる素晴らしいシステムだが、1つ大きな問題があった。それは当たり前だが、SCSIハードディスクに対してコマンドを発行するパソコンが2台いること。だからCDエミュレータを起動しっぱなしで、CDエミュレータハードディスクにうっかり書き込んだりすると、ドカーンといろんなものがブチ壊れる危険性があり、イースでも天外2でも、僕もHahi君も2回ぐらい事故をやらかしている。
しかもこの事故、壊れるのは運なもので、なんとも冷汗だった。
この開発システムは裏技的な方法だし事故が生じる可能性もあるからサードパーティには推薦できないし、だいたいもともとの開発でエミュレータ用とHu7用に2台PCがいるのは余りに不合理だ…ということで、最終的に出来上がったシステムが左。
エメラルドドラゴンを作るときは、このシステムを使った。天外2開発の最後あたりで、出来ていたのだけど、常駐CDエミュレータの安定性が初期は低くてトラブルが怖かったので、僕が使ったのはエメドラが最初だった。
CDエミュレータが「常駐ソフト」になって、ついに一台で全プログラムを作れるようになった。
2つキーボードいらなくなったし、事故も起こらなくなったし、本当に楽だった。
だけど、ここに至るためには結局、仮想386によるEMSが必要だったり、3年以上に渡って改良してきたから出来たことだ。やはりゲームを作るためのノウハウを溜めるのには時間がかかるな、と思うのだった。
あと、この時代の開発環境やPC事情について補足記事を書く予定。
ところでだ。
これから先、しばらくTwitterやいろんなところで、自分の知り合いが作ったゲームが連射で発売されまくるので、以下、その宣伝。
■エメラルドドラゴンの作者で、そして幼馴染(本当!)の飯君がやっているパタポン3。
■公式ページ
■体験版ダウンロードページ
■超古くからの知り合いが沢山いるアリカの作品。
■最近、お知り合いになったアートディンクの方の2作品
■そして、やっぱり最近知り合った光栄の方の作品
■そして、やっぱり最近知り合った方の作品
年度末とはいえ、知り合い作品が7本って…固まって出すぎじゃない?(;´ω`)
では、そのCDROMの開発機はどうなっていたかというと上のとおり。Hu7とは別に、もう一個Hu7CDという新しいパッケージが登場する。PCを除く点線の中身がソレ。以下がハードウェアのリスト。
ハード名 | 簡単な説明 |
Hu7用インターフェースユニット | PCエンジンCDROMのインターフェースユニットと同じもの。Hu7の上につけられるように改造されている。 |
Cバス専用インターフェース | PC-9801にPCエンジンCDROMのエミュレートをさせるためのインターフェース。CDエミュレータのPCは、結構速度が遅いPCでも間に合ったので、当時入れ替えられつつあったVMとかそういうヘボいモデルが使われることが多かった。 |
ハードディスク | ハードディスクはSCSIで、当時としてはとんでもなく大容量の384メガバイト。これが1台だけ入っているシステムと2台入っている(768メガってこと)の2タイプあった。これはハードディスクの値段があまりに高いもので、2タイプ用意したけれど、ほとんどのメーカーは768メガのシステムを購入したらしい。実際、イースで使わせてもらった2台も768メガのバージョンだった(音楽があるんだから768メガじゃないと話にならなかったが)。Exabyte社の8ミリビデオテープを使うMTドライブがついており、これでマスター納品やバックアップをした。ちなみに384メガのハードディスクがどれぐらい大容量だったのかというと、そのとき普通に市販されていたハードディスクで大容量の物が20メガバイト前後。一台だけで20倍とかなのだから、どれだけでかいハードディスクだったかわかる。お値段は当時で一千万円ぐらいしたらしい。 |
当然ソフトもあってhu7用のBIOSのバイナリ、BIOSのシンボルファイル、ユーテリティ的なPCエンジン用のソース、あとCDエミュレータ、CDに書き込むソフト、CDからテープにバックアップ/レストアするソフト、ADPCMのエンコードソフト、などがセットに入っていたはず。
ここで時代的に説明しておかないといけない話を一つ書いておく。
現在ではCDROMだろうがDVDだろうが、マスター(工場でプレスするデータ)はBD-RもしくはDVD-RもしくはCD-Rで提出するのが常識だが、PCエンジンのCDROMのマスターはほぼ全てMT(8ミリビデオテープ)で提出していた。
というのも、最初はCD-Rが存在しなかったから。当たり前だが、存在しないCD-Rでマスターを入れられるわけはない。
そして当時、CDROMのマスターの方法として一応確立されていた方法はいくつかあったが、ハドソンが選んだのはExabyte社の8ミリビデオテープをコンピュータのデータ記録に使用したドライブを使う方法だった。だから8ミリビデオテープにデジタルデータを記録するExabyteというドライブを使って、テープに書き込み、次にそれをエラーチェックしてマスターとして提出する形になった(ちなみにこれは生産工場側、つまりNECと話し合いがもたれて、この方式になったはずだが、残念なことに僕はこれに決まった過程は知らない)。
この8ミリビデオテープはマスター提出には規格があり、専用テープを使う必要があったが、それ以外は別に専用ビデオテープの必要はなく、普通の市販のビデオテープが使えたので、高いExabyte社の純正品ではなく、富士フィルムの出していた8ミリビデオテープを使うのが僕とHahi君の標準だった。なんで富士だったのかというと、いろいろ購入してテストした結果、富士が一番エラーレートが低い気がしたからだ。
また、CD-Rがなかったので初期のCDROM作品ファイティングストリートなどのデバッグは本当に大変で、ともかくCDエミュレータでデバッグしまくり、最後にマスタリングし(製品と同じものを作る)、それでデバッグする方法を取ったが、エミュレータで1日遊んでいるのは結構大変だった。
これが1989年の半ばからCD-Rが登場したので、1989年の夏あたりから、デバッグにはCD-Rが使えるようになった。ところが初期のCD-Rは60分までしか入らなかったので、イースではデバッグに使えなかった。だからイースでは悲しいことに初期CDROMと同じマスタリングしてデバッグする方法しか使うことが出来なかった。
またCD-R自体の信頼性が恐ろしく低いのも大問題だった。すぐにライトエラーするし、エラーしなくても実はライトエラーを起こしていることがあるしとマスターとして使える代物ではなかった。ライターも恐ろしく神経質なハードウェアで、ちょっとした電圧変動でたちまちライトエラーを起こして、ディスクトレイを開いて、ベローンとエラーしたディスクをはき出すのだからたまったものではなかった。
実際、天外2ではデバッグにCDーRを使ったが、20台ぐらいCDライター並べていっせいに板焼きしていたが、20枚突っ込んだCD-Rのうち15枚ぐらいがベローンと吐き出されるとキレそうになったし、ハングアップ報告を受けても、プログラムのせいでハングアップしているのか、それともCDーRのせいなのか全く分からず、不安定さには本当に辟易とさせられた。
これが急速にマシになって、94年あたりではCD-Rでも出していいぐらい質は上がるが、僕は出したことはない。エメドラも確かMTで出した。
そして次世代(PS1/SS/FX)になると、問答無用でCDRでマスターを提出することになるが、これまたエラーチェックには結構苦労させられた…けれど、こんなのは余談だ。
また、余談の余談だが、当時はCDROMの容量そのものがプロテクトになったので、PCエンジンでは全くプロテクトがかかっていない。リージョンチェックもないので、海外版CDROMのTurboCDのゲームも全部動く。
と、当時のマスター事情がどうだったか、まで説明したところで、開発機が実際にどんな風に動作するのか?
1)Hu7側にCDBIOSがロードされていて、動作している。
2)Hu7のインターフェースユニットを通して、エミュレータをしている98にコマンドが送り込まれる。
3)98のCDエミュレータがそれを解釈し、ハードディスクからデータを読み出し、Hu7にデータを渡す
2)Hu7のインターフェースユニットを通して、エミュレータをしている98にコマンドが送り込まれる。
3)98のCDエミュレータがそれを解釈し、ハードディスクからデータを読み出し、Hu7にデータを渡す
と、こうしてHu7側からは98+ハードディスクがCDに見える…という仕掛けだ。
当初はハドソンのCDエミュレータにはリードエラーをシミュレーションする能力がなかったので、イースの開発してるときにとても困ったので、エミュレータの開発をしていた小林さんに頼んでつけてもらった。確かCTRLを押しているとREAD ERRORで、キーコンビネーションのいくつかで特定エラーを発生させるという方法だった。
「イースに至るまでエラーチェックされていなかったのか?」と不思議に思う人がいるだろうが、理由はある。
PCエンジンのCDROMはデータ部は二重化することが規定で定められていた。当時、CDROMの信頼性がどの程度か全く分からず、結構エラーが起こるかも知れないという理由で用意されたが(今から見れば笑い話でしかないが)、イースより前に発売されたソフトはデータトラックそのものを二重化し、それをCDROMの一番最後にバックアップトラックとしてつけ、代替データトラックとしてそのトラックを(トラック番号で)指定する簡単な方法で作られていた。
この方法は動くことが(原理的に)わかっていたので(テスト時に一度だけ代替トラックとメイントラックをひっくり返して読めることを確認するだけでいい)、誰も気にしていなかったが、イースでは当時のCDROMの容量の都合上、その方法を使えなかった。そのために代替データ部を別の方法で指定したのだが、誰も使ったことがない方法だったために正しい計算かどうか分からず、エミュレータにエラーをさせないと、テスト出来ないので、エラーを起こす機能が必要になったわけだ。
ちなみに、エラーさせてみたら、最初のうち動かなくてどうして動かないのかメッチャ悩んだのだが、該当する代替データの設定についてのマニュアルの説明がひどくてセクター数の計算にLead inが入る事実が全く記述されていないのが理由だった。当時、CDの構造を端から端まで知ってなかったら、理由が永遠にわからなかったのではなかろうかと思う。
では、このキットで、どういう開発方法が想定されていたのかというと
1)プログラムを制作する(作るのは、想定はCDエミュレータPC)
2)CDエミュレートするハードディスクにプログラムを書き込む
3)BIOSをHu7側のデバッガーでロードする。
4)エミュレータ側でCDエミュレータを起動する
5)プログラムを実行し、Hu7側のデバッガーでデバッグする。
2)CDエミュレートするハードディスクにプログラムを書き込む
3)BIOSをHu7側のデバッガーでロードする。
4)エミュレータ側でCDエミュレータを起動する
5)プログラムを実行し、Hu7側のデバッガーでデバッグする。
と、こんなプロセス。天外1の連中やアルファシステムの連中は、最初のうち、は上のようなプロセスでやっていたわけだが、正直、たいそう面倒くさいうえに、大問題があった。
なぜならデバッグはHu7側で行われるわけだが、デバッガにシンボルテーブルというものを一緒にロードしないと、ソースコードとまるで対応がつかない謎の画面でデバッグするハメになる。つまりシンボルテーブルがほとんど必須(正確にはBIOSのシンボルテーブルと、プログラムのシンボルテーブルの2つを合わせたものをロードする)。
ところがシンボルテーブルはアセンブルしてリンクするときに出来上がる=(1)で出来上がる。これをデバッグするためにはHu7側のPCにデータを持ち込まなければならない。
今なら別にどってことはない。ネットワークでホイで終りだが、当時はネットワークなんてなかった。つまりFDでやりとりするしかなかった。そして、いちいちシンボルファイルをFDに書き込んで持っていく…こんな面倒くさいことをやってられるわけがないので、僕らがイースを作るときには、ハドソンの連中は、とんでもない裏技でソフトを開発できる状態にしていた。
それが左の図。SCSIはディジーチェーンで繋ぐことができるので、原理的には2台のPCを繋いでしまっても構わない(乱暴な説明で現実には様々な制限はある)。このムチャな方法を編み出した結果、以下のような開発が可能になった。
1)Hu7側で普通にプログラムを開発する。
2)Hu7側でハードディスクに書き込む
3)CDエミュレータ側でエミュレータ起動
4)Hu7側で普通にデバッグ
2)Hu7側でハードディスクに書き込む
3)CDエミュレータ側でエミュレータ起動
4)Hu7側で普通にデバッグ
つまりシンボルテーブルをどっかからコピーする必要が一切なくなり、とても効率良く作れるようになる素晴らしいシステムだが、1つ大きな問題があった。それは当たり前だが、SCSIハードディスクに対してコマンドを発行するパソコンが2台いること。だからCDエミュレータを起動しっぱなしで、CDエミュレータハードディスクにうっかり書き込んだりすると、ドカーンといろんなものがブチ壊れる危険性があり、イースでも天外2でも、僕もHahi君も2回ぐらい事故をやらかしている。
しかもこの事故、壊れるのは運なもので、なんとも冷汗だった。
この開発システムは裏技的な方法だし事故が生じる可能性もあるからサードパーティには推薦できないし、だいたいもともとの開発でエミュレータ用とHu7用に2台PCがいるのは余りに不合理だ…ということで、最終的に出来上がったシステムが左。
エメラルドドラゴンを作るときは、このシステムを使った。天外2開発の最後あたりで、出来ていたのだけど、常駐CDエミュレータの安定性が初期は低くてトラブルが怖かったので、僕が使ったのはエメドラが最初だった。
CDエミュレータが「常駐ソフト」になって、ついに一台で全プログラムを作れるようになった。
1)Hu7側で普通にプログラムを開発する。
2)Hu7側でハードディスクに書き込む
3)エミュレータ起動。常駐する。
4)Hu7側で普通にデバッグ
2)Hu7側でハードディスクに書き込む
3)エミュレータ起動。常駐する。
4)Hu7側で普通にデバッグ
2つキーボードいらなくなったし、事故も起こらなくなったし、本当に楽だった。
だけど、ここに至るためには結局、仮想386によるEMSが必要だったり、3年以上に渡って改良してきたから出来たことだ。やはりゲームを作るためのノウハウを溜めるのには時間がかかるな、と思うのだった。
あと、この時代の開発環境やPC事情について補足記事を書く予定。
ところでだ。
これから先、しばらくTwitterやいろんなところで、自分の知り合いが作ったゲームが連射で発売されまくるので、以下、その宣伝。
■エメラルドドラゴンの作者で、そして幼馴染(本当!)の飯君がやっているパタポン3。
■公式ページ
■体験版ダウンロードページ
■超古くからの知り合いが沢山いるアリカの作品。
■最近、お知り合いになったアートディンクの方の2作品
■そして、やっぱり最近知り合った光栄の方の作品
■そして、やっぱり最近知り合った方の作品
年度末とはいえ、知り合い作品が7本って…固まって出すぎじゃない?(;´ω`)
コメント
ハードディスクの値段については、当時、僕も聞いたのうろ覚えの価格なので100%の自信はないんです。
なんの役に立つかはともかく、こういうのは残しておかないと、多分、消えてしまって、何も分からなくなっていくと思ったので、まあ知ってる人間が覚えているうちに残しておこうってことです。
なんの役に立つかはともかく、こういうのは残しておかないと、多分、消えてしまって、何も分からなくなっていくと思ったので、まあ知ってる人間が覚えているうちに残しておこうってことです。
| 岩崎 | EMAIL | URL | 11/01/29 13:33 | Eeem.i3Y |
大変貴重な体験談と記録を読ませてもらってありがとうございました。
今回記述していたCD-ROM2の開発システムに関する内容は、
確か1989年の夏あたりに月刊PCエンジンが、日本テレネットの取材かなんかの特集で
写真入で紹介してたような覚えがあります。もちろん今回のような詳細にではなく
子供にも分かるような大まかな解説でしたが、大容量のハードディスクを使用とか
マスターはビデオテープにデータを記録してを出すなどはちゃんと記述していたように思います。
そういえばCD-ROMの開発ツールの値段は外車が1台買えるくらいだとかも書いてましたが、
ハードディスクだけで1千万円したならあながち間違いではないわかりやすい表現でしたねw
今回記述していたCD-ROM2の開発システムに関する内容は、
確か1989年の夏あたりに月刊PCエンジンが、日本テレネットの取材かなんかの特集で
写真入で紹介してたような覚えがあります。もちろん今回のような詳細にではなく
子供にも分かるような大まかな解説でしたが、大容量のハードディスクを使用とか
マスターはビデオテープにデータを記録してを出すなどはちゃんと記述していたように思います。
そういえばCD-ROMの開発ツールの値段は外車が1台買えるくらいだとかも書いてましたが、
ハードディスクだけで1千万円したならあながち間違いではないわかりやすい表現でしたねw
| はちはち | EMAIL | URL | 11/01/29 03:59 | 7Q0Cf0A. |
この記事のトラックバックURL :
トラックバック