Files
libretro/emulators/pokketstation.yml
T
Abdessamad Derraz 4231902a6c docs: write prose without dashes or semicolons
Profiles, the wiki, comments, docstrings, command output and schema descriptions carried em-dashes, clause-joining semicolons, unicode arrows, box-drawing banners and check-mark glyphs. Each sentence was rewritten rather than having its character swapped. Hashes, paths, source_ref values and every cited file:line are unchanged, which a comparison of each parsed profile against the previous revision confirms.

validate_pr comments now say PASS and FAIL in words, and source_ref values in a profile's structured blocks render as code. test_prose_style fails if any of these comes back, in tracked files or in the generated site.
2026-10-19 06:47:31 +02:00

68 lines
3.7 KiB
YAML

emulator: pokketstation
type: libretro
core_classification: official_port
source: "https://github.com/mentalfoundry/Pokket"
upstream: "https://github.com/mentalfoundry/Pokket"
profiled_date: "2026-10-17"
source_commit: "de736cee392567d58e842f96afe77f707e694ce5"
core_version: "v1.23"
display_name: "Sony - PocketStation (pokketstation)"
cores: ["pokketstation", "pokket"]
systems: [sony-pocketstation]
notes: |
PocketStation emulator with a portable C core (core/) shared by the libretro
core, an SDL2 and Win32 desktop application built on Windows only
(frontends/desktop/CMakeLists.txt:1-16), a PS Vita port and an Emscripten build.
The libretro target is pokket_libretro (frontends/libretro/CMakeLists.txt:10-16).
Both the libretro core and the desktop application report POKKET_VERSION,
v1.23 from the project() line of the root CMakeLists.txt (CMakeLists.txt:4-5,
frontends/libretro/libretro.c:189-196).
read_bios opens <system>/pocketstation.bin, reads 16384 bytes and fails when
fewer are read, while a longer file is accepted and truncated
(frontends/libretro/libretro.c:545-559). psemu_load_bios copies the image and
rejects any size other than PSEMU_BIOS_SIZE (core/src/psemu.c:92-99).
retro_load_game returns false when read_bios fails, and psemu_run executes
nothing while no BIOS is loaded: there is no HLE and no embedded copy
(frontends/libretro/libretro.c:586-595, core/src/psemu.c:808-812). The IR
Link subsystem runs two units in one core and loads the same file into both
(frontends/libretro/libretro.c:652-693).
Content (.mcr, .mcs, .pss, .mcd, .bin, .gme) is identified by its bytes,
not by the extension: a 128 KB image is a full card, a file opening with
123-456-STD followed by a whole number of 8 KB blocks up to a full card
is a DexDrive dump whose 3904-byte header is skipped, anything else is tried
as a single save then as a Title Sector body (core/src/psemu.c:113-140,
211-234, 326-347). Save RAM is the full 128 KB flash image.
psemu_settings_offsets_known hashes the loaded image with FNV-1a and compares
it with 0xB2E46838, the retail 110 revision the project traced, and a match
enables the date, time and volume override writes into kernel RAM
(core/src/psemu.c:1150-1175). Any 16 KB image boots. Two mask ROM revisions
are documented: 061, from prototype hardware, and 110, the retail one. The
ASCII tags at offsets 0x1DFC (C061 or C110) and 0x3FFC (J061 or J110)
identify them. SWI 0Fh FlashWriteSerial works on 061 and locks the CPU on
110 (docs/hardware-notes.md:1046-1056).
The desktop application takes the BIOS path from the command line, then
from the bios= key of settings.cfg beside the executable, then falls back
to bios.bin beside the executable. File > Load BIOS opens any path and
writes it to settings.cfg (frontends/desktop/main.c:653-700, 1216-1254,
3016-3020, 3071-3091). The Vita frontend loads no BIOS yet
(frontends/vita/main.c:31-33), and the Emscripten build leaves the BIOS to
the hosting page (frontends/web/README.md:35).
files:
- name: "pocketstation.bin"
description: "PocketStation BIOS ROM, kernel and GUI, 16 KB"
size: 16384
required: true
validation: [size]
standalone_path: "bios.bin"
source_ref: "frontends/libretro/libretro.c:545-559, frontends/libretro/libretro.c:586-595, core/src/psemu.c:92-99, core/src/psemu.c:808-812, core/src/psemu.c:1150-1175, core/include/psemu/psemu.h:19"
note: >
Read from the frontend system directory. The desktop application reads
the whole file and psemu_load_bios rejects any size other than 16384,
while the libretro core reads the first 16384 bytes. FNV-1a 0xB2E46838
identifies the retail 110 revision for the settings overrides only.