PC-9801版ギャプラスについての覚書

Twitterで『ギャプラス』98版の話がたまたま出て、それ絡みのことがあったので、まとめてメモとして残しておく話。

『ギャプラス』はナムコの『ギャラクシアン』→『ギャラガ』と続いてきたナムコの固定型画面の縦シューティングの第三弾で1984年にリリースされた作品だ。
そして『ギャプラス』のPC-9801版(NECから出ていたパソコンのシリーズ)はキャリーラボが移植して発売しているのだけど、これの移植は非常にレベルが高いので有名だった(そしてナムコミュージアムで出るまでは『ギャプラス』の唯一の移植だったはず)。

移植したのは畏友にして卓越したプログラマのHaHi君こと、長谷川浩君だ。
当時、キャリーラボの社員で、アルファシステムの創業者の一人だ。
なんでこんなことを知っているのかというと、たまたま『凄ノ王伝説』だの『イースⅠ・Ⅱ』だのを作っている間に、彼が移植したという話を聞いていたから。
だから、そういう内容をひょいとツイートしたわけなのだけど…そこにこんな質問が来た。

いま思い返しても、16bitとはいえ初期のPC98でよくもあれだけスムーズに動かせたものだと感心してしまいます。
アルゴリズム的にもかなりイケてたように思うのですが、あれは目コピだったのでしょうか?

と、聞かれ、確かにそれについては知らないなと思ったので、今でも連絡がつくHaHi君にちょっと聞いてみた。
さすがに25年以上も前の話なので、覚えていない可能性もあるとは思ったけれど…そこはHaHi君、キッチリ覚えていた。

答えは以下のとおり

ROM引っこ抜いて、逆アセ読みました。初めて6809のコード読みました。グラフィックデータもROMから全部抽出しました。2つのCPUが同期しながら動いていて、ICEでメインCPU止めるとサブがリセット掛けやがるので苦労した覚えがあります。

若干わかりにくいところがあるので、コメントがてら、いろいろ解説しておきたい。

  • 基板からROMを引っこ抜いて、逆アセ読みました。
    ROMを引っこ抜いて、中身をディスアセンブラにかけてソースを読める形にしたってこと。つまりナムコからソースは提供されていない(これは当時のアーケードの移植の常識だったと思う)。
    ついでに書いておくと、当時はオールアセンブラでゲームを書くのは常識だった。
  • 初めて6809のコード読みました。
    6809は当時のインテルと並ぶ2大CPUメーカーの一つ、モトローラが出した「究極の8bit」と謳い文句があったCPU。確かにアドレッシングとか使いやすかったよ。
    1984年というと、もうFM-7が出ていて一大勢力だったのだけど、キャリーラボはMZシリーズに主力があった=Z80系だったので、読んだことがなかったのだろう。
    このあとしばらくして、キャリーラボは”DOG”に参入し、ファミコンディスクシステムのゲーム『ハオ君の不思議な旅』をHaHi君は書くことになるので6502も書けるようになる。
  • グラフィックデータもROMから全部抽出
    当時のアーケードはVRAMではなくVROMなので、ROMに直にキャラクタパターンが焼きこまれていたのである。
  • 2つのCPUが同期しながら動いていて…
    『ギャプラス』は6809のデュアルプロセッサ(2つのCPUが搭載されていること)だったので、プログラムの解析のためにICEで片方のCPUを止めると、もう一方のCPUにリセットがかかるから、解析がしづらかったって話。

というわけで、『ギャプラス』のPC-9801移植版は、目コピではなく、ソースを解析し、カッチリと移植されていた作品だったわけだ。
ちょっとした記録として残しておく次第である。

LinkedIn にシェア
Pocket