Commit Graph
19 Commits
Author SHA1 Message Date
quoije d02152ca06 fix NoPayStation PSP parsing + detail-panel UnboundLocalError
- PSP_GAMES.tsv and PSX_GAMES.tsv use different headers (PSP adds Type/RAP
  columns, PSX adds Original Name). Parse the header row and map columns by
  name instead of hardcoding positions — PSP names were showing as 'Minis'/
  'PC Engine' (the Type column) with broken download URLs.
- GameDetailsPanel.set_item referenced is_ps1 before it was assigned, raising
  UnboundLocalError and leaving the detail panel stale.
2026-09-07 21:32:50 -04:00
quoije 53f671d09a store: add NoPayStation source (PSP + PS1 Classics .pkg)
New 'NoPayStation' option in the Store tab lists PSP_GAMES.tsv and
PSX_GAMES.tsv, downloads each item's encrypted .pkg and decrypts/extracts
it with pkg2zip into a configurable output dir (<dir>/PSP/<TITLE_ID>/ and
<dir>/PSX/<TITLE_ID>/). Downloaded PSP games and PS1 Classics appear in the
Library (games/eboot and ps1/eboot respectively) and copy to the PSP as
PSP/GAME folders.

- app/nopaystation.py: TSV fetch/parse (cached) + pkg2zip discovery/extract.
- app/transfers.py: NoPayStationSource (scan + download).
- Settings: NPS output dir + pkg2zip path (QSettings nps_dir/pkg2zip_path).
- StorePage: NPS source + content-type combo (PSP Games / PS1 Classics),
  per-item cover system, TSV release dates, nps-download job kind.
- Library: _nps_library_items ingest, on-PSP detection, folder copy/delete,
  PPSSPP play disabled for encrypted PSP EBOOTs.
- README: document the source, pkg2zip + npdrm_free requirements.
2026-09-07 21:18:55 -04:00
quoije 196e3ac82f gui: show the source filename in Library and Store details
Add a muted, selectable filename line under the title in both details
panels, with the full path as its tooltip (archive name in the Store,
disc/ISO filename in the Library).
2026-09-07 20:05:31 -04:00
quoije 2c6b07e286 psp: detect installed PS1 games (incl. Category Lite folders)
PS1 EBOOTs install as PSP/GAME/{category}/{GAME_ID}/EBOOT.PBP, which the
PSP index ignored (it only indexed ISO games/videos), so the app never
marked them 'on PSP'. Index homebrew EBOOTs by folder id + embedded title,
match PS1 library items against them, and make 'Delete from PSP' remove the
whole game folder.
2026-09-07 19:59:30 -04:00
quoije c0c0f841d6 gui: label PS1 games as 'PS1' in the PSP sync table
The sync table reused a games/videos check, so PS1 entries showed as
'Video'. Use the same system->label map as the library table.
2026-09-07 19:39:14 -04:00
quoije f6dccbec24 ps1: official-style ICON0/PIC0/PIC1 artwork with PSN templates
Replaces the letterboxed 144x80 icon + cropped PIC1 with official-looking
PS1 Classics art:
- ICON0 (80x80): cover art composited into the bundled case frame (PS logo
  + 'PlayStation.' wordmark) from data/ps1_templates/ICON0.PNG.
- PIC0 (310x180): a PSN-style info board drawn in code — title, IGDB
  description, ESRB badge (from IGDB age_ratings) and PS3/PSP badges.
- PIC1 (480x272): the bundled launch background template.

The converter now embeds PIC0, the PS1 tab previews all three images, and
ps1_art pulls IGDB description/ESRB as best effort. Templates are git-ignored
(user-supplied, like base.PBP) with a drawn-art fallback when missing.
2026-09-07 19:23:38 -04:00
quoije 2433240628 ps1: show only pending discs in the PS1 tab
Converted games already appear in the Library tab, so the PS1 tab now
lists only raw discs that still need converting. Auto-selects the first
pending disc so the preview loads immediately.
2026-09-07 18:45:55 -04:00
quoije c1fcf6176d ps1: preview EBOOT icon/background in the PS1 tab before converting
Selecting a pending disc in the PS1 tab now shows a live preview of the
ICON0 (144x80 XMB icon) and PIC1 (480x272 launch background) that the
converter would embed, fetched asynchronously so the UI stays responsive.
Converted discs/EBOOTs show an 'already converted' notice, and ps1_art now
falls back to a name-derived cache key when a disc has no serial.
2026-09-07 18:42:46 -04:00
quoije f9d9d639ed queue: add job Type column (Download/Copy to PSP/PS1 convert/etc.)
Add a 'Type' column to the Queue table mapping each job kind to a friendly
label, so downloads, copies, PS1 conversions, UMD dumps and save syncs are
distinguishable at a glance.
2026-09-07 18:27:43 -04:00
quoije e179bf2f2e library: refresh scraped cover in grid even when items were rebuilt
refresh_item matched the grid row by object identity, which silently fails
when the library list was rebuilt (background scan/store refresh) while the
scrape dialog was open. Match by release_id + system as a fallback, like
update_item_label already does, so the cover tile updates without a Reload.
2026-09-07 18:16:20 -04:00
quoije 02ed99c9c7 library: only show converted PS1 EBOOTs
Pending PS1 source discs stay in the PS1 tab; the Library now lists only
converted EBOOT entries.
2026-09-07 18:07:08 -04:00
quoije bcc2f4f73c gui: switch to Queue tab on PS1 convert; PS1 Category Lite folder
- _on_ps1_convert now opens the Queue tab so the user sees the conversion
  job start when converting from the Library or PS1 tab.
- Add a 'PS1 category (Category Lite)' setting (ps1_category) alongside the
  existing ISO category; PS1 EBOOTs copy to /PSP/GAME/<category>/<ID>/
  when set, matching the ISO category behaviour.
2026-09-07 18:05:53 -04:00
quoije a9c371c221 PS1: output PSN-style game folders (EBOOT.PBP + KEYS.BIN + DOCUMENT.DAT) 2026-09-07 16:20:39 -04:00
quoije 4d5c48cb94 Add PS1 games to the Library with covers, metadata, and EBOOT actions 2026-09-07 16:20:39 -04:00
quoije 625e2f8718 UMD videos: add Wikipedia + Google image cover sources to scrape 2026-09-07 16:20:39 -04:00
quoije 27e482d344 Library: refresh details cover box after a scrape 2026-09-07 16:20:39 -04:00
quoije 5d619e5f59 Scrape: include libretro + OpenVGDB covers alongside IGDB 2026-09-07 16:20:39 -04:00
quoije 743d5e8e90 Phase 2: PS1 library scan, settings, conversion queue, and PS1 tab 2026-09-07 16:20:39 -04:00
quoije 83627e788b Initial commit 2026-09-06 22:30:13 -04:00