顕微鏡の下で: 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 XXX は 9388D627 に変換され、最初の特別な値になった
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件のコメント
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版のゲームも調べてみることを勧める。レベルアンロックコードが同じ可能性があり、リバースエンジニアリングもしやすいかもしれない。