逆コンパイルの進捗レポートを正しく読む

執筆: DecompHub · 更新日 · 日本語

進捗の割合は、何を、どのビルドで、いつ測ったかと併せて初めて意味を持ちます。DecompHubは指標名、測定範囲、出典を値とともに表示します。信頼できる測定が得られていない場合は不明のままです。不明は0%ではありません。

コードの一致と動作の再現は別の目標

マッチング逆コンパイルは、特定のオリジナルビルドと同一の機械語を生成するソースを目指します。コンパイラと設定も重要です。decomp.meのFAQは関数単位のscratchによる比較を説明しています。一つのscratchの結果は、ゲーム全体の進捗ではありません。

互換実装は動作の再現を目指します。ScummVMはゲームの実行ファイルを置き換え、元のゲームデータを利用します。ゲームへの対応状況を、機械語の一致率に読み替えることはできません。移植やハードウェア調査も、一致率がなくても価値があります。

分母を確認する

関数、バイト、ファイル、シンボル、特定済みアセットは異なる単位です。仮の例として1,000関数中900関数が一致すれば、関数数では90%です。しかし残りの関数がコードの半分のバイト数を占めるなら、バイト単位で90%ではありません。これは計算の説明であり、掲載プロジェクトの測定値ではありません。

次を確認してください。

objdiffはオブジェクトファイルの比較や進捗情報の生成に使われます。ただし、導入されているだけで具体的な分母や設定は分かりません。

バージョンと指標を混ぜない

ある地域版やデバッグ版の完了は、別バージョンの完了を意味しません。Ocarina of Timeは対応バージョンとビルド対象の選択を説明しています。

コードの一致とアセットの特定も別の作業です。コードが一致しても、すべての画像、音声、データ構造が理解されたとは限りません。発行元が合成指標を定義していない限り、勝手に平均しないでください。

日付の種類を区別する

レポートの日付は発行元が示す測定日です。取得日はDecompHubが資料を読んだ日です。今日取得したページに古い測定が載っていることもあります。リポジトリ情報や掲載内容の更新日も、測定の新しさを保証しません。

データ仕様書(英語)に出力フィールドを説明しています。引用するときは、プロジェクト、指標、範囲、出典URL、該当する日付を残しましょう。

不明には、レポートがない、取得できない、範囲を確定できない、収集がまだ届いていない、といった理由があります。100%を超える値、分母の変更、矛盾するバッジは確認が必要です。値を黙って切り詰めたり、不明をゼロやスター数に置き換えたりしないでください。

測定値のあるプロジェクトから出典を開いて比較できます。誤りを見つけたら、掲載ページの報告機能で根拠となる資料を示してください。