Add The Oregon Trail: the 1975 MECC wagon-train classic

Add The Oregon Trail: the 1975 MECC wagon-train classic

#3 in Riparion/riparion-retro — merged 2026-06-08

A faithful, mobile-first WASM Dioxus port of the 1975 MECC Oregon Trail, built from the original CDC Cyber BASIC source (clintmoyer/oregon-trail). Lead a wagon party 2,040 miles from Independence to Oregon City before the winter snows — hunting, fording rivers, trading at forts, and weathering illness, bandits, snakebites, and mountain blizzards.

Oregon Trail — the trail hub in the Rocky Mountains

Fidelity

Mechanics mirror the original BASIC: the mileage/oxen formula, the cumulative random-event probability table, the eating/illness model, river and mountain (South Pass / Blue Mountains) hazards, and the marksmanship timing. The typed-word shooting game becomes a touch reaction game — tap the matching word; reaction time is your aim. The original kept no score, so a synthesized score (surviving supplies + distance + arrival speed) drives a local Trail Hall of Fame.

Architecture

Follows the taipan reference: a pure, host-tested engine (a fortnight turn-flow state machine) under a thin Dioxus renderer over a single Signal<Game>, auto-saving to localStorage. No router; mode dispatch only.

retro-kit additions

Promoted three shared primitives while here (the duplication this game surfaced):

  • SpendRow — a labeled dollar-allocation row (outfit + fort screens)
  • MenuButton — the two-line title+hint action button (trail / eat / riders)
  • SCREEN / SCREEN_CENTERED / SCREEN_HERO — screen-layout class constants

Verification

  • 17 engine tests: spec-anchored numeric checks, a multi-seed full-game smoke test, a good-vs-bad behavioral check, and a re-entrancy regression test.
  • cargo clippy --all-targets clean across the workspace; other games unaffected.
  • Driven end-to-end in a headless browser at 390×844 — full journeys win, zero console errors.
  • A code review pass (correctness + cleanup) was run and its findings fixed — notably uniform engine-level guards against touch double-tap re-entrancy.

🤖 Generated with Claude Code

Last updated 2026-06-09