//! `gc-trace` — the PCSX2 ground-truth harness. //! //! This crate is a **dev tool**. It never ships and no shipped crate depends //! on it; the dependency direction is the other way round (`tools/` may read //! what the engine computes). Its job is the one the rest of the suite cannot //! do: compare what the real game does against what we compute, from the same //! disc data. //! //! Inputs, in order of convenience: //! //! * **PINE** — the live emulator, over its unix socket. Needs PCSX2 running //! with PINE enabled. No savestate, no files. //! * **a PCSX2 savestate** (`.p2s`) — a zip with zstd/deflate entries holding //! `eeMemory.bin` and friends. Repeatable input: the file can be kept, //! but it is personal data and is never committed. //! * **a raw EE RAM dump** — 32 MiB, whatever produced it. //! //! The one comparison that exists so far is //! [`compare-tfrag-light`](tfrag_cmp::compare): the game's lit per-vertex //! tfrag colours in EE RAM against [`gc_engine::tfrag_light::light_tfrag`] over //! the same disc data. See `docs/plan/pcsx2-verification.md`. //! //! **Findings reach tests only as numbers.** A test never reads a savestate, a //! dump or a live emulator; when a comparison becomes a regression, distil the //! facts it needs into a small fixture and test against that. pub mod ee; pub mod p2s; pub mod pine; pub mod tfrag_cmp; pub mod zip; pub use ee::EeRam; pub use p2s::Savestate; pub use tfrag_cmp::{compare, print_report, LevelInputs, Report};