POPStarter DOCS

Design decisions

← POPSLoader docs · view on GitHub ↗

Last updated: 2026-07-13 (R3Z3N settings-review round 2 — profiles system dropped, START settings menu, region-native confirm button, keyboard rework; see the entry at the top of the log. Earlier: the 1.0.0 release + dev rename; the 2026-07-09 feature wave — Adaptive BDMA semantics, partition-installed games gated on the IMAGE0.VCD probe, the 22.05 kHz boot-chime re-encode; the 2026-07-07 full-repo audit fix waves; selectable cover/details folder (ART_LOCATION), default SMB port 1111, MX4SIO enumeration settle restore; POPSTARTER resolution reorder; exFAT/ATA isolation; frame-counted nav/desc-scroll, analog-fold gate, layered cover art, OPL-style overscan, boot-sound toggle, HDD (exFAT)/BDMA-ATA backend, µs-as-ms timer sweep). Released line: 1.0.1 (2026-07-13; previously 1.0.0 2026-07-10); active dev / rolling branch dev. Shared volatile facts (Known Issues, Preservation Contracts, Settings behavior, Invariants, Hardware Status) live in STATE.md — this log records the decisions, not the current-state snapshot. The current experimental goal state (device-layer rebuild, cover art, defaults) is STATE.md's Experimental channel (EXP32–EXP34) section; entries below that predate it are historical.

DECISIONS

Decision Log Format

Each entry records:
- Date (YYYY-MM-DD)
- Decision
- Rationale
- Implications
- Evidence

Decision Log

2026-07-15 — R3Z3N review round 3: footers advertise less, Credits into Settings, one save menu

2026-07-13 — R3Z3N settings-review round 2: profiles dropped, START menu, region-native confirm, keyboard rework

2026-07-10 — 1.0.0 released; dev/rolling branch renamed BETA-13-PLAY -> dev

2026-07-09 — Adaptive BDMA semantics: saved-mode-as-USB-preference, launch-cancel on staging failure, adaptive-off restage (800ac9c, 3eff270)

2026-07-09 — Partition-installed games are gated on an IMAGE0.VCD mount-probe, not partition name alone (198bae5)

2026-07-09 — Boot chime re-encoded at 22.05 kHz (e27103f; −190.9 KB, zero code changes)

2026-07-07 — SMB default Port = 1111 is DELIBERATE (rationale for 75e1a84)

2026-07-07 — The audit fix waves (61 findings actioned across 5 code commits)

2026-06-30 — Selectable Cover/Details Folder (ART_LOCATION); the open()-vs-fopen() cover theory was DISPROVEN (7f9b5fa, 6641860, BETA-13-PLAY)

2026-06-29 — Deterministic Removable-Device POPSTARTER Resolution: custom → cwd → device (BETA-13-PLAY)

2026-06-22 — HDD (exFAT) / BDMA-ATA Backend (df2eb9d, 6fd2142, afa1c09)

2026-06-22 — -page=ata Routes to the exFAT Page, not PFS (3d89631)

2026-06-22 — Layer C lazy-IRX: ds34bt/usbd Deferral DECLINED; Layer C Closed

2026-06-22 — Ruthless Audit: Dead-Symbol Cleanup + Bug Fixes (2735229)

2026-06-21 — Frame-Count Nav Auto-Repeat Instead of the Wall Clock (d128779)

2026-06-21 — os.clock() Sweep for the Remaining µs-as-ms Timers PARKED (not done) — SUPERSEDED (a8e61f3, 2026-06-22)

2026-06-21 — Description Right-Stick Scroll Is Frame-Counted Too (c8fce10)

2026-06-21 — Gate the Analog-Stick→D-Pad Fold on Real Analog Mode + Hysteresis (d233069, 9b8a38e)

2026-06-21 — Boot Sound On/Off Setting (6eba9e7, save fixed 9b8a38e)

2026-06-21 — OPL-Style Overscan (CRT Inset): Identity Render-Transform at Permille 0 (1ac15ad C core, 6f0d742 UI, 73f0933 reset)

2026-06-21 — Layered Cover-Art Placeholder Replaces the Single MISSING.png (56a5ad5)

2026-06-21 — Embedded-Asset Add/Remove Is Three Explicit Coordinated Places (not auto-glob)

