Can you complete the Oregon Trail if you wait at a river for 14272 years?
Implementation of Oregon Trail and Applesoft BASIC
- 1985 Oregon Trail is largely in Applesoft BASIC, with the hunting minigame in assembly.
- Several note that many 8‑bit games mixed BASIC “scaffolding” with assembly routines for performance-critical parts (graphics, scrolling, redraws).
- Program is stored as tokenized BASIC: source text with keywords replaced by 1‑byte tokens; this makes decompiling relatively simple.
- Some commenters mention multi‑program structure with data passed via fixed memory addresses rather than formal libraries.
6502 Architecture and Zero Page Discussion
- Debate over a claim that you “must” use zero-page pointers to access 16‑bit addresses:
- Critics say this is incorrect; 6502 supports multiple addressing modes and can access all 64K directly with LDA.
- Others argue that, while the CPU allows it, BASIC’s own codegen may primarily use zero-page indirection.
- Clarifications:
- Indexed-indirect/indirect-indexed modes use zero page for pointers.
- Crossing page boundaries can incur extra cycles; separate confusion with JMP’s page-wrap quirk.
- Zero page is described as a performance hack akin to having ~256 “register-like” locations.
Numeric Types in Early BASICs
- Several posts complain that many BASICs defaulted to floating point for all numbers, which is slow and memory-heavy on 8‑bit machines.
- Counterpoints:
- Simpler mental model for beginners; no need to understand types, overflow, or fixed point.
- Some Microsoft-derived BASICs did support integer variables via suffixes (e.g.,
%), but often still performed calculations in float; benefit was mainly memory. - Examples of BASICs with richer typing (BBC BASIC, Locomotive BASIC) are mentioned; some used BCD internally.
- Comparisons are drawn to JavaScript’s “floats everywhere” design.
Variable Naming Constraints
- Short, cryptic variable names (often 1–2 characters) are traced to:
- Language limits (Applesoft only distinguishes first two characters).
- Small screens and line editors.
- Academic/math notation habits.
- This is contrasted with today’s very long, descriptive names; trade-off between quick comprehension once onboard vs readability for newcomers.
“Wait 14,272 Years” River Exploit
- Clarification from the discoverer:
- At the final river you can wait essentially indefinitely; health doesn’t degrade the usual way, so you can “live” ~15,000 in-game years.
- On resuming travel, the party then deteriorates extremely quickly and dies within days, even with food and rest.
- Unmodded achievement: surviving 15,000 years at the river. Patching was then used to force an eventual successful arrival, mainly “for fun.”
- Question raised: if you’re already patching, why does the original health quirk matter? The answer: the quirk made the initial “live 15,000 years” challenge possible without modification.
Gameplay Exploits and Historical Asides
- Discussion of “cooking” Oregon Trail’s economy: exploiting trades (e.g., clothes for oxen near The Dalles) to generate unlimited money.
- Historical notes on real Oregon Trail river crossings: wagons were sometimes disassembled, caulked, and floated; or placed on rafts.
- Some note that, geologically, the river’s course would change over 14,000+ years, underscoring the absurdity of the scenario.
Performance of Early Interpreters
- Stories about extremely slow BASICs (e.g., TI BASIC) emphasize how design and intermediate layers could cripple an otherwise capable CPU.
- General theme: many retro systems sacrificed performance for simplicity, portability, or compatibility.