Config Table ($410–$42F)
POPStarter r13 stores a 32-byte configuration table at file offset $410 inside POPSTARTER.ELF/.KELF. Each byte is one setting.
The table below is krHACKen's original wording, so $412 appears there only as the SetGsCrt hack. That is the same switch this site and CHEATS.TXT call $HDTVFIX. Setting $412 to 0x01 and putting $HDTVFIX in CHEATS.TXT do the identical job, and krHACKen said as much when he made it default-off in Beta 16: "add $HDTVFIX to your CHEATS.TXT, or patch the offset 412h of the ELF/KELF".
One caveat on the original note. It reads "helps with the HDTVs that can't deal with the interlaced resolutions thru component", which is back to front for what the byte actually does. The hack pins SetGsCrt's interlace parameter on, so switching it to 0x01 turns interlacing on (480i on NTSC, 576i on PAL). What it rescues are HDTVs that refuse the PS1's 240p/288p over component and show a plain green screen instead. Read the original sentence as "can't deal with the [non-]interlaced resolutions" and it lines up. Corroborated on the psx-place thread, where a user stuck in 480i got 240p back by deleting a $HDTVFIX an installer had written for them.
POPStarter Configuration Table – Advanced Settings
This documentation concerns the advanced configuration of POPStarter r13, involving the harcoding (or the patch-on-load) of settings to the POPStarter ELF/KELF...
The POPStarter r13 ELF and KELF have a 32 bytes long configuration table, starting from the offset $410 (or 1040 in decimal).
- Caution : Unless you know exactly what it is for and what you’re doing, please don’t tamper with it. Hexediting of that stuff is for advanced users only. Make a backup of the default config before you start changing values. If you are not sure, read the section below (PPF bunch pack).
| Offset | Description | Values | Notes |
| $410 | Display of the debug texts/pages | 0x00 = disables the debug printing | |
| 0x01 < X < 0xFF = defines the delay between each page of texts | The higher the value is, the longer the delay is | ||
| 0xFF = the debug texts are displayed in realtime without delay (like in POPStarter 12 and lower) | |||
| $411 | Break the POPStarter execution after an error has occured | 0x00 = POPStarter prints the error message for a short time, then it kicks the user to the OSD. | |
| 0x0X POPStarter prints the error message and sleeps on that screen indefinitely | |||
| $412 | SetGsCrt hack | 0x00 = disabled (default) | |
| 0x01 = enabled | Helps with the HDTVs that can’t deal with the interlaced resolutions thru component (plain green screens and other rubbish displayed otherwise). | ||
| $413 | USB access delay, after the execution of the POPStarter embedded USB modules | 0x02 should be fine. Increase the value if POPStarter fails to access your USB device | |
| $414 | RESERVED (in USB operation mode) | Must be 0x40 | |
| $415 | User ID for individual VMCs | If set to 0x00, the function is disabled. | For assigning an ID to the couple of VMC, the value must be an ASCII character of “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8” or “9” |
| $416 | POPS dev9 module loading (in USB operation mode) | 0x00 = Let POPS load it Default is 0x03. If you need to wake the NIC up (for debugging stuff for example), set this to 0x00 | |
| 0x03 = Forbids its loading | |||
| $417 | NOT USED | ||
| $418 | Force a single compatibility mode | 0x00 = No compatibility mode is forced | |
| 0x0X = the respective compatibility mode is forced and the automatic activator gets disabled | |||
| $419 | Force a single compatibility mode | 0x00 = No compatibility mode is forced | |
| 0x0X = the respective compatibility mode is forced and the automatic activator gets disabled | |||
| $41A | Force a single compatibility mode | 0x00 = No compatibility mode is forced | |
| 0x0X = the respective compatibility mode is forced and the automatic activator gets disabled | |||
| $41B | Force a single compatibility mode | 0x00 = No compatibility mode is forced | |
| 0x0X = the respective compatibility mode is forced and the automatic activator gets disabled | |||
| $41C | Force a single compatibility mode | 0x00 = No compatibility mode is forced | |
| 0x0X = the respective compatibility mode is forced and the automatic activator gets disabled | |||
| $41D | Force a single compatibility mode | 0x00 = No compatibility mode is forced | |
| 0x0X = the respective compatibility mode is forced and the automatic activator gets disabled | |||
| $41E | Force a single compatibility mode | 0x00 = No compatibility mode is forced | |
| 0x0X = the respective compatibility mode is forced and the automatic activator gets disabled | |||
| $41F | Force a single compatibility mode | 0x00 = No compatibility mode is forced | |
| 0x0X = the respective compatibility mode is forced and the automatic activator gets disabled | |||
| $420 | Patch the genuine HDD check | 0x00 = Don’t patch | Totally useless. When running in a PS2, a homebrew ATAD is used. When running in a PSX, the original POPS ATAD is used. Leave it to 0x01 |
| 0x01 = Patch | |||
| $421 | Loading and execution of the OSD shell of the POPS built-in BIOS | 0x00 = Load in the user memory and execute (don’t patch anything) | 0x01 has the same effect as the compatibility mode 0x06. Skips the CD checks and the PS logo. Both don’t work if the user uses a BIOS.BIN |
| 0x01 = Don’t load, don’t execute | |||
| $422 | Exception breakpoints control | 0x00 = Break the emulator (don’t patch anything) | 0x01 NOPs the break instructions of the 2nd-stage exception handler, allowing the user to trigger IGR after the emulation has crashed (in a few cases) |
| 0x01 = Don’t break the emulator | |||
| $423 | Original SLBB-00001 disc0 integrity check control | 0x00 = Don’t skip the integrity check | |
| 0x01 = Skip the integrity check | |||
| $424 | IGR exit method | 0x00 = Original SLBB-00001+PSBBN method | 0x00 causes the emulator to read the MBR by its own, without flushing the cache and without resetting the IOP. Crashy for most users. |
| 0x01 = POPStarter r13 method | |||
| $425 | IOPCD stack size (in USB operation mode) | 0x00 = Don’t patch | |
| 0x01 = Patch | |||
| $426 | Delcro’s patches (in USB operation mode) | 0x00 = Don’t apply those to POPS | |
| 0x01 = Apply those to POPS | |||
| $427 | Emulator modules loading failure | 0x00 = Don’t patch (Kick to the PS2 OSD) | For your h4×0ring needz. . Patch it so you no longer have to care about the returned code of your injected IRX. |
| 0x01 = Patch (Ignore and continue) | |||
| $428 | Internal HDD initialization failure | 0x00 = Don’t patch (Kick to the PS2 OSD) | For your h4×0ring needz. |
| 0x01 = Patch (Ignore and continue) | |||
| $429 | Virtual Memory Cards control | 0x00 = Use both VMCs | |
| 0x01 = Don’t use VMCs at all | |||
| 0x02 = Use just the first VMC in the first virtual slot | |||
| $42A | Automatic PAL patch upon European VCD recognition | 0x00 = Disabled | The Automatic PAL Patcher of POPStarter expects “Euro” at the offset $102514 of the VCD |
| 0x01 = Enabled | |||
| 0x02 = Force 480p | |||
| $42B | Resident modules loader | 0x00 = Disabled | POPS/MODULE_0.IRX POPS/MODULE_1.IRX... up to POPS/MODULE_9.IRX. Are executed AFTER the IOP gets reset with IOPRP252.IMG, for Great Justice. |
| 0x01 = Enabled | |||
| $42C | Software PowerOff fix | 0x00 = Disabled | Can’t remember what it is. Perhaps it’s a redundant option of a deimplemented function… Prolific, mass ? |
| 0x01 = Enabled | |||
| $42D | IGR textures loader | 0x00 = Disabled | POPS/IGR_BG.TM2 POPS/IGR_NO.TM2 POPS/IGR_YES.TM2 |
| 0x01 = Enabled | |||
| $42E | Game license/region check of the POPS built-in BIOS | 0x00 = Leave unpatched | The patch just NOPs the loop. The PS logo is not shown when a non-JAP game is run. |
| 0x01 = Patch it so it does not loop the check when the VCD isn’t NTSC J | |||
| $42F | POPStarter automatic compatibility mode activator | 0x00 = Do not enable anything | If set to 0x03 and a compatibility mode is forced, it will be changed to 0x02 automatically (applies the forced modes and not the automatic ones) |
| 0x01 = Enable the automatic compatibility modes activation | |||
| 0x02 = Enable the other subroutines (like LibCrypt cracks, when available) | |||
| 0x03 = Enable all |
Default values :
PPF bunch pack :
=================================================================================
-----------------------PPF Bunch pack for POPStarter r13-------------------------
=================================================================================
Hi !
I am a bunch of .PFF files. You can use me to enable POPStarter advanced settings. You need a PPF patcher (such as PPF-O-Matic) to use me and apply PPF over POPStarter.ELF.
Here is what I can do for you :
- File name : description (notes)
- NO_LC_CRACKS.PPF : Disables the built-in LC cracks of POPStarter r13 (from WIP05. Automated modes are disabled also).
- DEBUG_AND_HALT.PPF : Prints the screen debug messages and halt (from WIP05).
- NO_VMC.PPF : Disables VMC feature (new)
- ONLY_1ST_VMC.PPF : Only the first VMC in the first virtual slot is created (new)
- NO_PAL.PPF : Disables the automatic PAL patch (new)
- FORCE_MODEX.PPF : Mode X hardcoded into POPStarter r13 (new)
- DEFAULT_IGR_TEXTURES.PPF : Disables the IGR textures loader (new)
- LC_ONLY.PPF : Enable the other subroutines (like LibCrypt cracks), disable the compatibility modes. (new).
- NO_AUTO_PATCH.PPF : Disables everything (modes, LC cracks...) (new).
Recovered from ShaolinAssassin's Configuration Table wiki page.
Images & screenshots
The 32-byte config table in POPSTARTER.ELF/.KELF
POPStarter r13 stores a single contiguous 32-byte configuration table at file offset $410 (1040 dec) through $42F, one byte per setting, in both the ELF and the KELF (byte-identical tables). The verified factory default is: 00 00 00 02 40 00 03 01 | 00 00 00 00 00 00 00 00 | 01 00 01 01 01 01 01 01 | 01 00 01 01 01 01 01 03. Patch it by direct hex edit or via the PPF bunch pack (PPF-O-Matic); always back up the original 32 bytes first.
The base report's four seed offsets are adjudicated as follows. $410 = debug-text display (00 = off / 'classic', 01-FE = paced page delay, FF = realtime / old POPStarter-12 behaviour) - the base's '04 = debug print' is imprecise, since 04 is merely a short delay. $413 = USB access delay, default 0x02 (raise it if a USB drive isn't detected) - and this is the offset that fixes detection, NOT the $USBDELAY_# cheat, which patches POPS for streaming. $42A is multi-valued: 00 = PAL patcher off, 01 = auto-PAL (default), 02 = force 480p. The big correction is $412: in r13 it is the SetGsCrt/HDTVFIX hack (default 0x00), NOT a 'function skipper.' The function skipper genuinely lived at $412 in pre-Beta-13 builds and was REMOVED in Beta 13 (2015-12-07, ~10 KB saved); the freed byte was repurposed for HDTVFIX in Beta 15/16. Relatedly, the USB delay migrated: the 2015 PFS-wrapper delay was at $417 (default 0x05 then 0x00), which is marked 'NOT USED' in r13 - old guides citing 417h are obsolete.
Beyond the seeds, the full table was recovered: $411 halt-on-error, $414 RESERVED (=0x40), $415 per-VMC user ID (ASCII digit), $416 POPS dev9 loading, $418-$41F the 8-slot force-compatibility array, $420 HDD check (leave 0x01), $421 BIOS OSD shell (= mode 0x06), $422 exception breakpoints (IGR-after-crash), $423 SLBB-00001 integrity, $424 IGR exit method (gates the BOOT.ELF chain), $425 IOPCD stack, $426 Delcro's patches, $427/$428 module/HDD failure-ignore, $429 VMC count (00 both / 01 none / 02 first only), $42B MODULE_#.IRX resident loader, $42C software-poweroff fix (purpose uncertain even to the author), $42D IGR-textures loader, $42E region/license check, and $42F the auto-patch master switch (00 none / 01 auto modes / 02 LibCrypt subroutines / 03 all (default) / 04 test mode). The PPF bunch pack maps friendly patches onto these bytes: DEBUG_AND_HALT ($410+$411), NO_VMC / ONLY_1ST_VMC ($429), NO_PAL ($42A), FORCE_MODEX ($418-$41F), DEFAULT_IGR_TEXTURES ($42D), LC_ONLY / NO_AUTO_PATCH / NO_LC_CRACKS ($42F).
From the official thread — config-table & direct hex edits
Sourced from the official psx-place POPStarter thread.
krHACKen items are authoritative.
$HDTVFIXcan be applied by direct hex edit: config-table offset$412, change the value from
00to01insidePOPSTARTER.ELF. Use this when theCHEATS.TXTroute green-screens on internal HDD.
(krHACKen)- Offset
$413is the USB device access / detection-retry delay (default0x02). If one USB HDD/stick
works but another isn't detected, hex-edit$413up to0x04–0x05(higher for slow externals). This is
the byte that actually fixes USB detection — not the$USBDELAY_#cheat (which patches POPS for
streaming). (jolek / Okeanos) - POPStarter ships a built-in per-game default-config table. Example: Final Fantasy IX has
$COMPATIBILITY 0x04enabled by default (since WIP02), so it "just works" with no CHEATS.TXT. (Peppe90) - The SMB-mode startup debug overlay cannot be disabled in the 2019-06-05 build — there is no CHEATS.TXT
or config switch for it; it is cosmetic. (VanhuX)
See the full per-offset table in the Config Table section above; these thread notes pin down
$412/$413with concrete edit values.
Per-offset reference cards (cross-sourced summary)
Config table location/size primary config
$410 - debug text display primary config
$411 - break/halt on error primary config
$412 - SetGsCrt / HDTVFIX hack primary config
$413 - USB access delay primary config
$414 - RESERVED primary config
$415 - per-VMC user ID primary config
$416 - POPS dev9 module loading primary config
$417 - NOT USED (legacy PFS-wrapper USB delay) primary config
$418-$41F - force compatibility modes (8 slots) primary config
$420 - patch the genuine HDD check primary config
$421 - load/execute POPS BIOS OSD shell primary config
$422 - exception breakpoints primary config
$423 - SLBB-00001 disc0 integrity check primary config
$424 - IGR exit method primary config
$425 - IOPCD stack size patch primary config
$426 - Delcro's patches primary config
$427 - emulator-modules load-failure behavior primary config
$428 - internal-HDD init-failure behavior primary config
$429 - Virtual Memory Cards control primary config
$42A - auto-PAL patch / 480p primary config
$42B - resident modules loader primary config
$42C - software PowerOff fix primary config
$42D - IGR textures loader primary config
$42E - game license/region check primary config
$42F - automatic compatibility-mode activator (master switch) primary config
'classic 00 vs debug FF' build label near-primary config
All 1 wiki pages in this topic
Every recovered page filed under this section — including the deep-reference pages not embedded above.
