POPStarter DOCS

Testing

← POPSLoader docs · view on GitHub ↗

Build: the rolling build published from dev (its version row reads v1.1.1-dev). Public release is 1.1.0 (2026-07-21).
This is the structured "what to test" companion to ROLLING_NOTES.md ("what's new"); for the canonical status / invariants / known-issues list see STATE.md. Regenerate when the rolling batch changes. (Last refreshed: 2026-07-27 — added the game-details .txt fix, the translation reachability sweep, and the launch-after-browsing regression watch. Prior: settings-review round 2; per-device POPSTARTER.ELF resolution; normal-HDD-still-works; SMB (v1); HDD (exFAT).)

Devices: USB · MX4SIO (SD over SIO2) · MMCE (SD2PSX / MemCard PRO) · HDD (internal PFS) · HDD (exFAT) — BDMA Mode ATA · SMB (v1) network share — NEW. Test the ones you use; say which in every report.

How to report: pass / fail / odd. On a fail give: device, console model + region (e.g. SCPH-90008 PAL), how you launched POPSLoader (from which device / which launcher), exact steps, and a photo — error screens now print the real reason on line 2.


P0 — Must work on every device (boot · launch · no regressions)

P1 — New features this cycle

Translations — messages that were stuck in English (NEW, never run on hardware)

A batch of on-screen messages was being assembled in a way that threw the translation away before it was looked up. Those now go through the translator, and Hungarian gained a fresh round of strings.
- [ ] Set Settings → Startup → Language to a non-English language and use the launcher normally. Report any row, toast or error screen still showing English when the rest of the page is translated, and any label that runs off the edge of a row.
- [ ] Hungarian specifically: on the HDD page, the "no games found" and "list refreshed" toasts should now appear in Hungarian, and the LAUNCH FAILED screen (including the "press this button" line under it) should be translated and name the right button for your console.
- [ ] A translation with a missing placeholder must fall back to English, never break the message. If any toast shows a raw %s, or a message vanishes where you expected one, report the language and the exact screen.

Launching after browsing a list (regression watch, never run on hardware)

The cover loader was reworked, and it is emptied out before every handoff to another program.
- [ ] On each device you use, browse a game list for a while, then launch a game. MX4SIO and USB matter most, they are the ones with big ART/ folders. It must still launch, with no hang on a "Loading ART..." message.
- [ ] Same check for Exit → BOOT.ELF and for Disc (DKWDRV) after you have browsed a list first.

Settings save on an HDD-loaded rig

Mostly a "does anything feel missing?" pass. Nothing was removed from what the launcher can DO, only from what it advertises.

HDD (exFAT) via BDMA ATA — worked on one console, stalled on another; needs a wide pass

The flagship new feature this cycle (R3Z3N's ATA BDM Assault drivers + saildot4k's backend work): play from an exFAT-formatted internal SATA/IDE drive, exactly like a big USB stick. If you have an exFAT internal drive, this is still one of the most valuable things you can test. It listed and launched from a 4TB GPT drive on one console, but on another console it stalled while starting the drive for weeks afterwards, and the current build changed when the drive driver loads without that change being confirmed on hardware yet. If the page stalls, photograph the screen before rebooting: the step number and the bracketed text on it are the whole diagnosis.

