Skip to content

Architecture

Peterson Fernandes edited this page Aug 15, 2026 · 1 revision

Architecture

RetroAchievementsSharp is a 1:1 translation of the rc_hash module of rcheevos (MIT) — originally pinned to the RAHasher 1.8.3 submodule commit (40d916d, rcheevos 12.2.1) and since evolved to track rcheevos 12.4.0 as the single source of truth.

Repository layout

RetroAchievementsSharp.sln                 solution (Core + Cli + Tests)
RetroAchievementsSharp/               the hashing engine (class library)
  Models/                     struct-like callback/state types (C mirrors)
RetroAchievementsSharp.Cli/                the RAHasher-compatible command line
  Models/                     CLI data models (ConsoleInfo, Game)
RetroAchievementsSharp.Tests/              ported rcheevos vectors + the Tier-2 parity harness
References/                 read-only reference material (never shipped):
                            rcheevos-12.4.0, rcheevos-40d916d, RAHasher-1.8.3,
                            C oracle binaries (GPL, local test oracles only)

Engine

  • HashEngine — the console dispatch tables (FromFile/FromBuffer) and the buffered-file/playlist machinery.
  • HashIterator/RcHashIterator — the iterator-based API used for ? auto-detection.
  • HashRom, HashDisc, HashZip, HashEncrypted, Hash3DS, HashMd5, CdReader, ChdCdReader, RvzFilereader — per-format hashers.
  • RcHash — the deprecated single-shot public API (GenerateFromFile/GenerateFromBuffer).
  • AesHelper, FileUtil, FileSystemResolver — primitives and helpers.

CLI

  • Program — the legacy RAHasher-compatible positional interface and the subcommand dispatch.
  • Commands: scan, identify, consoles, checkkeys, fetch-db.
  • All logging goes through Serilog; Warning+ events are forwarded to the bug report API; usage telemetry is reported at launch (both can be disabled via environment variables — see CLI Usage).

Parity

A Tier-2 harness runs RetroAchievementsSharp.Cli.exe and the original C binaries with identical arguments and requires byte-identical stdout/stderr and equal exit codes: 90/90 corpus cases green against the rcheevos 12.4.0-built oracle; 415/415 fast tests + 172/172 slow tests green on each of net8.0, net9.0, net10.0.

Clone this wiki locally