2026-06-21 — Steer the HDD Game Scan Off the Boot PFS Slot (Proposal A, b159a43; save-after-scan liveness 8d1e67a)

2026-06-21 — Codex BETA-13 Audit: 6 Findings Verified Real and Fixed (ec81de3)

2026-06-21 — POPSTARTER.ELF Ships in Both Release Zips

2026-06-17 — PLDR.HDD Attach-Before-Init Load-Order Boot Fix (d4b04be)

2026-06-17 — BDMA Marker File Renamed .pldr_bdma_modebdma_mode.txt (Legacy Names Still Read)

2026-06 — POPSTARTER Memory Card Folder Toggle + BDMA Interlock

2026-06 — PAL Renders Natively at 640×512 (Supersedes the 640×448 PAL Layout)

2026-06 — HDD Boot-Partition RW Take-Over for Settings + In-App .hide (EnsureBootPartitionWritable)

2026-06 — Embedded-Lua Syntax Gate (luac5.4 -p) Is Now Live in CI

2026-05-31 — U-10 (BOOT.ELF from HDD-Booted POPSLoader) Resolved by PR #479 (reboot_iop=0)

2026-05-29 — MX4SIO Settings Save Fixed by PR #476 + PR #477 (Hardware-Confirmed)

2026-05-28 PM late (correction 2) — Class A vs Class B: HOSDmenu/wLE Fail to Launch POPSLoader is Distinct from U-10

2026-05-28 PM late — U-10 PASS Claim Walked Back; Remains Known-Broken Accepted

2026-05-28 PM — U-10 Unexpectedly Resolved; Known-Broken List Reduced to DKWDRV-HDD-Custom (WALKED BACK 2026-05-28 PM late — see entry above)

2026-05-28 PM — PR #470, #472, #473 Hardware-Verified

2026-05-28 — Layer C mmceman Lazy Load (PR #471, DRAFT)

2026-05-28 — Lua Forward-Reference Hotfix (PR #473)

2026-05-28 — MX4SIO Evidence-Based Mass: Classification (PR #472 + refinement 7b587fe)

2026-05-28 — mx4sio_bd Depends on usbmass_bd (Enforced at C Layer)

2026-05-28 — PLDR.LAUNCH_ARGS.game and -debug Consumers Wired (PR #470)

2026-05-28 — Rolling Release Workflow Operational

2026-05-28 — BETA-10-5 Hardware Confirmation (Nuno)

2026-05-27 — BETA-10-5 Release Cut (v1.0.0-rev5, commit 9a0ebe2)

2026-05-27 — HDD Sidecar Disabled; Known-Broken Edge Cases Accepted (PR #466)

2026-05-25 — NHDDL-Style Launch Argument Parsing (PR #458)

2026-05-25 — Unified ResolveBootContext Resolver (PR #458)

2026-05-25 — Per-Device Settings Sidecar with First-Run Migration (PR #459, PR #462)

2026-05-22 — Minimal B2 Dynamic PFS Unmount Production Fix

2026-03-06 — Lua runtime is embedded-only at boot

2026-03-06 — Settings persist as a transaction on Settings/Profile exit

2026-03-26 — USB vs MX4SIO identity is authoritative by mount driver

2026-03-26 — Runtime device locks are no longer enforced

2026-03-26 — Startup backend initialization is path-driven

2026-03-26 — PAL UI uses the same 640x448 raster layout as NTSC-authored UI assets

2026-03-26 — Release ZIP contract is strict and PATCH_5-based

2026-03-29 — QA_REGRESSION_MATRIX.md is the detailed run ledger

2026-05-13 — Separate build/package CI from comment-triggered AI automation

2026-05-19 — Default cover image is optional at compile time

Archived Investigations

The investigations below were active during the March–May 2026 development cycle and are now largely resolved by the BETA-10-5 release. They are preserved verbatim for historical context and to document the diagnostic chain that produced the B2 fix at commit 4ae6679 (D-10) and the V2 BOOT.ELF route at commit d23520a (L-07). For the current state, see STATE.md (current state, hardware status, and known issues) and QA_REGRESSION_MATRIX.md.

2026-07-28 — Adaptive BDMA now defaults ON, and -bdma=<mode> can pin the variant