| title | DinoRand |
|---|---|
| slug | readme |
| game | cross |
| subsystem | meta |
| doc_type | index |
| status | validated |
| corpus | false |
| confidence | open |
| chunk | default |
| related |
Download latest release · User Guide
A randomizer for Dino Crisis 1 & 2, modelled on BioRand, the classic Resident Evil randomizer.
Give it an unmodified Dino Crisis 1 install (the DRM-free GOG release) and a seed; get back a randomized, still-completable playthrough — items, enemies, loadout, and (eventually) the whole door graph.
Playing, not building? Start with the User Guide — install, flags, seeds, spoiler log, and how to undo everything. Building on top? The Modding & Format Guide maps what's decoded, the data/library surfaces you can use, and the ground rules.
Supported edition: GOG (DRM-free) only. The Steam re-release is wrapped in "The Enigma Protector" DRM; DinoRand does not support patching it. Use the GOG build.
Status: active. DC1 (items, enemies, key-item logic, loadout, audio) and DC2 (enemy swaps, shop, BGM, voice, starting loadout) levers are implemented and tested; door-graph randomization is gated pending further reverse engineering.
src/DinoRand.FileFormats "dino-utils": parse/write STxxx.DAT stage files (no logic)
src/DinoRand.Randomizer seed-driven engine: graph, key-item logic, item/enemy passes
src/DinoRand.Cli console front-end (cross-platform)
src/DinoRand.App.Avalonia cross-platform GUI front-end → DinoRand.Avalonia (Win/Linux/macOS)
test/ unit tests (codec + parser round-trips)
data/dc1/ JSON game data (items, enemies, room metadata)
If you don't have the SDK, install it user-local in WSL/Linux (no sudo):
curl -fsSL https://dot.net/v1/dotnet-install.sh | bash -s -- --version 8.0.423 --install-dir "$HOME/.dotnet"
export DOTNET_ROOT="$HOME/.dotnet" && export PATH="$HOME/.dotnet:$PATH" # add to ~/.bashrc to persistThen:
dotnet build # 0 warnings / 0 errors
dotnet test # full unit suite (codec + parser + randomizer round-trips)
dotnet run --project src/DinoRand.Cli -- --help
# Run against your install (absolute path); output → mod_dinorand/
# (includes SPOILER.md — bug-report debug block on top, room-by-room spoilers below a
# marker; --no-spoiler skips it.)
dotnet run --project src/DinoRand.Cli -- --install /path/to/DinoCrisis --out mod_dinorand --seed 12345Requires dotnet tool restore (one-time, installs ReportGenerator from .config/dotnet-tools.json).
dotnet tool restore # one-time
# Full run: tests → Cobertura XML → HTML report → text summary printed to terminal
bash scripts/coverage.sh
# Quick: just run tests with raw Cobertura output (no HTML)
dotnet test \
--settings test/DinoRand.FileFormats.Tests/coverage.runsettings \
--collect:"XPlat Code Coverage" \
--results-directory TestResultsOutputs:
coverage-report/index.html— line/branch heatmap, open in a browsercoverage-report/Cobertura.xml— machine-readable, CI-consumablecoverage-report/Summary.txt— plain-text table printed at the end of the script
src/DinoRand.App.Avalonia is the GUI (Avalonia 12, net8.0); it builds to
DinoRand.Avalonia and runs on Windows, Linux and macOS. It is the sole GUI front-end (the
former WPF .App was retired). From the repo root
with the .NET 8 SDK installed:
# Build and launch the cross-platform GUI in one step
dotnet run --project src/DinoRand.App.Avalonia
# …or produce a release build and run the executable
dotnet build src/DinoRand.App.Avalonia -c Release
./src/DinoRand.App.Avalonia/bin/Release/net8.0/DinoRand.Avalonia # DinoRand.Avalonia.exe on WindowsNeeds a desktop session (it opens a window) — it can't run headless over plain SSH/WSL without an X server. For headless/WSL runs use
DinoRand.Cli.
dotnet build/dotnet run produce framework-dependent binaries — they need the .NET 8
runtime installed to launch. For a release, use scripts/publish-release.sh to emit
self-contained, single-file executables that run with no .NET runtime installed:
dotnet restore src/DinoRand.Cli --locked-mode
dotnet restore src/DinoRand.App.Avalonia --locked-mode
scripts/publish-release.sh # default: win-x64 (Avalonia GUI + CLI)
scripts/publish-release.sh linux-x64 # Avalonia GUI + CLI
scripts/publish-release.sh win-x64 osx-arm64 linux-x64 # several RIDs at onceArtifacts land in dist/<rid>/:
DinoRand.Avalonia/DinoRand.Avalonia.exe— cross-platform GUI front-end (every RID)dinorand/dinorand.exe— CLI front-end (every RID)
No data files ship alongside the binary: the game data is already baked in (map.json is an
embedded resource; the rest of data/dc1 is compiled into Definitions/DinoCrisis1.cs), so
each published executable is the whole tool.
DinoRand ships a Python Archipelago world in apworld/dino_crisis_1/
(zip it as dino_crisis_1.apworld for AP's custom_worlds/, or drop the folder into a source
checkout's worlds/ — verified against AP 0.6.7) plus a DC1 runtime client in the DinoRand CLI:
dinorand --ap-connect <host[:port]> --ap-slot <name> --install <dir> patches AP's item placement
into your GOG install and syncs the running game — pickups become checks, received items appear in
your inventory, reaching the goal completes your slot. The full loop (connect, checks, grants,
reconnect, goal) is live-verified end-to-end. The client polls DINO.exe from outside the
process (nothing injected) and therefore runs on the Windows host only. DC2 is generation-only
for now. It ships no game assets — the logic is distilled from authored data via
scripts/gen_ap_logic.py.
Setup + tests: apworld/dino_crisis_1/README.md and the USER-GUIDE "Archipelago" section.
Branch off main and open a PR — main is protected, and CI (build-test-coverage)
runs the tests behind a coverage floor. New features need tests that hold or raise it.
Releases are cut only from a protected, existing vX.Y.Z or SemVer prerelease tag whose checked
commit is already in main. Full details: CONTRIBUTING.md.
DinoRand is an unofficial, fan-made project. It is not affiliated with, authorized by, endorsed, or sponsored by Capcom. "Dino Crisis" and all related names, marks, and game assets are trademarks and/or copyrights of Capcom Co., Ltd. and their respective owners.
DinoRand ships no Dino Crisis assets. You must own a legal copy of the game. The tool
reads your install and writes randomized copies to mod_dinorand/; it never modifies the
originals in place.
DinoRand deliberately targets the DRM-free GOG build and patches only gameplay data — it never circumvents any technological protection measure (cf. DMCA §1201). The Steam re-release (wrapped in "The Enigma Protector" DRM) is unsupported for that reason.
DinoRand's own source code is released under the MIT License. Project scope and non-affiliation terms are in LEGAL.md, and third-party components are credited in THIRD-PARTY-NOTICES.md.
Provided for interoperability and personal use with a game you own. This is not legal advice; consult your game's EULA regarding reverse engineering and modification.