『FF3』の移植を阻んだ「爆速飛行艇」の謎 天才プログラマーにまつわる噂の真相は?
ファミコン版『ファイナルファンタジーIII』は、飛空艇ノーチラス号の高速移動を再現できないために他機種への移植が遅れた……といううわさがありました。それは本当でしょうか? 筆者なりに検証しつつ、天才プログラマーとうたわれたナーシャ・ジベリ氏の凄さを紐解いてみました!
『FF3』高速飛空艇の秘密とは?

ファミコン用RPGとして1990年にスクウェアから発売された『ファイナルファンタジーIII』は、ジョブチェンジや召喚魔法をシリーズで初めて採用し、100万本以上も売れた大ヒットタイトルでしたが、他機種への移植は2006年まで実現しませんでした(『III』以外のシリーズ作で『ファイナルファンタジーI』から『ファイナルファンタジーVI』までは、2002年までに最低一度は移植版が出ています)。
その理由としてまことしやかに語られているのが、「メインプログラマーを努めた天才、ナーシャ・ジベリ氏がファミコンCPUのバグを使って飛空艇を高速移動させていたため、他機種では実現できなかったから」というものです。そのうわさは本当なのでしょうか? 検証してみます。
まずナーシャ・ジベリ氏についてですが、彼はイランの王族出身で、アメリカでコンピューター科学を学んだ後、プログラマーとして名を馳せるようになります。スクウェアでは「ファイナルファンタジー」の『I』『II』『III』のほか、さまざまなゲームを開発しました。
ジベリ氏が天才的だったのは、CPUの構造を理解し最大限までその機能を引き出せる点にあったようです。『III』の飛空艇の高速移動に話を絞ると、それが実現できた理由は以下の2点にあるといえるでしょう。
1.プログラム言語の使い方が卓越していた
2.ファミコンCPUの処理速度を熟知していた
どんなプログラム言語もそうですが、同じ処理をさせる書き方(コード)は複数あります。コードが違うと処理に使う命令の種類や数が変わることもありますが、実はそれぞれの命令には、CPUの処理時間というものがあります。もちろんコンマ数秒以下の世界ですが、このためコードが違えば、同じ処理でも結果が出るまでの時間が変わります。
ジベリ氏はそれをすべて計算し効率化して、60分の1秒という非常に短い時間に飛空艇が高速移動する処理を詰め込みました。マップのデータを次々と読み込んで表示し、海や滝などをアニメーションさせ、飛空艇の影も落とす……といった処理です。これはまさに彼の天才ぶりが成せるわざでした!
当時のファミコンゲーム開発はどこもアセンブラ言語を使っていたようですが、同じ土俵のプログラマーたちがそれを真似できず、ましてジベリ氏の書いたコードを直接読める立場にいた周囲の人も理解に苦しんだわけです。筆者の知人のプログラマーは、「プログラムにはセンスが必要だ」と日頃言っていました。まさにジベリ氏は発想が卓説していたのでしょう。