Skip to content

NathanNeurotic/POPSLoader

 
 

POPSLoader
GitHub Downloads (all assets, all releases)

POPSLoader

Last updated: 2026-03-07

POPSLoader is an open-source PlayStation 2 launcher for POPStarter, scripted in Lua and built on top of Enceladus runtime components.

This repository contains:

  • the launcher (POPSLOADER.ELF),
  • embedded runtime Lua scripts/assets,
  • embedded IOP modules,
  • and packaging/build logic for release artifacts.

Project Lineage

Current Feature Status

Main menu option Status
MMCE Implemented
MX4SIO Implemented
HDD (PFS) Implemented
USB Implemented
Disc (DKWDRV) Implemented
HDD (exFAT) Not implemented
SMB (v1) Not implemented

Installation (Prebuilt)

  1. Download the latest POPSLOADER.zip release.
  2. Extract and keep the packaged layout intact.
  3. Copy PS1_POPSLOADER/ and POPS/ to your target storage.
  4. Add PS1 .VCD files to the selected backend POPS/ location.
  5. Launch POPSLOADER.ELF using your preferred ELF launcher.

Package layout:

PS1_POPSLOADER/
  POPSLOADER.ELF
  POPSTARTER.ELF
  APPINFO.PBT
  title.cfg
  icon.sys
  list.icn
  copy.icn
  del.icn
POPS/
  PATCH_5.BIN

Notes:

  • PS1_POPSLOADER/ can be installed/launched from any device path supported by your loader setup.
  • POPS/ content location is backend-dependent and must match the active launch backend expectations.
  • CI validates the package manifest above and excludes legacy POPS/*.tm2 payload entries.

Runtime Behavior (Current)

  • Boot/runtime Lua is loaded from embedded assets.
  • Settings are staged in UI and committed on Settings/Profile confirm/leave.
  • Settings file path: mc0:/POPSTARTER/.pldrs.
  • Configurable executable paths:
    • POPStarter path
    • DKWDRV path
  • mc?:/ alias is supported for executable path resolution (mc0:/ then mc1:/).
  • USB vs MX4SIO list split is based on mount-driver identity (System.getMassMountDriver), not path-name guessing.
  • Cover sidecar lookup uses selected .VCD path with .png suffix.

Requirements

POPStarter runtime assets

  • For POPStarter runtime binaries/packages, see:
  • Typical required files include (depending on setup):
    • IOPRP252.IMG
    • POPS.ELF
    • POPS.PAK
    • POPS_IOX.PAK

Game images

Optional cover art

  • Sidecar cover image path: same folder/name as selected VCD, with .png extension.
  • Recommended format: PNG, non-interlaced, truecolor/RGBA.

HDD (PFS) path notes

  • HDD title scan uses __.POPS and __.POPS1..__.POPS9 partitions.
  • HDD dependency checks in launcher currently reference hdd0:__common/POPS/ files.

Supported Devices and Backends

  • MMCE (mmce0:/, mmce1:/): supported.
  • MX4SIO: supported (detected via mass mount driver classification).
  • USB mass (mass:/, mass1:/...): supported.
  • Internal HDD (hdd0:, pfs:): supported (PFS flow implemented).
  • SMB menu entry: currently marked Not Implemented Yet in UI.
  • Disc (DKWDRV): implemented via menu modal and launch-path check.

Recent Hardening Highlights (Last 72 Hours)

  • Settings commit/apply flow hardening.
  • POPStarter launch arg/prefix/path corrections.
  • USB/MMCE/MX4SIO detection and first-entry behavior fixes.
  • Cover derivation/preview behavior cleanup.
  • Asset cleanup and embed pipeline cleanup (including removal of unused HDD.png embedding).
  • Packaging policy finalized on POPS/PATCH_5.BIN with stricter CI manifest checks.
  • Documentation and regression-matrix audit refresh.

Full changelog range:

Project Structure

  • src/: EE runtime, Lua bindings, rendering/audio/input, launch plumbing.
  • bin/POPSLDR/: runtime Lua scripts, bundled assets, POPStarter payload files.
  • iop/: embedded IOP modules and bdm_query RPC module source.
  • modules/: controller-related modules (ds34bt, ds34usb, pademu).
  • EMBED/: resources embedded into the ELF at build time.
  • etc/: boot script and helper scripts.
  • QA_REGRESSION_MATRIX.md: hardware validation checklist and pass/fail matrix.
  • .github/workflows/compilation.yml: CI build and packaging pipeline.

Build From Source

Recommended (same environment as CI)

Use ps2dev/ps2dev and run:

make clean elfloader all

Local build prerequisites

  • PS2 toolchain environment (PS2DEV, PS2SDK, gsKit/ports libs).
  • ps2-packer, make, and standard build tools.

Build outputs

  • bin/enceladus.elf (intermediate)
  • bin/POPSLOADER.ELF (packed launcher)

Known Limitations

  • HDD (exFAT) menu path is not implemented yet.
  • SMB (v1) menu path is not implemented yet.
  • Current release focus is stability/correctness/hardening, not new backend expansion.

Credits

Extra Thanks To Testers

  • @VizoR
  • @bigol
  • @nuno6573
  • @P4NCHOL1NO
  • @rorcarrot
  • @UNDEAD
  • @Berion
  • @R3Z3N (ps2store.com)
  • @Kamo
  • If I missed you, please contact me: https://tinyurl.com/PS2SPACE

Splash Screen

Video Preview

License

This project retains the GNU General Public License v3.0.