バグダッドで書いた7万行、週末で現代へ
1993年のバグダッドでAmiga 500向けに68000アセンブリ7万2758行を手書きしたゲーム『Babylonian Twins』を、作者本人が7月の週末にGodotへ移植した。当時のコードはAIに読ませて解析した。
ひなた:ふぁ〜……部室の棚のいちばん奥から、まっ黒くて四角い、かたそうなおせんべいが出てきたのです。……うらに、銀色の丸い金具がついてるのです。
ことね:それは食べ物ではないわ、ひなた。フロッピーディスク——昔のパソコンで使っていた記録メディアよ。3.5インチのもので、入る量は1.4メガバイトくらい。……ちょうどいいわね、今日はそのくらいの時代の話をしましょう。1993年のバグダッドに、Amiga 500というパソコンでゲームを作っていた工学部の学生がいたの。メモリは512キロバイト、ハードディスクなし、テレビにつないで動かす機械ね。当時のイラクは制裁下で、インターネットもなければ開発の資料もない。手元にあったのは『Amigaハードウェアリファレンスマニュアル』1冊だけ。それで、68000というCPU向けのアセンブリ言語を7万2758行、全部手で書いたのよ。しかも遊んでいる最中はOSに頼らず、映像や描画の回路を直接叩いていたの。
ひかり:えっ何それっ! 512キロバイトって、いまのスマホの写真1枚も入らないやつだよねっ!? そこに7万行を手書きっ!? で、そのゲームどうなったのっ? 売れたのっ?
ことね:完成したのに、出せなかったの。Amigaを作っていたコモドールという会社が潰れて、制裁を嫌がった販売元も離れていって、できあがったゲームは棚に置かれたまま。……見つかったのは2008年よ。お兄さんがYouTubeに上げていた動画を、Amiga好きのフォーラムの人たちが掘り当てて、作者本人を探し出して、ディスクを譲ってもらったの。
みずき:…ゲームのほうが先に見つかって、作った人があとから見つかったんだ。順番、逆。
ことね:そうなるわね。……で、ここからが今回の話。7月のある週末に、その本人が自分の1993年のゲームを、いまのゲームエンジン「Godot」に移したのよ。しかも二段構え。2010年に作り直していたC++版3万4000行をGodotに移すのが、ひと晩。それとは別に、1993年のアセンブリ本体をAIに読ませて、マップの保存形式も、キャラの絵の並べかたも、画面のグラデーションの出しかたも解き明かさせたの。使ったのはClaude Fable 5——この前ここで、値札そのままなのに安くなったと騒いだ版の、ひとつ前ね。
ひかり:ねえことね先輩、でもそれってちゃんと合ってるのっ? AIが「たぶんこうだと思います」って言っただけかもしれないよねっ?
ことね:いい質問。ちゃんと答え合わせをしているのよ。読み解いた中身をもとにもう一度組み立て直して、1993年に世に出た実行ファイルとバイト単位で同じになるか、当時と同じ道具で突き合わせる。最初にぴたりと一致するまで15分。……ただし罠もあってね。出荷されたファイルは、きれいに組み立てたままのものではなくて、動かしている最中の変数の値が108バイトぶん焼き込まれていたの。それと、本人が「自動化できなかったこと」もちゃんと書いているわ。画面が当時と同じ見た目かどうかは、スクリーンショットを自分の目で見比べた。そして、動かして気持ちいいかどうかは、誰にも測れなかった。13歳の息子さんと、できたビルドを全部いっしょに遊んだそうよ。
みずき:…7万行を読むところより、息子と全部遊ぶところのほうが、たぶん時間かかってる。
ひなた:ふぁ〜……7万行を読むのは、機械のほうがずっと早いのですね。……でも「たのしい」だけは、となりにだれかいないと、出てこないのです。
まとめ:1993年の7万行は、最初のバイト一致まで15分だった。面白いかどうかを確かめたのは、13歳の息子と並んで遊んだ時間のほう。