世界を動かす技術を、日本語で。

DOSゲーム「F-15ストライクイーグルII」リバースエンジニアリングプロジェクトのためのDOSテストパイロット募集

概要

  • F-15 Strike Eagle II のCソースコード再構築プロジェクトの進捗報告
  • すべての実行ファイルのCコード復元とデータ移行が完了
  • 今後は動作検証やバグ修正が主な課題
  • テストプレイヤーの募集とバグ報告の依頼
  • オリジナルのバグもそのまま再現する方針

F-15 Strike Eagle II Cソースコード再構築プロジェクト進捗報告

  • 1989年発売のゲーム 「F-15 Strike Eagle II」のCソースコード再現プロジェクト進行中
  • 元のバイナリをリバースエンジニアリング し、アセンブリからC言語への書き換えを実施
  • 1ヶ月前は数年単位の作業を覚悟していたが、 急速な進捗 により全実行ファイルのCコード復元が完了
  • 全データ もアセンブリからC言語へ移行済み
  • アセンブリ専用だったコードも 機能的にCで再実装 し、大部分のルーチンやデータ構造に意味のある名前を付与
  • 近い将来、 ポーティングプロジェクト用のリポジトリ分岐 も視野に

今後の課題とテスト協力のお願い

  • これまでは オペコードの一致確認 が中心だったが、今後は 実際に動作するゲームの維持管理 が重要課題
  • ツールによってオペコードの忠実性は担保できるが、 データレイアウトに起因するバグ は検出困難
  • コミュニティの協力 でプロジェクトが大きく進展したため、 さらなるテスト協力者(テストパイロット) を募集

テスト方法と注意事項

  • 最新リリースは v0.9.1、オリジナルゲームの 451.03バージョン および Desert Storm拡張パック に対応
  • テスト方法
    • 新しい実行ファイルを ゲームフォルダに上書き配置
    • f15.com を削除し、 新しいf15.exe が確実に起動するように
    • バックアップ推奨
  • セットアップ画面はスキップ し、MCGA/VGA表示・サウンドなし・ジョイスティックなし設定で起動
  • ゲームの 3つのパート(ブリーフィング、フライト、デブリーフィング) はすべて動作するはず
  • クラッシュ、グラフィックの乱れ、キー入力不具合 などのバグ報告を歓迎
    • 報告時は 発生前の操作内容 も記載、 スクリーンショット(Ctrl+F5 in dosbox) 添付推奨

バグ報告時の注意点

  • 本プロジェクトは バグも含めてオリジナル再現 を目指す
  • オリジナルにも存在するバグ(3Dオブジェクト消失、燃料切れで機体が空に落下等)は そのまま残す方針
  • 報告前に オリジナルで同じ挙動がないか確認 し、参照用にオリジナルのコピー保持を推奨

感謝と今後への期待

  • 協力してくれる全ての方々 に感謝
  • これまでの貢献者への感謝と、 今後の更なるマイルストーン達成 への意欲
  • これからも一緒に プロジェクトを盛り上げていく仲間 への期待

Hackerたちの意見

プレイ可能なDOS版が登場!最初のステップはアセンブラへの完全な逆アセンブル、次はアセンブラをバイナリに変換してコンパイルされたCコードと同じにすること。これをDOS上でアセンブラコードがなくなるまで続けて、その後LinuxやWindowsへのポーティングが始まるよ。逆アセンブルは新しいバグを引き起こすことが多いし、古い逆アセンブルコードのバグを全部見つけるのは簡単じゃないけど、今のところは全部うまくいってるみたい。もしF-15のバージョン451.03を持ってたら、Dosboxか本物のDOSでオープンバグを探してみて!最新のDOSリリースはここで見つけられるよ: https://github.com/neuviemeporte/f15se2-re/releases f15_se2-*.zipファイルにはDOSゲームの実行ファイルが含まれてる。空軍が君を必要としてる!

いい仕事だね!Linuxポートに関してあまり自分を責めない方がいいと思うよ。エミュレーターはすごくサポートされてるし、どこにでもあるから、そこで動けば勝ちだよ!僕は使いやすさからLutris(https://lutris.net/)を使ってる。君は「ローレベルな人」みたいだし、これはクールなレトロゲームをプレイする以上の挑戦かもしれないね。どちらにしても、素晴らしい仕事だよ!!!

今、いくつかのゲームを逆アセンブルしてるんだけど、AIを使うとかなり簡単だよ。でも、法的な問題が心配なんだ。これについて何か意見ある?

USAFのベテランだよ。F-15ストライクイーグルIIで育ったけど、残念ながら私のコピーはもうずっと前に劣化しちゃった。だからこのプロジェクトを見てすごく嬉しい!ただ一つ、小さな文句があって、他の人たちが「椅子が好きなんだな」って指摘するかもしれないけど、空軍って二言で言うとこうなるんだ。ありがとう。

シンボル名がない状態でデコンパイルされたプロジェクトの構造を推理するのにAIはうまく機能するかな?これは僕の専門外だけど、ソースマップがないJavaScriptの構造の意図をAIがどれだけうまく理解できるかに驚いたよ。

はい、とても役立ちます。

AIはアセンブリを読むのが超人的で、デコンパイルされてるかシンボルがあるかなんてあんまり気にしないから、ちょっと遅くなるだけなんだ。場合によっては、ツールを使わずに複雑に難読化された制御フローを直接理解できることもあるよ。

ああ、これは子供の頃にめっちゃ遊んだゲームだ!(F-19 ステルスファイターやF-117A ナイトホーク ステルスファイターと一緒に - このゲームの前後に出たやつね - 今日学んだこと、そしてF-14 トムキャットも少し) 原作のゲームファイルがないと動かないと思うんだけど、合ってるかな。だから、この特定のゲームをもう一度プレイするよりは、開発日誌を読むことにするよ...

これらの名前って商標登録されてるんじゃない?ロッキードが副収入のために権利を売ってるところを想像できるわ、笑。

開発ブログは、見つけられる中で最高のレトロリバースエンジニアリングジャーナルの一つだよ。楽しんで読んでね!

F-19は素晴らしいゲームで、Sid Meierのタイトルの中でお気に入りの一つなんだ。1980年代後半にエレクトロニクスブティックで買って、Packard Bellの286で遊んでたのを覚えてる。ゲームのコピー保護機能で、マニュアルから飛行機を調べて特定しなきゃいけなかったんだ。そのおかげで、ゲーム内の飛行機を全部暗記しちゃった。ゲームをプレイするためにGravisのアナログジョイスティックも買ったし、キーボードのオーバーレイもまだ持ってる。これの現代版リブートがあったら最高だな…

これって友達と一緒に前席/後席の役割で協力プレイできるやつだったっけ?それともIIIだったかな?友達のモデム設定を手伝うために、ずっと固定電話で電話してたのを思い出すよ。彼がダイヤルアップして、ゲームを始めて、また切断されて、何が起こったか確認するために電話して…みたいな感じで。やっと動作するようになった時は、遊びすぎて彼のお母さんにモデムでのプレイを禁止されたくらい、電話回線を何時間も占有してた。似たようなマルチプレイが他のフライトシムやスペースシムでも見つけられたらいいな。これをもう一度動かして、友達をノスタルジーに浸らせたいんだ。

Hacker Newsで議論の続きを見る