From f3de3ead205deddb0dcb800d0ab69d9e59f29abc Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Sun, 29 Mar 2026 22:51:30 +0200 Subject: [PATCH] Add PV-2000 & Supracan BIOS; simplify Vita3K Add Casio PV-2000 BIOS entry (pv2000.zip) to MAME and MESS profiles and update system lists/counts. Add Funtech Super A'Can BIOS entries (supracan.zip and umc6650.zip) with ROM contents to mamemess. Simplify and condense Vita3K emulator profile (rename fields, update profiled_date, add PSVUPDAT.PUP and optional PSP2UPDAT.PUP file entries, and clarify install/partition behavior). Bump database generated_at timestamp and add a system alias mapping "psvita" -> "sony-playstation-vita" in scripts/common.py. --- database.json | 2 +- emulators/mame.yml | 15 +- emulators/mamemess.yml | 66 +++++++- emulators/vita3k.yml | 333 ++++++----------------------------------- scripts/common.py | 1 + 5 files changed, 125 insertions(+), 292 deletions(-) diff --git a/database.json b/database.json index 6034d66e..c4359eb2 100644 --- a/database.json +++ b/database.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-03-29T20:39:20Z", + "generated_at": "2026-03-29T20:48:26Z", "total_files": 7245, "total_size": 9715681216, "files": { diff --git a/emulators/mame.yml b/emulators/mame.yml index a78f1141..f16f447f 100644 --- a/emulators/mame.yml +++ b/emulators/mame.yml @@ -60,12 +60,13 @@ systems: - laser310 - casio-loopy - casio-pv1000 + - casio-pv2000 - pegasus - pcw notes: | Rolling release tracking mamedev/mame upstream (currently 0.286). - 80 BIOS root sets + 18 system ROM sets (apple2gs, astrocade, adam, advision, apfm1000, beena, camplynx, casloopy, crvision, fm7, gamate, gamecom, gamepock, gmaster, gp32, laser310, pcw, pegasus). romload.cpp + 80 BIOS root sets + 19 system ROM sets (apple2gs, astrocade, adam, advision, apfm1000, beena, camplynx, casloopy, crvision, fm7, gamate, gamecom, gamepock, gmaster, gp32, laser310, pcw, pegasus, pv2000). romload.cpp unmodified. No hiscore support. Paths under system_dir/mame/ (artwork, cheat, hash, ini, plugins, samples, crosshair). ROM search: content_dir + system_dir/mame/bios + @@ -605,6 +606,18 @@ files: size: 524288 crc32: 8f51fa17 + # Casio PV-2000 + - name: pv2000.zip + required: true + category: bios_zip + system: casio-pv2000 + source_ref: "src/mame/casio/pv2000.cpp:416-419" + contents: + - name: hn613128pc64.bin + description: "Z80 BASIC ROM" + size: 16384 + crc32: 8f31f297 + # Coleco Adam - name: adam.zip required: true diff --git a/emulators/mamemess.yml b/emulators/mamemess.yml index 3a0fe316..8c3541f8 100644 --- a/emulators/mamemess.yml +++ b/emulators/mamemess.yml @@ -29,6 +29,7 @@ systems: - fm7 - laser310 - casio-loopy + - casio-pv2000 - mz700 - mz2000 - mz2500 @@ -36,6 +37,7 @@ systems: - pc60 - mz80k - pegasus + - supracan notes: | SUBTARGET=mess build from libretro/mame. Same source, same CORE_NAME ("mame"), @@ -55,11 +57,12 @@ notes: | 1 active IS_BIOS_ROOT (miuchiz). XaviX TV game parent machines serve as console BIOS for cartridge-based software (IS_BIOS_ROOT commented out in source but functionally required). Apple II family, Apple IIgs, Bally - Astrocade, Casio Loopy, Coleco Adam, VTech CreatiVision, Entex + Astrocade, Casio Loopy, Casio PV-2000, Coleco Adam, VTech CreatiVision, Entex Adventure Vision, EACA Colour Genie, Acorn Atom, Tiger game.com, Bit Corporation Gamate, Epoch Game Pocket Computer, Hartung Game - Master, Technosys Aamber Pegasus and VTech Laser 310 system ROMs - required for software loading (not IS_BIOS_ROOT but functionally BIOS). + Master, Funtech Super A'Can, Technosys Aamber Pegasus and VTech + Laser 310 system ROMs required for software loading (not IS_BIOS_ROOT + but functionally BIOS). Apple II: 4 machine ROM sets (apple2, apple2p, apple2e, apple2ee) plus 5 peripheral device ROM sets (disk controllers, CompactFlash, speech). @@ -147,6 +150,11 @@ notes: | parents, both NOT_WORKING. Software lists: fm7_cass, fm7_disk, fm77av. Driver in fujitsu/fm7.cpp, in mess.flt. + Casio PV-2000: 1 machine (pv2000). Z80-based home computer (1983). + Single 16KB BASIC ROM (hn613128pc64.bin) mapped at 0x0000-0x3FFF. + TMS9928A VDP, SN76489A sound. Cartridge-based (8K or 16K) with software + list "pv2000". MACHINE_NOT_WORKING. Driver in casio/pv2000.cpp, in mess.flt. + Sharp MZ-80K/A: 3 machines (mz80kj parent MZ-80K Japanese, mz80k clone of mz80kj MZ-80K, mz80a separate parent MZ-80A). Z80-based home computer (1979). mz80kj parent set has monitor ROM (sp1002), floppy disk interface ROM @@ -192,6 +200,14 @@ notes: | Software lists: pc6001_cart, pc6001_cass, pc6001mk2_cass. Driver in nec/pc6001.cpp, in mess.flt. + Funtech Super A'Can: 1 machine (supracan). 68000+6502 cartridge-based + console (1995, Taiwan). 3 internal ROMs: 68k security ROM (4KB) and + two 6502 co-processor ROMs (8KB each, identified from die shot by + Furrtek). UMC 6650 lockout chip device ROM (16 bytes) in every + cartridge, loaded as separate umc6650 ROM set. MACHINE_IMPERFECT_SOUND | + MACHINE_IMPERFECT_GRAPHICS. Software list "supracan". + Driver in umc/supracan.cpp, in mess.flt. + files: # Miuchiz Virtual Companions - name: miuchiz.zip @@ -544,6 +560,18 @@ files: size: 524288 crc32: 8f51fa17 + # Casio PV-2000 + - name: pv2000.zip + required: true + category: bios_zip + system: casio-pv2000 + source_ref: "src/mame/casio/pv2000.cpp:416-419" + contents: + - name: hn613128pc64.bin + description: "Z80 BASIC ROM" + size: 16384 + crc32: 8f31f297 + # Coleco Adam - name: adam.zip required: true @@ -1533,3 +1561,35 @@ files: description: "MCM6571A character generator" size: 2048 crc32: 5a25144b + + # Funtech Super A'Can + - name: supracan.zip + required: true + category: bios_zip + system: supracan + source_ref: "src/mame/umc/supracan.cpp:2458-2467" + contents: + - name: internal_68k.bin + description: "68000 internal security ROM" + size: 4096 + crc32: 8d575662 + - name: internal_6502_1.bin + description: "6502 co-processor ROM block 1" + size: 8192 + crc32: fc9fb05f + - name: internal_6502_2.bin + description: "6502 co-processor ROM block 2" + size: 8192 + crc32: bf950ab7 + + - name: umc6650.zip + required: true + category: bios_zip + system: supracan + source_ref: "src/mame/umc/umc6650.cpp:32-36" + note: "UMC 6650 cartridge lockout chip device ROM." + contents: + - name: umc6650.bin + description: "Lockout chip ROM key" + size: 16 + crc32: 0ba78597 diff --git a/emulators/vita3k.yml b/emulators/vita3k.yml index 8e93186f..9a84beae 100644 --- a/emulators/vita3k.yml +++ b/emulators/vita3k.yml @@ -1,299 +1,58 @@ -# Vita3K emulator firmware profile -# Generated from source analysis of https://github.com/Vita3K/Vita3K -# Commit analyzed: HEAD as of 2026-03-17 - emulator: Vita3K type: standalone source: "https://github.com/Vita3K/Vita3K" -logo: "https://raw.githubusercontent.com/Vita3K/Vita3K/master/data/image/icon.png" -profiled_date: "2026-03-18" +upstream: "https://github.com/Vita3K/Vita3K" +profiled_date: "2026-03-29" core_version: "0.2.1" display_name: "Vita3K (PS Vita)" systems: [sony-playstation-vita] -firmware_file: "PSVUPDAT.PUP" -firmware_source: "https://www.playstation.com/en-us/support/hardware/psvita/system-software/" -firmware_detection: "pup_decrypt" -firmware_install: "decrypts PUP, extracts FAT/exFAT images into os0/, vs0/, sa0/, pd0/" +# Standalone emulator, no libretro core exists. +# Firmware PUP files are one-time installations: install_pup() decrypts and +# extracts partition images (os0, vs0, sa0, pd0) into the emulator data directory. +# The PUP file itself is deleted after extraction. +# Three separate PUP packages exist on Sony servers: +# 1. PSVUPDAT.PUP (main firmware) from psv.update.playstation.net +# 2. PSP2UPDAT.PUP (font package) from psp2.update.playstation.net (sd_ prefix) +# 3. PSP2UPDAT.PUP (preinst firmware) from psp2.update.playstation.net (pre_ prefix) +# Vita3K uses hybrid LLE/HLE: some modules always loaded from firmware (libc, +# libSceFt2, libpvf, libcdlg), others toggleable per-module via settings. -validation: - method: "pup_decrypt_and_extract" - source_ref: "vita3k/packages/src/pup.cpp:260-314" - note: > - PUP is decrypted using SCE keys (register_keys), then four filesystem images are - extracted: os0.img (FAT), pd0.img (exFAT), sa0.img (FAT), vs0.img (FAT). - Each image is mounted to its respective partition path. - -firmware_version: - path: "PUP_DEC/PUP/version.txt" - source_ref: "vita3k/packages/src/pup.cpp:303-309" - note: "Read from version.txt inside the decrypted PUP during installation" - -# Firmware partitions extracted from PSVUPDAT.PUP -partitions: - os0: - image: "os0.img" - filesystem: "FAT" - source_ref: "vita3k/packages/src/pup.cpp:293" - note: "Core OS partition. Contains kernel modules and low-level system components." - - vs0: - image: "vs0.img" - filesystem: "FAT" - source_ref: "vita3k/packages/src/pup.cpp:299" +files: + - name: PSVUPDAT.PUP + path: "psvita/PSVUPDAT.PUP" + required: true + hle_fallback: true note: > - Main system partition. Contains firmware modules (sys/external/*.suprx), - system apps (app/), LiveArea resources, themes, and system configuration. - directories: - sys_external: - path: "vs0/sys/external/" - source_ref: "vita3k/modules/module_parent.cpp:332" - note: > - Primary firmware module directory. Modules are loaded as .suprx files. - RPCS3-style LLE/HLE toggle: Vita3K can load real firmware modules (LLE) - or use built-in reimplementations (HLE) per module. + Main PS Vita firmware. Decrypted via SCE keys, extracts os0 (kernel), + vs0 (system modules and apps), sa0 (fonts), pd0 (system data). + Games load LLE modules from vs0/sys/external/*.suprx. Preload modules + (libc, libSceFt2, libpvf) are always LLE. Without firmware most games fail. + Some simple titles may run on HLE alone. + source_ref: "vita3k/packages/src/pup.cpp:260-314, vita3k/module/src/load_module.cpp:142-161,187" - app: - path: "vs0/app/" - note: "System applications (settings, browser, store, etc)" - - data_internal: - path: "vs0/data/internal/" - note: "Internal system data: themes, LiveArea defaults" - files: - - {path: "theme/", purpose: "Default system themes"} - - {path: "livearea/default/sce_sys/icon0.png", purpose: "Default app icon"} - - sa0: - image: "sa0.img" - filesystem: "FAT" - source_ref: "vita3k/packages/src/pup.cpp:297" - note: "System assets partition. Contains firmware fonts (PVF files)." - directories: - fonts: - path: "sa0/data/font/pvf/" - source_ref: "vita3k/gui/src/gui.cpp:228-267" - note: > - PS Vita system fonts in PVF format (PlayStation Vita Font). Used for - system UI, LiveArea, and games that use the sceFt2/libpvf font API. - Without these, Vita3K falls back to bundled open-source fonts. - files: - - {name: "ltn0.pvf", type: "Latin Regular", required: true, note: "Primary UI font, checked at startup"} - - {name: "jpn0.pvf", type: "Japanese", required: false} - - {name: "kr0.pvf", type: "Korean", required: false} - - {name: "cn0.pvf", type: "Chinese Simplified", required: false} - - pd0: - image: "pd0.img" - filesystem: "exFAT" - source_ref: "vita3k/packages/src/pup.cpp:295" - note: "System data partition. Contains system BGM and other data." - files: - - {path: "data/systembgm/initialsetup.at9", purpose: "Initial setup background music"} - -# Firmware modules (vs0/sys/external/*.suprx) -firmware_modules: - # Auto-LLE modules (loaded from firmware by default) - auto_lle: - source_ref: "vita3k/module/src/load_module.cpp:142-161" - note: "These modules are automatically loaded via LLE when firmware is present" - modules: - - {id: "SCE_SYSMODULE_HTTP", libs: ["libhttp"]} - - {id: "SCE_SYSMODULE_SSL", libs: ["libssl"]} - - {id: "SCE_SYSMODULE_HTTPS", libs: ["libhttp", "libssl"]} - - {id: "SCE_SYSMODULE_ULT", libs: ["libult"]} - - {id: "SCE_SYSMODULE_SAS", libs: ["libsas"]} - - {id: "SCE_SYSMODULE_PGF", libs: ["libpgf"]} - - {id: "SCE_SYSMODULE_FIOS2", libs: ["libfios2"]} - - {id: "SCE_SYSMODULE_SYSTEM_GESTURE", libs: ["libsystemgesture"]} - - {id: "SCE_SYSMODULE_XML", libs: ["libSceXml"]} - - {id: "SCE_SYSMODULE_SQLITE", libs: ["libSceSqlite"]} - - {id: "SCE_SYSMODULE_RUDP", libs: ["librudp"]} - - {id: "SCE_SYSMODULE_NET_ADHOC_MATCHING", libs: ["adhoc_matching"]} - - {id: "SCE_SYSMODULE_MP4", libs: ["libscemp4"]} - - {id: "SCE_SYSMODULE_ATRAC", libs: ["libatrac"]} - - {id: "SCE_SYSMODULE_FACE", libs: ["libface"]} - - {id: "SCE_SYSMODULE_SMART", libs: ["libsmart"]} - - {id: "SCE_SYSMODULE_AVPLAYER", libs: ["libsceavplayer", "libscemp4"]} - - {id: "SCE_SYSMODULE_JSON", libs: ["libSceJson"]} - - # Always-LLE preload modules - preload: - source_ref: "vita3k/interface.cpp:497-504, vita3k/module/src/load_module.cpp:187" - note: "These modules are always loaded from firmware (LLE), never HLE" - modules: - - {name: "libc", note: "C standard library"} - - {name: "libSceFt2", note: "FreeType2 font engine"} - - {name: "libpvf", note: "PlayStation Vita Font library"} - - {name: "libcdlg", note: "Common dialog library"} - - # All registered sysmodule mappings - sysmodule_map: - source_ref: "vita3k/module/src/load_module.cpp:25-109" - note: "Complete mapping of SCE_SYSMODULE IDs to firmware library filenames" - modules: - # Networking - - {id: "SCE_SYSMODULE_NET", libs: ["libnet", "libnetctl"]} - - {id: "SCE_SYSMODULE_HTTP", libs: ["libhttp"]} - - {id: "SCE_SYSMODULE_SSL", libs: ["libssl"]} - - {id: "SCE_SYSMODULE_HTTPS", libs: ["libhttp", "libssl"]} - # Performance / Threading - - {id: "SCE_SYSMODULE_PERF", libs: ["libperf"]} - - {id: "SCE_SYSMODULE_FIBER", libs: ["libfiber"]} - - {id: "SCE_SYSMODULE_ULT", libs: ["libult"]} - # Debug - - {id: "SCE_SYSMODULE_DBG", libs: ["librazorcapture_es4", "librazorhud_es4"]} - - {id: "SCE_SYSMODULE_RAZOR_CAPTURE", libs: ["librazorcapture_es4"]} - - {id: "SCE_SYSMODULE_RAZOR_HUD", libs: ["librazorhud_es4"]} - # Audio - - {id: "SCE_SYSMODULE_NGS", libs: ["libngs"]} - - {id: "SCE_SYSMODULE_SULPHA", libs: ["libsulpha"]} - - {id: "SCE_SYSMODULE_SAS", libs: ["libsas"]} - - {id: "SCE_SYSMODULE_AUDIOCODEC", libs: ["libaudiocodec"]} - - {id: "SCE_SYSMODULE_AACENC", libs: ["libnaac"]} - - {id: "SCE_SYSMODULE_ATRAC", libs: ["libatrac"]} - - {id: "SCE_SYSMODULE_VOICE", libs: ["libvoice"]} - - {id: "SCE_SYSMODULE_VOICEQOS", libs: ["libvoiceqos"]} - # Font / Text - - {id: "SCE_SYSMODULE_PGF", libs: ["libpgf"]} - - {id: "SCE_SYSMODULE_IME", libs: ["libime"]} - - {id: "SCE_SYSMODULE_HANDWRITING", libs: ["libhandwriting"]} - # System - - {id: "SCE_SYSMODULE_APPUTIL", libs: ["apputil"]} - - {id: "SCE_SYSMODULE_FIOS2", libs: ["libfios2"]} - - {id: "SCE_SYSMODULE_SYSTEM_GESTURE", libs: ["libsystemgesture"]} - - {id: "SCE_SYSMODULE_LOCATION", libs: ["liblocation"]} - - {id: "SCE_SYSMODULE_CLIPBOARD", libs: ["libclipboard"]} - - {id: "SCE_SYSMODULE_TRIGGER_UTIL", libs: ["trigger_util"]} - - {id: "SCE_SYSMODULE_LIVEAREA", libs: ["livearea_util"]} - - {id: "SCE_SYSMODULE_BG_APP_UTIL", libs: ["bgapputil"]} - - {id: "SCE_SYSMODULE_INCOMING_DIALOG", libs: ["incoming_dialog"]} - - {id: "SCE_SYSMODULE_IPMI", libs: ["libipmi_nongame"]} - - {id: "SCE_SYSMODULE_NOTIFICATION_UTIL", libs: ["notification_util"]} - - {id: "SCE_SYSMODULE_SHUTTER_SOUND", libs: ["libSceShutterSound"]} - - {id: "SCE_SYSMODULE_SCREEN_SHOT", libs: ["libSceScreenShot"]} - # PlayStation Network - - {id: "SCE_SYSMODULE_NP_BASIC", libs: ["np_basic"]} - - {id: "SCE_SYSMODULE_NP", libs: ["np_common", "np_manager", "np_basic"]} - - {id: "SCE_SYSMODULE_NP_COMMERCE2", libs: ["np_commerce2"]} - - {id: "SCE_SYSMODULE_NP_UTILITY", libs: ["np_utility"]} - - {id: "SCE_SYSMODULE_NP_MATCHING2", libs: ["np_matching2"]} - - {id: "SCE_SYSMODULE_NP_SCORE_RANKING", libs: ["np_ranking"]} - - {id: "SCE_SYSMODULE_NP_ACTIVITY", libs: ["np_activity_sdk"]} - - {id: "SCE_SYSMODULE_NP_TROPHY", libs: ["np_trophy"]} - - {id: "SCE_SYSMODULE_NP_MESSAGE", libs: ["np_message_padding", "np_message"]} - - {id: "SCE_SYSMODULE_NP_PARTY", libs: ["np_party"]} - - {id: "SCE_SYSMODULE_NP_TUS", libs: ["np_tus"]} - - {id: "SCE_SYSMODULE_NP_SNS_FACEBOOK", libs: ["np_sns_facebook"]} - - {id: "SCE_SYSMODULE_NP_SIGNALING", libs: ["np_signaling"]} - - {id: "SCE_SYSMODULE_NP_WEBAPI", libs: ["np_webapi"]} - # Media - - {id: "SCE_SYSMODULE_MP4", libs: ["libscemp4"]} - - {id: "SCE_SYSMODULE_AVPLAYER", libs: ["libsceavplayer", "libscemp4"]} - - {id: "SCE_SYSMODULE_AVCDEC", libs: ["avcdec_for_player"]} - - {id: "SCE_SYSMODULE_MP4_RECORDER", libs: ["libSceMp4Rec"]} - - {id: "SCE_SYSMODULE_PHOTO_EXPORT", libs: ["libScePhotoExport"]} - - {id: "SCE_SYSMODULE_VIDEO_EXPORT", libs: ["libSceVideoExport"]} - - {id: "SCE_SYSMODULE_MUSIC_EXPORT", libs: ["libSceMusicExport"]} - # Other - - {id: "SCE_SYSMODULE_XML", libs: ["libSceXml"]} - - {id: "SCE_SYSMODULE_JSON", libs: ["libSceJson"]} - - {id: "SCE_SYSMODULE_SQLITE", libs: ["libSceSqlite"]} - - {id: "SCE_SYSMODULE_RUDP", libs: ["librudp"]} - - {id: "SCE_SYSMODULE_NET_ADHOC_MATCHING", libs: ["adhoc_matching"]} - - {id: "SCE_SYSMODULE_PSPNET_ADHOC", libs: ["pspnet_adhoc"]} - - {id: "SCE_SYSMODULE_FACE", libs: ["libface"]} - - {id: "SCE_SYSMODULE_SMART", libs: ["libsmart"]} - - {id: "SCE_SYSMODULE_MARLIN", libs: ["libmln"]} - - {id: "SCE_SYSMODULE_MARLIN_DOWNLOADER", libs: ["libmlndownloader"]} - - {id: "SCE_SYSMODULE_MARLIN_APP_LIB", libs: ["libmlnapplib"]} - - {id: "SCE_SYSMODULE_TELEPHONY_UTIL", libs: ["libSceTelephonyUtil"]} - - {id: "SCE_SYSMODULE_DTCP_IP", libs: ["libSceDtcpIp"]} - - {id: "SCE_SYSMODULE_VIDEO_SEARCH_EMPR", libs: ["libSceVideoSearchEmpr"]} - - {id: "SCE_SYSMODULE_BEISOBMF", libs: ["libSceBeisobmf"]} - - {id: "SCE_SYSMODULE_BEMP2SYS", libs: ["libSceBemp2sys"]} - - {id: "SCE_SYSMODULE_NEAR_UTIL", libs: ["libScenNearUtil"]} - - {id: "SCE_SYSMODULE_NEAR_DIALOG_UTIL", libs: ["libSceNearDialogUtil"]} - - {id: "SCE_SYSMODULE_LOCATION_EXTENSION", libs: ["liblocation_extension"]} - - {id: "SCE_SYSMODULE_MAIL_API", libs: ["mail_api_for_local_libc"]} - - {id: "SCE_SYSMODULE_TELEPORT_CLIENT", libs: ["libSceTeleportClient"]} - - {id: "SCE_SYSMODULE_TELEPORT_SERVER", libs: ["libSceTeleportServer"]} - - {id: "SCE_SYSMODULE_APPUTIL_EXT", libs: ["apputil_ext"]} - - {id: "SCE_SYSMODULE_CODECENGINE_PERF", libs: ["libcodecengine_perf"]} - - # Internal sysmodule mappings - internal_modules: - source_ref: "vita3k/module/src/load_module.cpp:114-136" - modules: - - {id: "SCE_SYSMODULE_INTERNAL_JPEG_ENC_ARM", libs: ["libscejpegencarm"]} - - {id: "SCE_SYSMODULE_INTERNAL_AUDIOCODEC", libs: ["audiocodec"]} - - {id: "SCE_SYSMODULE_INTERNAL_BXCE", libs: ["bXCe"]} - - {id: "SCE_SYSMODULE_INTERNAL_INI_FILE_PROCESSOR", libs: ["ini_file_processor"]} - - {id: "SCE_SYSMODULE_INTERNAL_NP_ACTIVITY_NET", libs: ["np_activity"]} - - {id: "SCE_SYSMODULE_INTERNAL_PAF", libs: ["libpaf"]} - - {id: "SCE_SYSMODULE_INTERNAL_SQLITE_VSH", libs: ["sqlite"]} - - {id: "SCE_SYSMODULE_INTERNAL_DBUTIL", libs: ["dbutil"]} - - {id: "SCE_SYSMODULE_INTERNAL_ACTIVITY_DB", libs: ["activity_db"]} - - {id: "SCE_SYSMODULE_INTERNAL_COMMON_GUI_DIALOG", libs: ["common_gui_dialog"]} - - {id: "SCE_SYSMODULE_INTERNAL_MSG_DIALOG", libs: ["libcdlg_msg"]} - - {id: "SCE_SYSMODULE_INTERNAL_SAVEDATA_DIALOG", libs: ["libcdlg_savedata"]} - - {id: "SCE_SYSMODULE_INTERNAL_IME_DIALOG", libs: ["libcdlg_ime"]} - - {id: "SCE_SYSMODULE_INTERNAL_COMMON_DIALOG_MAIN", libs: ["libcdlg_main"]} - - {id: "SCE_SYSMODULE_INTERNAL_DB_RECOVERY_UTILITY", libs: ["dbrecovery_utility"]} - - {id: "SCE_SYSMODULE_INTERNAL_DRM_PSM_KDC", libs: ["psmkdc"]} - - {id: "SCE_SYSMODULE_INTERNAL_LOCATION_INTERNAL", libs: ["liblocation_internal"]} - -# IO device layout (full Vita filesystem) -io_devices: - source_ref: "vita3k/io/include/io/VitaIoDevice.h:22-50" - firmware_partitions: - - {device: "os0", purpose: "Core OS kernel modules"} - - {device: "vs0", purpose: "System firmware modules and apps"} - - {device: "sa0", purpose: "System assets (fonts)"} - - {device: "pd0", purpose: "System data (BGM, resources)"} - user_partitions: - - {device: "ux0", purpose: "Main storage (memory card)"} - - {device: "ur0", purpose: "Internal user storage"} - - {device: "uma0", purpose: "USB mass storage (PSTV)"} - - {device: "imc0", purpose: "Internal memory card (Slim)"} - - {device: "grw0", purpose: "Game card (writable area)"} - - {device: "gro0", purpose: "Game card (read-only area)"} - app_partitions: - - {device: "app0", purpose: "Current running application"} - - {device: "addcont0", purpose: "Additional content (DLC)"} - - {device: "savedata0", purpose: "Save data (slot 0)"} - - {device: "savedata1", purpose: "Save data (slot 1)"} - -# Fallback fonts when firmware is not installed -fallback_fonts: - source_ref: "vita3k/gui/src/gui.cpp:276-318" - path: "data/fonts/" - files: - - {name: "mplus-1mn-bold.ttf", purpose: "Primary fallback monospaced font"} - - {name: "SourceHanSansSC-Bold-Min.ttf", purpose: "Chinese fallback font"} - - {name: "neodgm.ttf", purpose: "Korean fallback font"} - note: "Open-source fonts bundled with Vita3K, used when firmware fonts (sa0) are not installed" + - name: PSP2UPDAT.PUP + path: "psvita/PSP2UPDAT.PUP" + required: false + hle_fallback: true + note: > + Supplementary firmware font package. Populates sa0 partition with system + fonts (PVF format) used by UI, LiveArea, and games via sceFt2/libpvf API. + Vita3K bundles open-source fallback fonts (mplus-1mn-bold.ttf, + SourceHanSansSC-Bold-Min.ttf, neodgm.ttf) when firmware fonts are missing. + source_ref: "vita3k/gui/src/gui.cpp:228-267,276-318, vita3k/gui/src/initial_setup.cpp:96-97" notes: | - Vita3K requires the official PS Vita firmware (PSVUPDAT.PUP) from Sony for full - compatibility. The firmware is decrypted using SCE keys and extracted into four - partition images: os0 (kernel), vs0 (system), sa0 (assets), pd0 (data). - - The most important firmware components are: - 1. vs0/sys/external/*.suprx - Firmware modules loaded by games - 2. sa0/data/font/pvf/*.pvf - System fonts (ltn0.pvf is checked at startup) - 3. vs0/data/internal/ - LiveArea resources and default themes - - Vita3K uses a hybrid LLE/HLE approach: - - Some modules (libc, libSceFt2, libpvf, libcdlg) are always loaded from firmware (LLE) - - Others can be toggled between LLE and HLE per module via settings - - Without firmware, many games will fail to load required modules - - The module loading path is: first check app0:sce_module/{name}.suprx (game-bundled), - then fall back to vs0:sys/external/{name}.suprx (firmware). This allows games to - ship their own module versions. - - CLI firmware install: vita3k --firmware /path/to/PSVUPDAT.PUP - GUI: File > Install Firmware - - Vita3K does not have a libretro core. It is standalone only. + Standalone PS Vita emulator. No libretro core. + Firmware installed via File > Install Firmware or CLI --firmware flag. + PUP files validated by SCEUF magic header only (pup.cpp:119), no hash check. + After install, four partitions are extracted: + os0 (FAT, kernel modules), vs0 (FAT, system modules/apps), + sa0 (FAT, fonts), pd0 (exFAT, system data/BGM). + Module loading: app0:sce_module/{name}.suprx (game-bundled) then + vs0:sys/external/{name}.suprx (firmware). Auto-LLE modules include + libhttp, libssl, libult, libsas, libpgf, libfios2, libsystemgesture, + libSceXml, libSceSqlite, librudp, libatrac, libface, libsmart, + libsceavplayer, libSceJson, and more (load_module.cpp:142-161). + A third optional preinst firmware PUP (pd0 partition: system BGM, resources) + is available from Sony but not commonly required for game compatibility. diff --git a/scripts/common.py b/scripts/common.py index 2e41b2d2..47a7e1fb 100644 --- a/scripts/common.py +++ b/scripts/common.py @@ -738,6 +738,7 @@ SYSTEM_ALIASES: dict[str, str] = { "gmaster": "hartung-game-master", "n64dd": "nintendo-64dd", "neogeo64": "hyper-neogeo64", + "psvita": "sony-playstation-vita", # Platform IDs missing the manufacturer-prefix hyphen "atari5200": "atari-5200", "atari7800": "atari-7800",