1 ポイント 投稿者 GN⁺ 2024-05-24 | 1件のコメント | WhatsAppで共有

Space Quest IIのマスターディスクのミス

  • 2024年5月22日
  • このディスクの見た目には特別な点はないが、保存されているデータには、Sierra On-Lineがまったく気づいておらず、含めたくもなかったであろう特別なものがある。
  • もしSierraのアドベンチャーゲームコレクションに720KBフロッピーディスクがあるなら、あなたは一人ではない。
  • Space Quest IIのバージョン2.0Dと2.0Fは珍しいものではなかった。

単なるディレクトリ一覧

  • ディスクのファイル一覧を見ると、特別な点はない。
  • バージョン2.0Dの一覧を見ると、ほかのSierraゲームディスクと変わらない。
  • タイムスタンプは、ゲームの主要データファイル(PICDIR、LOGDIR、VIEWDIR、SNDDIR、VOL.0、VOL.1)が1988年3月14日に作成されたことを示している。
  • .OVLファイルは1988年3月15日、AGIインタープリタコードは1988年3月18日に作成された。
  • ディレクトリ一覧で特異なのは、ディスクの「未使用」領域が使用済み領域より多いことだ。302,918バイトが使用済みで、402,432バイトが未使用として表示される。

ヘックスエディタの使用

  • ディスクに何が入っているのかをより詳しく見るには、ヘックスエディタというツールが必要になる。
  • 1980年代にはNorton Utilitiesがよく使われており、現代ではMaël Hörzが作成したHxD Hex Editorが優れた代替となる。
  • 新しくフォーマットされたDOSフロッピーディスクでは、未使用セクタは0xF6バイト値で埋められているはずだ。
  • Space Quest IIバージョン2.0Dのディスク2はこの条件に当てはまるが、ディスク1には0xF6バイトで埋められたセクタがない。
  • ディスク1の未使用セクタは、Cソースコードのように見えるもので埋められている。
  • これは、マスターディスクが別の用途で使われ、ファイル削除後に適切にフォーマットされなかったことを強く示唆している。

AGIインタープリタのソースコード

  • ヘックスエディタでデータを見ると、テキストのように見える。
  • ASCIIテキストをテキストエディタにコピーして見ると、Cソースコードのように見える。
  • 2つの関数が定義されており、1つはDisplayStatusLine、もう1つはStatusLineOnだ。
  • DisplayStatusLine関数は、現在のスコアとサウンド状態を表示するテキスト行を表示するもののようだ。
  • このソースコードはAGIインタープリタの一部だ。
  • ヘックスエディタでさらに多くの未使用セクタをスクロールすると、大量のソースコードがある。
  • このソースコードは連続したセクタに保存されているため、抽出しやすい。
  • 合計93個のファイルに分かれており、75個のCソースファイル、16個のアセンブリ言語ソースファイル、2個のDOS BATファイルで構成される。
  • 合計15,000行以上のコードがあり、ほとんどのファイルが完全だ。
  • このSpace Quest 2ゲームディスクには、Sierra On-LineのAGIインタープリタソースコードのおよそ70%が含まれている。

ソースファイルの変更履歴

  • 一部のソースファイルには、ヘッダコメントに変更履歴が含まれている。
  • たとえばANIMATE.Cソースファイルのヘッダコメントには、ファイル名、機能説明、コンパイラ名(MWC)、変更履歴が含まれている。
  • プログラマたちは自分を識別するためにイニシャルを使っている。
  • JASはAGIインタープリタコードを担当した主要プログラマのJeff Stephenson、DCIはChris Idenだ。
  • Robert Heitmanにも言及があるが、彼の主な焦点はグラフィックツールにあった。

AGI.EXEのメモリマップ

  • SQ2 2.0D 720KBディスク1には、AGI.EXE実行ファイルのメモリマップも含まれている。
  • メモリマップは、AGIインタープリタを構成するモジュールとソースファイルの一覧を提供している。
  • 合計98個のソースファイルが言及され、そのうち71個がSQ2ディスクに完全な形で含まれている。
  • これは、AGIインタープリタソースコードのおよそ70%がSQ2ディスクに含まれていることを意味する。

Sierraの知的財産

  • 1984年、Sierra On-Lineは事業継続のために苦闘していた。
  • King’s Questの成功が、彼らの運命を変えるうえで大きな役割を果たした。
  • AGIアドベンチャーゲームシステムと、それによって作られたゲーム群は、Sierra On-Lineの主要な収益源だった。
  • AGIインタープリタのソースコードは、Sierraの中核的な知的財産だった。
  • そのソースコードの70%が大量複製されて顧客に発送されたのは、大きなミスだった。

