PCエンジンの開発環境(ROM篇)

1988-1994年の間、PCエンジンのゲームを作るために、どんな環境で仕事をしていたのかということを記録に残しておくため、PCエンジンのソフトの開発システムについての記憶に残っている限りの覚書。
今の自分ですら忘れていて、やばいことが分かったので、一生懸命歴史的な資料として残すためシリーズ。
後の世に、このブログのメモがなんの役に立つのかと言われたら、わかんないけど、ナニカの役に立つ…こともない気がするが、残しておいてまあ損はないだろう。
PCエンジンの開発システムは、基本が左図のようにNECのPC-9801のCバスに接続される通信用の拡張ボードと、Hu7と呼ばれる開発キット(メモリが拡張されて、ROM領域がRAMとして実装されROMカードが簡単に開発できるシステム)がハードとしてあった。
もちろんPC-9801シリーズは、今のAT互換機と同じものではない、日本の独自規格ハードで、開発環境はWindowsではなくDOSだった。1988年前後はDOSのメモリ不足が深刻になりだした時代で、かつ186/V30/286あたりだったCPUが386に移行し、仮想86モードを使ったEMSとかRAMディスクが登場をし始める時代だ。ちなみにこの当時のPCのメモリはコンベンショナル(DOSが使える領域)640キロバイト+386用のプロテクトメモリが1-4メガバイト程度だったが、このプロテクトメモリは、最初のうちはなんの役にも立たないゴミのようなものだった。

今で言う64ビットOSでないOSに4ギガ以上のメモリを積んでいるときと似た状態だ。
さて、上のようなシステムで、どんな風にして開発していたのかというと…

1)PC-9801上でプログラムを作る。
2)デバッガを使ってHu7上のROM領域(正確にはROMに割り当てられるRAM)に転送し、起動する。
3)ゲームが動く。
4)デバッガで動作確認&デバッグ。
5)動作確認できたら、ROM用のリンクを行う。
6)実際にEPROMに焼く
7)デバッグして問題がなかったら、マスター提出

…とこういう風にしてゲームは開発されていた。ちなみにもちろん5-6-7はデバッグに入ってから行われる段階だ。
まあ、ターゲットが別のハードでよくある形で、いまだと開発機がネットワークにぶら下がっているのが普通だが、当時はパラレルインターフェースで直接接続されていたわけだ。


Hu7にはもちろん開発をするために必要なソフトも用意されており、それぞれAS,LK,SD,CE(DF),PEの5つのアプリケーション、コレに加えて、symmapかsymlistとか、そんな名前だったと思うが、マスター提出のためにシンボルリストを出力するツールなどが付属していた。
これらのソフトは拡張ボードが98専用だし、だいたいNECのゲームマシンなのもあって、全てPC-9801ほぼ専用に書かれていて、NECのPC-98もしくはEPSONの互換機があるのが前提だった。

ツール名 簡単な説明
 AS  アセンブラ。やったら速い。飛田さんの作。高速化するためにデータ64キロバイト、プログラム64キロバイトのモデルで作られており、後にCDのソフトを作るときに非常にメモリが厳しくなったので、メモリを食わないようにするバージョンが作られた。ハドソン社内で使っていたバージョンにはファミコンモードがあり、ファミコンのソフトの制作もこれで行われていた。ちなみにTurbo-Cで書かれていた。
LK リンカ。やったら速い。飛田さんの作。ハドソン社内で使っていたバージョンにはファミコンモードがあり、やっぱりファミコンソフトの開発もこれで行われていた。これまた馬鹿っぱいやいのはともかくとして、当時のROM開発程度を想定していたため、メモリ的制限が厳しく、CDROM時代になってずいぶんといじられた。
SD シンボリックデバッガ。多分、小林さんか本迫さんの作。デバッガとしては結構性能はよかった。特にハードウェアブレイクがあったのはスゴイ…んだけど、おいらほとんどローダーにしか使わなかったんだよね…これで僕がまともに見つけたバグは2つ3つしかない。
CE キャラクタエディタの略。ドット絵のBGもしくはスプライトを書き、マップを作る機能と、スプライトをレイアウトする機能がついていた。和泉さんの作品。ハドソン社内版はDFという名前(CEを1文字シフト)。これまたファミコンモードがついていて、ファミコンの絵も作ることが出来た。途中で和泉さんが面倒くさがって、ソースを僕らにくれたので、結構勝手に改造しまくってた。やっぱTurbo-Cで書かれていた。Hu7Dってデザイナー向けのツールを使うことで、画面出力して確認できた。
PE ピクチャエディタの略。256x240のベタの1枚絵を描くためのツール。誰が作ったのか忘れたけど、やっぱりソースもらって改造しまくった。やっぱりTurbo-Cで書かれていた。イースでは320×240のベタ絵が描けるように改造された。同じくHu7Dってデザイナー向けのツールを使うことで、画面出力して確認できた。ちなみにファミコンでは1画面のベタ絵は書けないので、こいつはファミコンモードがない。

