「プリンス・オブ・ペルシャ」は1989年に発売されたアップルⅡ版がオリジナルです。そして、メジャーな8ビットPC向けのバージョンは公式にはこれが最後でした。YouTubeを見ると、さまざまな機種向けのものがありますが、すべてユーザー側が自作した、いわゆる未許諾の勝手移植です。

ただし、その中でもコモドール64向けのものは相当な完成度で、公式の移植といわれても違和感がないほどの仕上がりになっています。ですが、実はこのコモドール版も、あるユーザーが長年の努力のすえに完成させたものなのです。

幸いにも、作者自身が詳細な日誌をブログという形で公開しているので、実際の作業をたどることができますが、それを見ても、苦難の連続だったようで、苦労が偲ばれます。

そもそも、どうしてこのような難業に取り組んだのか不思議なところですが、作者自身は、ただプログラミングの腕試しをしたかったのが動機だと語っています。コモドールのプログラミング自体からも15年以上遠ざかっていたのが、ある時レトロコンピュータ関係のイベントに参加し、その熱気にあおられる形で、自分でも何かやらなければと発奮したのだとか。そのための目標を探していて、行き当たったのが「プリンス・オブ・ペルシャ」の移植という取り組みだったわけです。

作者はまず、既存の「プリンス・オブ・ペルシャ」を解析するプロジェクトを調査しました。その過程で、さまざまなオープンソース型のプロジェクトがあることを知ったわけですが、大きかったのは、MS-DOS版から抽出したグラフィック・データを入手できたことでした。これを元に、コモドールに合うよう加工すれば、少なくともグラフィックの問題は解決できます。

とはいえ、プログラム本体は自分で何とかするしかありません。移植といっても、オリジナルであるアップルⅡ版のソースコードを手に入れるのは不可能ですから、プログラム自体を逆アセンブルして、解析するわけです。逆アセンブルは、それ自体が実に大変な作業です。ウィキぺディアのエントリから引用すると、

秘匿されている、紛失したなどの理由によりソースコードが入手できないプログラムの動作を知りたい場合、プログラムの機械語を人間が直接理解することは困難であるため、より人間に理解しやすいニーモニックに変換して解析の手助けとするために逆アセンブラを利用する。

人間に理解しやすいといっても、それはあくまでも機械語と比べて、という意味である。逆アセンブル結果からプログラムの内部動作を知り元のソースコードを推定するまでの作業は一種の暗号解読のような困難な作業であり、非常に高度な技能を持つ技術者が膨大な手間と労力をかけて初めて達成されるものである。

こうまで書かれるほどの作業なのですから、確かに腕試しにはうってつけでしょう。

幸いにも、「プリンス・オブ・ペルシャ」の作者、ジョーダン・メックナーは、自身のサイトでソースコードに関する情報を公開していました。完全なソースコードではないものの、これは大きな手がかりでした。しかもそれはオリジナル版のソースであり、つまり(アップルⅡのCPUである)6502で動作するものでした。これもまたありがたいことでした。コモドール64のCPUは6510という、6502の派生品であり、両者はほぼ同じものだったからです。これがたとえば、MS-DOS版のソースだったとしたら、さして参考にはならなかったでしょう。

しかしアップルⅡ版「プリンス・オブ・ペルシャ」のデータ量は、128Kに及ぶ(8ビット機としては)巨大なものです。その中身はコードとデータが混在しており、ひとまずはそのすべてを仕分けなければなりません。それ自体が気の遠くなる作業ではありましたが、作者はひとまず着手することにしました。

作業に使用したツールはVirtual IIというマックOS用のアップルⅡエミュレータでした。実際にゲームを動かしつつ、プログラムの挙動をメモリ・インスペクタで監視し、内部の細かい変化を探っていくわけです。

pop64_virtual2

また、取得したデータは6502の逆アセンブラで解析します。アップルⅡ版のコードとMS-DOS版のexeファイルを照合し、一致する点を探したりもしました。とにかく、手がかりになりそうなものは片っ端から試してみたのです。

pop64_deassemblar

それでも作業を地道に進め、ようやくプロトタイプが出来上がった頃に、もうひとつ難題が持ち上がりました。コモドール64関連の掲示板で、別のグループが「プリンス・オブ・ペルシャ」の移植プロジェクトを始めたことを知ったのです。先方はまださほど作業は進んでいないようでしたが、このまま放置しておけば、自分がすでにクリアした課題をまた新たに取り組むことになるわけで、これは単純に考えて労力のムダにしかなりません。作者は悩んだすえ、自分が以前から同じ作業に着手していることを公表します。反発されるのではと心配もしましたが、幸いにもそのようなことはなく、むしろ励ましの言葉を受けるほどでした。

むしろ、問題は作者の側にありました。この時点で、作業開始から半年が経過していましたが、もはや作業を続ける根気がなくなっていたのです。他に興味の対象が出来てしまったことと、解析作業に行き詰まっていたのがその原因でした。結局、作者は移植プロジェクトを中断することにしました。いずれ再開するつもりはあったものの、実際に作業に復帰するまで、1年半もの歳月を要したのです。

再開のきっかけとなったのは、コモドール64のROMカートリッジを使う方法を思いついたことでした。巨大なグラフィックデータをROMに移せば、それだけRAMの容量に余裕ができることになります。この思いつきによって、移植プロジェクトは大きく前進することになりました。

そうして一旦ブレイクスルーを達成させたものの、いよいよ作業に終わりが見えてくると、またもやモチベーションを保つのに苦心することになります。ロジック面での課題を解決し、残った作業の大半が単純作業だったのも飽きがきた一因でした。作者はこの問題を、ToDoリストを作り、ひとつずつ課題をつぶすことで乗り越えます。

pop64_castle
(C64用に最適化された画像。このような画像にも細かい修正がなされていました)

こうして2011年夏、ついにコモドール64版が完成しました。途中の中断があったとはいえ、構想から3年近い歳月を経て、ようやく目標が達成されたのです。これはまさしく快挙であり、世界中のコモドールユーザーに驚きをもって迎えられました。

「プリンス・オブ・ペルシャ」の作者であるジョーダン・メックナーも、この移植版の完成度に驚き、この偉業を褒め称えるとともに、いささか移植版の作者に対して複雑な心境を見せてもいました。それももっともなことで、オリジナルのソースコードをすべて公開していれば、そもそも解析などする必要もなく、移植にかかる労力の大半が解消されていたはずだからです。(なお、後にメックナー氏はソースコードを公開しています)

いずれにしても、音楽やグラフィック面でさまざまな人の助けがあったとはいえ、プログラミングにおいてはほぼ独力でなしとげた移植であり、改めて海外のレトロコンピュータ界の奥深さを感じさせられた出来事でした。

Prince of Persia C64 - Development Blog - Part One - Why the hell would anyone want to do that?