どうしてこんなことが起きたのか?

  • 新しいゲームバージョンの準備が整うと、「生産用コピー」マスターディスクを作成し、FormMasterディスク複製機で使用した。
  • この機械はディスク上のすべてのバイトをコピーする。
  • Space Quest IIバージョン2.0Dと2.0Fのディスク1は、フォーマットされないまま使われた。
  • その結果、数十万枚のSQ2ディスクにAGIインタープリタソースコードの70%が含まれることになった。

危機を免れた状況

  • ほぼ確実に意図しないミスだった。
  • Sierraも、競合他社も、顧客も、この事実に気づかなかった。
  • 2016年10月にオンラインユーザーNewRisingSunによって初めて発見された。
  • AGI時代の終わりに起きたことだったため、大きな問題にはならなかった。
  • これは興味深いデジタル考古学の物語であり、Sierra On-LineがAGIインタープリタをどのように書いていたかを見ることができる。

興味のある人のために、抽出されたAGIインタープリタのソースコードをGitHubリポジトリにアップロードしている: https://github.com/lanceewing/agi

AGILE、WebベースのAGIインタープリタも確認してみてほしい。この実装は元のAGIソースコードに導かれている。


GN⁺の見解

  • デジタル考古学の価値: この記事はデジタル考古学の重要性を示している。古いソフトウェアやデータには、歴史的・技術的価値がある。
  • セキュリティミスの教訓: この出来事は、データセキュリティと管理の重要性を強調している。機密データを扱う際には、常に徹底した検証とフォーマットが必要だ。
  • 技術発展の証拠: AGIインタープリタのソースコードは、1980年代のゲーム開発における技術的進歩を示している。これは現代の開発者にインスピレーションを与えうる。
  • オープンソースの力: 元のソースコードが公開されたことで、現代の開発者がこれを研究し、新しいプロジェクトに活用できる機会が生まれた。
  • 競合他社のリスク: もしこのソースコードが当時競合他社に発見されていたなら、Sierra On-Lineの競争優位は大きく損なわれていたはずだ。これは企業の知的財産保護の重要性を思い起こさせる。

1件のコメント

 
GN⁺ 2024-05-24
Hacker Newsの意見

Hacker Newsコメントまとめ要約

  • Double Dragon II: The Revenge for DOS (1989)

    • このゲームは2枚のフロッピーディスクで配布され、そのうち1枚には削除済みのアーカイブファイル内に完全なソースコードが含まれていた。DIR コマンドでは見えないが、簡単に復元できた。
  • シンセサイザーROMのリバースエンジニアリング

    • 最近シンセサイザーROMをリバースエンジニアリングしていて、Yamaha DX9 ROMの中からファームウェアのシンボルテーブルの一部と開発システムのコードブロックを発見した。こうした発見は、過去の開発ツールへの深い理解を与えてくれる。
  • 子ども時代のゲームの思い出

    • このゲームは子ども時代の重要な一部であり、今の人生では同じ種類の「つながり」を感じにくい。Space Quest 2、3、4はDNAの一部のように感じられる。
  • AGIエンジンの秘密

    • AGIエンジンには、競合相手が流出から利益を得られるような特別な秘密はなかったと思う。Sierraのゲームは、グラフィックとストーリー作成に多くの労力を注いだから成功した。
  • メモリマップとソースコード

    • メモリマップ、一部のソースコード、リバースエンジニアリングツールを使えば、全体を再構築できるはずだ。
  • HxD Hex Editor

    • 現代の優れたツールとしては、Maël Hörzが作成したHxD Hex Editorがある。macOSユーザーはHex Fiendも確認してみる価値がある。
  • Air FortressのROM

    • Famicom版のAir Fortressには、意図せず大量のデータが含まれていた。日本のカートリッジは128+128KBで、アメリカのNES版は128+32KBに縮小された。
  • 手作業のリリースアーティファクト

    • 昔は手作業でリリースされたアーティファクトに残留データが含まれていることがよくあった。現代ではCI/CDと自動化されたビルドシステムのおかげで、こうしたことは減っている。
  • ソースコードの発見

    • ディスクにソースコードが含まれていることを誰も見つけていなかった。これは最近のテトリスやスーパーマリオブラザーズの発見を思い起こさせる。インターネットとエミュレーターのおかげで、古いゲームは新たな命を得ている。
  • 変更履歴コメント

    • 変更履歴コメントは、細部へのこだわりと職人技を示している。これは『No Silver Bullet』のエッセイを思い起こさせ、ソフトウェアが今でもプログラマーによって1行ずつ書かれていることを示唆している。