Commit Graph
22 Commits
Author SHA1 Message Date
quoije 2fed95da05 Skip cover/metadata scraping for NoPayStation themes and DLC 2026-09-07 23:53:55 -04:00
quoije c94bcdc993 Add NoPayStation themes, DLC and minis support 2026-09-07 23:34:56 -04:00
quoije 398c9f5dad Add PSP game Category Lite setting for NoPayStation installs 2026-09-07 23:00:04 -04:00
quoije 2ba24028a0 Port PSN pkg decryption to pure Python (drop Wine requirement) 2026-09-07 22:45:00 -04:00
quoije d458a9859c nps: bundle pkg2zip binary and run it via Wine
pkg2zip's prebuilt releases are Windows-only, so ship pkg2zip.exe in
data/bin/ (MIT, mmozeiko) and invoke it through Wine on Linux. find_pkg2zip
prefers the bundled binary, then a configured path, then a native pkg2zip on
PATH. Adds data/bin/ATTRIBUTION.md and README credit.
2026-09-07 22:14:14 -04:00
quoije efc8522117 nps: cache TSV lists in data/nps/ instead of the state dir
TSVs live with the other data assets; users can also drop PSP_GAMES.tsv /
PSX_GAMES.tsv there manually to browse offline.
2026-09-07 21:22:43 -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 4b6e407b3f modify readme.md 2026-09-07 20:27:25 -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 fb2a98dd21 ps1: embed real game art (ICON0 + PIC1) in converted EBOOTs
Fetch the game's cover art (libretro / ScreenScraper / IGDB / Wikipedia,
reusing the local cover cache) and bake it into the EBOOT's ICON0 (144x80
XMB icon) and PIC1 (480x272 launch background) instead of the default PS1
icon. Best-effort: falls back to the base icon/empty background when no art
is found. convert()/convert_to_folder() gain optional icon0/pic1 params.
2026-09-07 18:39:29 -04:00
quoije f61a77a31f ps1: bundle plain-ELF POPS loader + KEYS.BIN (iPoPS, MIT)
Fix 80020148 'game could not be started' on ARK-5: the base PBP's encrypted
~PSP loader fails to link on modern CFW. Use the bundled plain-ELF loader
(data/loader/DATA.PSP) as the DATA.PSP section instead, and write the 16-byte
NPDRM version key (data/loader/KEYS.BIN) alongside the EBOOT so CFW can
decrypt the STARTDAT PGD. Both assets are from iPoPS (MIT, attributed).

- load_data_psp: prefer the bundled ELF, fall back to the base ~PSP loader.
- load_keys_bin: return the bundled 16-byte key when present.
- convert: write KEYS.BIN next to the output EBOOT.
- README + data/loader/ATTRIBUTION.md: document the loader and its license.
2026-09-07 17:44:54 -04:00
quoije ea08f52d44 ps1: general STARTDAT lookup + warn on old base.pbp loader
- extract_startdat: locate STARTDAT at PSAR + p1 (the u32 at PSAR+0x0C)
  instead of popstation's p1 + 0x50000 absolute offset, which only worked
  for bases whose PSAR was aligned to 0x50000. Any PS1 classic can now be
  used as a base.
- _warn_old_base: print a warning when the base PBP is a 3.xx-era classic,
  since its POPS loader often fails to link on 6.60/6.61 CFW (error
  80020148 'game could not be started').
- README: document the 6.60/6.61 base preference and DEFLATE compression.
2026-09-07 17:36:16 -04:00
quoije 02b4adb1c1 PS1: match popstation PSAR header byte-for-byte; drop fake KEYS.BIN/DOCUMENT.DAT 2026-09-07 16:20:39 -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 777d316c0f Docs: document PS1 support, cover sources, and new env vars 2026-09-07 16:20:39 -04:00
quoije bb1b8dea66 Use Redump + No-Intro DATs together for games; dedupe fuzzy matches 2026-09-07 16:20:39 -04:00
quoije 922c01d17c Target Redump DATs/catalog instead of No-Intro 2026-09-07 16:20:39 -04:00
quoije 00f9e24c79 Update README.md
add ai badge
2026-09-07 10:18:53 -04:00
quoije edd2022550 Update README.md 2026-09-07 10:15:05 -04:00
quoije 2aab99878c add screenshot to readme 2026-09-07 09:44:14 -04:00
quoije 83627e788b Initial commit 2026-09-06 22:30:13 -04:00