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

顕微鏡の下で: Ecco the Dolphin — 未来の守護者

  • Ecco the Dolphin: Defender of the Futureには、セーブファイル名に応じて有効になる隠しチート機能がある
  • GhidraとPythonを使ってエンコード方式をリバースエンジニアリングし、特別な名前を発見した
  • 一部の名前は以前から知られていたが、残りも発見され、"不死"やデバッグ表示のような機能がアンロックされた

イントロ

  • Ecco the Dolphin: Defender of the Futureは公式に発売された最後のEccoゲームであり、その後のゲームは中止された
  • 既知のチートとして、VMU画面で New Game を選択し、イニシャルに GYU を入力した後、GYU を再入力して3文字を追加すると、すべてのステージをアンロックできる

Ghidraによる分析

  • flycastエミュレータのメモリスナップショットを解析して、イニシャル入力バッファを発見した
  • Ghidraを使って、変換関数がバッファを読み込み、変換後の値が6種類の特別な値のいずれかかを確認していることを突き止めた
  • GYU GYU XXX9388D627 に変換され、最初の特別な値になった

Pythonを使った総当たり

  • GYU GYU は6文字で、可能な組み合わせは 26^6=308,915,776 通りである
  • 7文字の組み合わせは8億通り、8文字の組み合わせは2080億通りで、ノートPCで処理するのは難しい
  • Pythonで処理コードを複製し、考えられるすべての組み合わせをチェックした

効果

  • SOCCER+XXX を入力すると Bonus Game がアンロックされ、水中サッカーをプレイできる
  • EXBBERX+XXX はオプション画面に Immortality Enabled を表示し、溺れたり死んだりしなくなる
  • QQRIQ+XXX はゲームのフレームレートとデバッグ値を表示する
  • XYZZYX+XXX は現在の時計を表示する
  • POPELY+XXX には特別な効果がないように見える

アウトロ

  • Appaloosa Interactiveのゲームのエンコード方式に関する別の分析は、Three Dirty Dwarves に関する記事で確認できる
  • 以前は知られていなかったチートコードを見つける別の記事は、アーカイブで確認できる

1件のコメント

 
GN⁺ 2024-11-08
Hacker Newsのコメント
  • CRC32ハッシュアルゴリズムの説明と関連リンクの共有。CRC32の多項式が分かれば、対数時間で答えを求められる。

  • MegadriveのEccoゲームについての個人的な体験の共有。ゲームが非常に難しかったため、パスワードシステムを解読して最終レベルに到達したという。ゲームを2日でクリアしたことに対する罪悪感にも言及。

  • "QQRIQ" は、複数の言語で雄鶏の鳴き声を表す単語の音声的な略語である。パスワード選定の経緯が気になるという指摘。

  • Eccoの開発者であるEd AnnunziataはLSDを使っていなかったが、John C. Lillyの作品を多く読んでいたと言及。Lillyは動物知能、ケタミン心理療法、アイソレーションタンク、意識探究の分野で先駆的な仕事をした人物であり、彼の自伝 <i>The Center of the Cyclone</i> を推薦。

  • Dreamcastゲームのリバースエンジニアリングに関する資料の要望。Skies of Arcadiaに関連する体系的な技術を探している。

  • リバースエンジニアリング学習の出発点についての悩み。多くの場合まずAssemblyを学べと言われるが、その後の具体的な情報が乏しい。x86/arm/アーケードプラットフォームの共通パターンを試行錯誤で見つけるのか、という疑問を呈している。

  • 古いゲームのほうがより魂を持っているように感じており、ここ数年はそうした作品をより楽しんでいるという。車に関する警告に感謝。

  • Sega Saturnに関するブログを発見。実家でSaturnを見つけ、ゲームCDも一緒にあったという。ゲームは動いたが、どう活用すればいいのか分からないとのこと。

  • 水中サッカーのチートが動作している映像を見てみたい、というコメント。

  • PS2版のゲームも調べてみることを勧める。レベルアンロックコードが同じ可能性があり、リバースエンジニアリングもしやすいかもしれない。