ところで開発環境の大半はTrubo-Cで書かれていたが、なぜかというと当時はBorlandの方が明らかに上だったからだ。
ぶっちゃけるなら、DOS時代のマイクロソフトは開発ツールについて、今ほどの存在感はなかった。
Visual Studioの遠いご先祖様に当たるMS-Cはそんなにオプティマイズ性能がいいわけでもなかったし、ライブラリの出来もBorlandと比べて微妙な出来だったし、ついでに書くなら肥大化したWindowsみたいなものもなかったのでライブラリが「MS謹製であること」にそれほどの強みがなかった。しっかもコンパイラの速度はBorlandの方が圧倒的に高速だった。そしてこの手のものを開発の中心になっていた飛田さんという人は、ともかく遅いのが嫌いな人だった。だからBorland大好きだったわけだ。
この高速という理由でTurbo-Cのmakeを飛田さんに勧められた。ところで、makeというのは何者か…というと、プログラムのソースファイルの依存と更新を管理してくれて、makeと打つだけで必要なプログラムでけアセンブルするなりコンパイルするなりして、完成してくれる神様のようなアイテムなのだが、Turbo-Cの出来のすばらしさはともかく、makeの性能の悪さには参った。
僕はその前の会社ではBSDとOS-9/68Kで仕事をしていたので、makeとしての機能の差が大きすぎて、ぶっちゃけ許してくれな感じだった。
しかもCDROM時代になると、ソースファイル数が膨大になると破綻するだの、一定以上の複雑さになると破綻するだのでmakeがまともに動かない状態に立ち至り、これでは仕事が出来ない!…ということで、1989年の6月頃に、当時DOSにポートされたところだったGNU makeのワークメモリをEMS(仮想メモリのようなもの)にスワップ出来るバージョンを使い、仮想386モード+GNU makeで、巨大なプロジェクトであろうとmake出来るシステムを作った。
結構気合いを入れて作ったシステムで、これを改良して天外2でも使ったが、このmakeのシステムは94年の次世代機への移行前後までハドソン社内では使われていたらしい(そういう自分もエメドラ作るときには使ったが)。
と、ちょっとCDROMの話が出てきて、この開発環境がCDROMではどうなったのか…という話だが、結構書くの大変なので続く。

LinkedIn にシェア
Pocket

8件のコメント

  • AGENT: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.639.0 Chrome/10.0.639.0 Safari/534.16
    とても興味深い内容で、早速ながら次回以降期待しております!
    (書籍でじっくり読みたい気もします。僭越ですが、「がまぐ」向けかもしれませんね)
    あと、開発ツール(アプリケーション)に関しては、上記にあるように、
    提供されるツールを開発会社側で独自に改良するのが(割と)普通だったんでしょうか。

  • AGENT: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10
    いえ、普通はもらえません。
    僕らはそのときハドソンにずっといて、ほぼ丸2年ハドソンで暮らしてまして、BIOS書いたり、逆にツールを渡したり、共同でツール書いたりしていたのと、僕らの要求が特殊なので、ぶっちゃけ面倒くさかったんでしょう。

  • AGENT: Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8
    おお、これは貴重な体験談。次回も楽しみにしています。
    サードパーティーがCEをメガドラやスーファミなど他のハードの開発に
    転用して使ってたという話はわりと昔からよく聞きますね。
    そういや昔、Hu7のシールが貼られた機械を秋葉で見たことがありました。
    あとPCエンジン末期には「でべろ」なる個人用開発キットも通販されてましたね。

  • AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
    PEは小林さん作だったはずですー

  • AGENT: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10
    やっぱり小林さんだったのか。
    自信がなかったので書かなかったんだけど、記憶は正しかったw

  • AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET4.0C; .NET CLR 3.0.30729)
    今、社内でなぜかCEのことを話していて、検索したらこのページがww
    >サードパーティーがCEをメガドラやスーファミなど
    >他のハードの開発に転用して使ってたという話は
    >わりと昔からよく聞きますね。
    (ドキッ!)

  • AGENT: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.98 Safari/534.13
    僕はあるSFCソフトの開発にちょっとつきあったとき、そこのアーティストに「岩崎さん、このOUTって書いてあるボタンはなんなんですかね?」と聞かれたことがありますよwww
    (OUTはPCエンジンの開発機に画面を出力するためのボタン)

  • AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
    実機での画面確認、いまだにOUTって言っちゃうし・・・
    自分が作ったわけじゃないけど、
    CE→DFへのアップデート時に、和泉さんに自分の意見を結構取り入れてもらったので、他社の人が(PCE用途じゃなくても)使ってるって聞いたときは非常に嬉しかったですねえ・・・

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