Setup:
1. Format the internal drive exFAT (NOT the classic APA/PFS HDL layout — that's the separate "HDD (PFS)" entry).
2. Put a POPS/ folder at the drive root with your .VCD files (+ your own POPS_IOX.PAK, POPSTARTER.ELF) — same layout as a USB stick.
3. Settings → BDMA Mode → ATA and save. (On apply, the .ata launch drivers are copied — with the .ata suffix stripped — to mc?:/POPSTARTER/.)
4.
Settings → Device List → **Internal HDD
and save. The choices are APA / PFS, exFAT, and Both; Both is now the factory default, so a fresh install should already show both internal-HDD entries on the carousel. Picking a single filesystem shows only that page. (A -page=ata boot argument opens the exFAT page regardless of this setting.)

Test:
- [ ] Open the HDD (exFAT) carousel entry → it scans mass:/POPS and lists your games.
- [ ] Select a game → X → it launches through POPStarter (same as USB/MX4SIO).
- [ ] Classification: the exFAT drive must list/launch only under HDD (exFAT) — confirm it does NOT also appear under USB or MX4SIO, and that USB/MX4SIO still work normally. (ATA is matched by exact ioctl driver-name ata, so it shouldn't leak — but this is exactly what hardware needs to confirm.)
- [ ] No exFAT drive present / BDMA Mode ≠ ATA → the page shows "No exFAT HDD detected" and does not hang. (Remember the page itself is only on the carousel while Internal HDD = exFAT.)
- [ ] Launch-arg routing (NEW — never HW-run): booting with -page=ata (or ata0, or exfat) opens the HDD (exFAT) page; -page=hdd / hdd0 / apa / apa0 / any pfs open the classic HDD (PFS) page. (-page=ata -game=<VCD> should auto-launch from the exFAT drive.) Confirm -page=ata no longer lands on the PFS page.
- [ ] Boot Page = HDD (exFAT): Settings → Startup → Boot Page now offers HDD (exFAT) — set it, save, reboot → POPSLoader lands straight in the exFAT game list. If a saved Boot Page's device is hidden (e.g. HDD (PFS) after switching Internal HDD to exFAT), boot lands on the carousel with a toast saying why instead of silently.
- Report: empty list, a game that lists but won't launch, the drive showing under the wrong device, or a hang — include console model and drive type/size.

Per-device POPSTARTER.ELF — NEW, never run on hardware

POPSLoader now picks the POPSTARTER.ELF for a launch per device, so you can keep a different POPStarter build on each device. At launch the search order is: (1) an explicit POPSTARTER Path you set in Settings if it resolves → (2) the game's own <device>:/POPS/POPSTARTER.ELF if present → (3) the POPSTARTER.ELF next to where POPSLOADER.ELF launched from → (4) the mc0:/mc1:/POPSTARTER fallback. On the internal PFS HDD, step 2 is hdd0:__common/POPS/POPSTARTER.ELF. The device + cwd steps are existence-gated, so a device with no copy just falls through — per-device builds are enabled, not forced. The release ships multiple POPStarter builds for exactly this (a normal one, a USB-delay one, and debug variants — the "POPSTARTER VERSIONS" in the zip). (The old 16-entry Profile preset list is gone — leave POPSTARTER Path on Automatic for the order above, or set a path to pin one build.)

Test (each removable device — USB / exFAT / MX4SIO / MMCE):
- [ ] Per-device build pickup (the headline use): drop a specific POPSTARTER.ELF build — e.g. the USB-delay build — into the USB drive's POPS/ folder. Launch a USB game (ideally one that only runs with the USB-delay build) → it should now use that build and launch. Other devices keep using their own / the fallback build.
- [ ] Existing setups unchanged: a device with no POPSTARTER.ELF in its POPS/ folder still launches games exactly as before (it falls through to the launcher's own copy / the Memory Card).
- [ ] Custom path always wins: set an explicit POPSTARTER Path in Settings (an absolute path) → that build is used on every device regardless of any per-device copies. Clearing it returns to the per-device order.
- Report: a per-device build that isn't picked up, an existing setup that stopped launching, or the wrong build being used.

Test (internal PFS HDD — launch-critical, please be thorough):
- [ ] HDD game launches via __common: on a PSBBN / HDD-OSD internal drive where the POPStarter binaries live at hdd0:__common/POPS/, launch a PS1 game from the HDD (PFS) list → it boots POPStarter with no black screen. (The new hdd0:__common/POPS/POPSTARTER.ELF step routes through the same internal-HDD machinery as before, but it has not been run on hardware — this is the most regression-prone path.)
- Report: a black screen, a "can't find POPSTARTER" message, or any hang launching an internal-HDD game.

Settings page — round-2 redesign (NEW, never run on hardware)

The Settings page is now an accordion: only the section your cursor is in shows its rows; the others fold to a single header line. Headers are gold (they're labels, not rows), read-only status lines (like Actual output) are dimmed darker than anything you can select, and a section now unfolds over a few frames instead of snapping open.
- [ ] Move Up/Down through the whole page — every section opens as you enter it, the one you left folds, and the unfold looks like a quick drop-down (not an instant snap, not a slow crawl).
- [ ] Nothing dimmed-dark can be selected, and everything selectable can be reached. The dim Actual output line under Video Standard is informational — confirm it's obviously not an editable field now.
- [ ] Save / Reset Defaults / Discard & Exit moved off the list: press START — a small menu opens (Up/Down + Confirm; the cancel button closes it). Confirm all three actions work from it, and that the old inline rows are gone.
- [ ] Backing out with unsaved changes still asks "Save your changes before leaving?" exactly as before.
- [ ] Hide UI Text now reads On/Off (it was Hidden/Visible). Confirm On hides the footer/help text as before and the value survives a save + reboot.
- [ ] Every existing setting still saves/persists exactly as before.
- Report: a section that won't open, the START menu not appearing, an action firing twice, the cursor getting stuck mid-animation, or any setting failing to save.

Region-native confirm button (NEW — needs a JAPANESE console + any Western console)

On Japanese consoles the PS2 convention is Circle = confirm, Cross = cancel. POPSLoader now reads the console ROM at boot and flips its buttons AND all on-screen hints to match.
- [ ] On a Japanese console (any NTSC-J model): Circle confirms/launches, Cross cancels/goes back — everywhere (menus, settings, keyboard, the "Keep this display mode?" prompt, exit dialog). Every footer hint and every "X:/O:" text names the right button.
- [ ] On a US/PAL console: absolutely nothing changed — Cross still confirms everywhere.
- [ ] The confirm action is always the left-most item in the button bar at the bottom of every page, on both console types.
- Report: any screen where the buttons and the printed hints disagree, or where the old mapping stuck.

On-screen keyboard rework (NEW, never run on hardware)

POPSTARTER Path — "Automatic" (profile presets removed; NEW, never run on hardware)

The Profile row (Profile 1..16 presets) is gone. Settings → POPSTARTER → POPSTARTER Path now shows Automatic by default — POPSLoader finds POPSTARTER.ELF on its own (the per-device order above). Set a path to pin a specific build; clear the path in the editor to go back to Automatic.
- [ ] On Automatic, every device that launched before still launches (nothing to configure).
- [ ] Set an explicit path → that build is used; set a wrong/unplugged path → the launch still works via the automatic order (no error unless nothing is found anywhere).
- [ ] With no POPSTARTER.ELF anywhere, launching warns that none was found (instead of a silent failure).
- [ ] If you had a Profile selected in an older build: after updating, launches still work with zero setup — your preset choice is carried over into POPSTARTER Path automatically on first boot (check Settings → POPSTARTER: the old preset's path should be filled in; the default Profile 1 shows Automatic).
- Report: a setup that launched before the update and stopped after it — include where your POPSTARTER.ELF files live.

SMB (v1) network game browsing — NEW end-to-end, never run on hardware

SMB (v1) is implemented end-to-end (CI + Rolling green). Browsing and launching are hardware-confirmed on a static IP setup — the maintainer has been launching SMB games this way for some time. If you use DHCP, you need a build newer than bb62f2be: POPStarter cannot obtain an address on its own, and the loader used to delete the IPCONFIG.DAT that carries it whenever IP assignment was DHCP (the default). On those builds a DHCP setup browses perfectly and then black-screens shortly into the launch. That is fixed — the loader now writes the address it leased — but the DHCP path itself has not been confirmed on hardware yet, so it is the single most valuable thing to test here. You set your server/share/credentials in a new SMB / Network Settings section, install the in-game SMB streaming pack into mc0:/POPSTARTER/ (the same way BDMA installs its modules), then browse and launch PS1 games straight off a network share from the SMB carousel page. Networking is lazy: the stack comes up and the share opens only when you enter the SMB page or trigger a settings action — nothing SMB runs at boot. NetBIOS is not supported (the address type must be IP); the in-game pack is what POPStarter uses to stream the game off the share at launch.

Setup:
1. Settings → expand SMB / Network → set Server IP, Share, User/Password, IP assignment (DHCP/Static), Port (default 1111 — set this to your server's actual SMB port; stock SMB servers listen on 445, the 1111 default suits alternate-port SMBv1 setups), Games path (folder holding POPS), Link mode.
2. Set SMB modules → Installed and Save (this writes the pack + SMBCONFIG.DAT/IPCONFIG.DAT — see the install checks below).

Settings + module install:
- [ ] Settings → expand SMB / Network. Top row SMB modules (Installed / Not installed); below: IP assignment (DHCP/Static), PS2 IP / Netmask / Gateway / DNS, Link mode, Server IP, Port (default 1111), Share, User, Password, Games path (folder holding POPS). (The old Address type / NetBIOS name rows are gone — NetBIOS was never supported at connect time; use the Server IP.)
- [ ] Cycle rows change with Left/Right / X; text rows open the on-screen keyboard on X. Password masks (****); empty Games path shows "(share root)"; empty Share/User show "(not set)".
- [ ] Keyboard symbols: in any SMB text field, toggle R2 — the digit/bracket keys now type @ # $ % ^ * " < > | { } ~ \`` so usernames likeuser@host, hidden shares ending$, and symbol-heavy passwords are enterable. - [ ] **Input hygiene:** type a value with a trailing space or a junk Port like44S→ the editor immediately shows what was actually kept ("... adjusted") instead of silently saving garbage; a wrong-shaped IP falls back to the default with the same notice. - [ ] Edit fields → **unsaved (accent) marker** → **Save Changes** → **reboot** → values **persisted** exactly as entered. - [ ] **SMB modules = Installed → Save:**mc0:/POPSTARTER/(ormc1:on a slot-2-only console) should now holdpoweroff.irx,ps2dev9.irx,ps2ip.irx,ps2smap.irx,smbman.irx,SMSUTILS.irx, plusSMBCONFIG.DATandIPCONFIG.DAT. OpenSMBCONFIG.DAT: line 1 =[:] , then (if User **or** Password is set) username + password on lines 2/3.IPCONFIG.DAT= . **On DHCP it is written too**, carrying the address the loader itself leased — POPStarter has no DHCP of its own, so an absentIPCONFIG.DATleaves it with no network and a launch that dies right after the loader's last frame. Because that address only exists once the interface is up, the file is written/refreshed **on a successful SMB connect**, not at boot: if it is missing straight after a Save, enter the SMB page once and re-check. - [ ] **Change an SMB field while Installed → Save:** the in-gameSMBCONFIG.DAT/IPCONFIG.DATare **backfilled on every save** — generated if missing, **regenerated** with the new values when changed (the 6 IRX are rewritten harmlessly). - [ ] **SMB modules = Not installed → Save:** the 8 SMB files are **removed**, but **icon.sys,.icn, and any installed BDMA modules (usbd.irx/usbhdfsd.irx`) MUST remain — confirm BDMA still works afterward.
- [ ]
Reset Defaults sets SMB modules → Not installed + fields to defaults (Save then uninstalls, mirroring BDMA→FAT32).
- [ ]
No regression: every other setting still saves/loads as before, and boot time is unchanged.
- Report: a field that won't persist, the wrong files installed/removed,
BDMA modules or icons clobbered by SMB-off*, or any boot slowdown.

Connect / browse / launch / disconnect (the new end-to-end path — never HW-run):
- [ ] Lazy connect — confirm boot is untouched first: boot straight to the menu and stay off the SMB page → no network activity, no slowdown, no errors. Networking must come up only on entering the SMB page (or a settings action), never at boot.
- [ ] Browse: open the SMB carousel entry → it brings up the stack, opens the share, scans POPS/ and lists your VCD games like any other device. The overlay now reports each phase ("Loading network modules...", "Waiting for network link..." / "Waiting for link + DHCP lease...", "Logging on to the share...") instead of freezing on one frame, and a failure names the failing step (no link / IP config / DHCP / can't reach server / server refused SMBv1 / login / share). Report a hang, an empty list with games present, or a connect error with the exact message.
- [ ] Modules-not-installed guard: with SMB modules = Not installed, entering the SMB page warns that games will list but won't boot, and pressing X on a game is blocked with the same explanation (browsing itself still works).
- [ ] Launch: select an SMB game → X → it hands off to POPStarter (argv0 selector smb:/POPS/SB.<name>.ELF) and POPStarter streams the VCD from its own smb:/POPS mount (via mc:/POPSTARTER/SMBCONFIG.DAT). (Hardware-only unknown: the exact device prefix POPStarter accepts — we ship smb:/POPS/SB.<name>.ELF, with mass:/POPS/SB.<name>.ELF then mass:/SB.<name>.ELF as fallbacks. If a game lists but won't launch, note the exact behaviour.)
- [ ] Disconnect on exit: leave the SMB page → the share is closed and the session logged off (CLOSESHARE + LOGOFF); a failed connect also tears down cleanly with no half-open session left behind. Re-entering the page should reconnect fresh.
- [ ] Blank-share picker: clear the Share field, then enter the SMB page → it enumerates the server's shares (GETSHARELIST) and an in-UI picker lets you choose one; your choice persists (settings + the in-game SMBCONFIG.DAT) and it reconnects. Report a picker that lists nothing, a choice that doesn't stick, or a reconnect that fails.
- The .DAT byte format is from the recovered POPStarter docs and is hardware-confirmable only (report if POPStarter rejects a generated SMBCONFIG.DAT). Other hardware-only unknowns: the connect handshake and the GETSHARELIST DMA.

Adaptive BDMA — NEW, never run on hardware (needs a two-device setup, e.g. MMCE + USB)

Partition-installed PS1 games on the HDD page — NEW, never run on hardware

(For drives with HDDOSD / PSBBN-style installs: one partition per game, named PP.Something — or __.Something for hidden ones — with the disc image inside always called IMAGE0.VCD.)

Boot chime re-encoded (half the size) — needs an ear-check

HDD page diagnostics (for the "HDD list comes up empty when booted from USB/MC" rig)

P2 — Hide / settings persistence

P3 — Display / PAL (needs PAL hardware — we have none on the team)

P4 — Cosmetic / polish

P5 — Robustness (only if you hit it)

Release zip contents


Known issues — expected, please don't re-report (unless your case differs)