POPStarter Documentation
Everything you need to play your PS1 game backups on a PS2 with POPStarter โ recovered from ShaolinAssassin's lost wiki, krHACKen's changelog and the community, merged and made fully searchable.
Full reference
Already know your way around? Jump straight in โ or use the search box up top to find any command, byte, or file instantly.
What's the difference between POPStarter, POPS, and POPSLoader?
Architecture: POPStarter vs POPS vs POPSLoader
POPStarter is krHACKen's launcher and patch/cheat LAYER wrapped around Sony's PS1-on-PS2 emulator, POPS (POPS.ELF, derived from the SLBB-00001 boot disc). The two are distinct: POPS does the actual PlayStation 1 emulation; POPStarter mounts the disc image (.VCD), reads per-game assets, applies its embedded cheat engine and compatibility patches, then hands control to POPS. The canonical reference build is the 2019-06-05 r13 Beta package (on archive.org as popstarter-r-13-beta-20190605), which ships POPSTARTER.ELF (167,700 B), POPSTARTER.KELF (167,708 B - a Sony-container 'Krypto-ELF' for HDDOSD), and krHACKen's own ~38 KB CHANGES.TXT changelog.
A THIRD project is easy to confuse with these two: the modern POPSLoader fork (a Lua launcher on the Enceladus runtime, originally by El_isra, now maintained by NathanNeurotic). POPSLoader is NOT POPStarter; it wraps the same POPS binaries but adds device backends stock POPStarter never had (MMCE, MX4SIO, USB exFAT, APA-HDD). For the site, treat the three names as separate entities and cross-link them.
The four asset families POPStarter consumes are: (1) CHEATS.TXT - plain-text $commands and raw GameShark/Action-Replay codes; (2) PATCH_#.BIN - binary blobs that force compatibility modes 0x01-0x07, disable IGR (PATCH_0), or set PAL/NTSC (PATCH_8/PATCH_9); (3) TROJAN_#.BIN - binary IGR-behaviour modifiers (TROJAN_0..5/9) and cumulative per-game fix bundles (TROJAN_7); and (4) handler files - VMCDIR.TXT, DISCS.TXT, BIOS.BIN/OSD.BIN. Many of these have exact equivalents across families ($COMPATIBILITY_0x## == PATCH_#, $IGR# == TROJAN_#, $NOIGR == PATCH_0, $NOPAL == stock PATCH_9, $480p == config $42A=0x02), so the site should present an equivalence map rather than duplicating each capability three times.