mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-09 19:43:53 -06:00
feat: profile nuance, pcee2 and pokketstation
This commit is contained in:
1 parent
df7346b3e0
commit
3c85f51314
19 files changed
+1331
No files matched your search
@@ -0,0 +1,173 @@
|
||||
emulator: Nuance
|
||||
type: libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/WizzardSK/nuance-libretro"
|
||||
upstream: "https://github.com/andkrau/NuanceResurrection"
|
||||
profiled_date: "2026-09-03"
|
||||
source_commit: "700d28553f3a06b16385ed9e48f194377e131b03"
|
||||
upstream_commit: "700d28553f3a06b16385ed9e48f194377e131b03"
|
||||
core_version: "0.6.7"
|
||||
display_name: "VM Labs - NUON (Nuance)"
|
||||
cores: [nuance]
|
||||
systems: [vm-labs-nuon]
|
||||
|
||||
notes: |
|
||||
NUON emulator written by Mike Perry (2002-2007) and continued as
|
||||
NuanceResurrection by Carsten Waechter from the source archive released
|
||||
after the author's death. The Linux and libretro ports were merged into the
|
||||
upstream tree in 2026 (pull request 75), so the port and the upstream share
|
||||
the same revision.
|
||||
|
||||
The three BIOS files are not firmware dumps. bios.cof, minibios.cof and
|
||||
minibiosX.cof are Aries assembly implementations of BIOS routines,
|
||||
assembled from bios.s, minibios.s and minibiosX.s in the source tree; every
|
||||
other BIOS call is handled in C++ through BiosJumpTable (src/bios.cpp:395-547).
|
||||
The entries left to the assembly code are the comm bus calls, TimeToSleep,
|
||||
MPEWait and BiosGetInfo.
|
||||
|
||||
retro_load_game looks for <system>/nuance/bios.cof and changes the working
|
||||
directory to <system>/nuance when it exists, else to the directory of the
|
||||
core library when bios.cof sits beside it (src/libretro.cpp:313-352). Every
|
||||
data file is then opened by bare name from the working directory. InitBios
|
||||
loads bios.cof into MPE3 and MediaInitMPE loads minibios.cof into MPE0
|
||||
(minibiosX.cof on MPEs 1 to 3). A failed load prints "Missing File!" and
|
||||
emulation continues without the routines. LoadCoffFile checks the COFF magic
|
||||
0x0120 and copies the sections to their physical addresses; no size or hash
|
||||
is checked (src/coff.cpp:47-176).
|
||||
|
||||
Two builds of bios.cof exist. The source tree carries the NuanceExperimental
|
||||
build (23938 bytes, 12 sections, with commrecv_vars and commrecv_queues);
|
||||
the 0.6.6 and 0.6.7 release archives ship the 2007 build (19410 bytes, 10
|
||||
sections). Both carry the same biosvars, haltab, biosinfo, halstub,
|
||||
biosdata, halts and controllerdata sections and the C++ side references
|
||||
neither extra section.
|
||||
|
||||
nuance.cfg is read from the working directory, then from the directory of
|
||||
the running executable (src/NuonEnvironment.cpp:533-549); without it the
|
||||
values set in NuonEnvironment::Init apply. The GLSL shaders are opened from
|
||||
the working directory and fall back to the copies compiled into the binary
|
||||
(src/ShaderProgram.cpp:85-135, src/embedded_shaders.h). FlashEEPROM.bin is
|
||||
read by the FlashEEPROM constructor and written by the destructor, both
|
||||
relative to the process working directory at load and unload of the core
|
||||
(src/FlashEEPROM.h:36-51). Game data (nuon.run, nuon.dat) is read from the
|
||||
loaded disc image or directory; no other fixed file is opened.
|
||||
|
||||
files:
|
||||
- name: "bios.cof"
|
||||
path: "nuance/bios.cof"
|
||||
description: "BIOS routines for MPE3, Aries COFF assembled from bios.s"
|
||||
size: 23938
|
||||
sha1: "515a3d9a9e43b7902d161ba27bf67aecee922e41"
|
||||
md5: "23bf80c259f182f582beeb368aba98f5"
|
||||
required: true
|
||||
bundled: true
|
||||
source_ref: "src/libretro.cpp:313-352, src/NuonEnvironment.cpp:581, src/NuonEnvironment.cpp:603-605, src/bios.cpp:566-582, src/coff.cpp:47-70"
|
||||
note: >
|
||||
Loaded into MPE3 by InitBios. The 2007 build shipped in the release
|
||||
archives (19410 bytes, sha1 4f42ed8f5e171cc79112d1c1e201381e83b1fc0d)
|
||||
loads the same way.
|
||||
|
||||
- name: "minibios.cof"
|
||||
path: "nuance/minibios.cof"
|
||||
description: "Media MPE minibios for MPE0, assembled from minibios.s"
|
||||
size: 7873
|
||||
sha1: "5265dbc871ada59dbd384104c578d807438af4c7"
|
||||
md5: "1abc7f6265b82742154be881cff2cd3f"
|
||||
required: true
|
||||
bundled: true
|
||||
source_ref: "src/media.cpp:243-321, src/bios.cpp:661, src/Bios.h:29-33"
|
||||
note: >
|
||||
Loaded by MediaInitMPE when the media MPE is MPE0, which InitBios does at
|
||||
every BIOS initialisation. Entry point and interrupt vectors come from
|
||||
the fixed addresses in Bios.h.
|
||||
|
||||
- name: "minibiosX.cof"
|
||||
path: "nuance/minibiosX.cof"
|
||||
description: "Media MPE minibios for MPEs 1 to 3, addresses shifted down by 4 KB"
|
||||
size: 7873
|
||||
sha1: "e45a96ce18486573c4d30efbc01658ce1ff8cd55"
|
||||
md5: "ceb37f4e78c1f396b49bb6372c83fd7c"
|
||||
required: true
|
||||
bundled: true
|
||||
source_ref: "src/media.cpp:277-296, src/Bios.h:35-38"
|
||||
note: >
|
||||
Loaded by MediaInitMPE when a program installs the minibios on an MPE
|
||||
other than MPE0.
|
||||
|
||||
- name: "nuance.cfg"
|
||||
path: "nuance/nuance.cfg"
|
||||
description: "Emulator configuration (compiler options, audio interrupts, controller mappings)"
|
||||
size: 3369
|
||||
sha1: "dfbac2a22f17cf82c7cd40f3727eecf31b013d15"
|
||||
md5: "20becfdb932042f8ab47c098e92a12ed"
|
||||
required: false
|
||||
bundled: true
|
||||
source_ref: "src/NuonEnvironment.cpp:533-549, src/NuonEnvironment.cpp:917-1056"
|
||||
note: >
|
||||
Read from the working directory, then beside the running executable.
|
||||
Absent file leaves the defaults of NuonEnvironment::Init in place.
|
||||
|
||||
- name: "video_generic.vs"
|
||||
path: "nuance/video_generic.vs"
|
||||
description: "GLSL vertex shader"
|
||||
size: 491
|
||||
sha1: "92fca43b92298d308e88edada93453a9ef21adbd"
|
||||
md5: "5944fea1ff20645f10aecdda06235fb7"
|
||||
required: false
|
||||
bundled: true
|
||||
has_builtin: true
|
||||
source_ref: "src/video.cpp:119, src/ShaderProgram.cpp:85-135, src/embedded_shaders.h:31-52"
|
||||
note: >
|
||||
Opened from the working directory; the copy compiled into the binary is
|
||||
used when the file is absent. The release archives ship the file without
|
||||
the EMBED_HLSL guards (413 bytes).
|
||||
|
||||
- name: "video_m32_o32.fs"
|
||||
path: "nuance/video_m32_o32.fs"
|
||||
description: "GLSL fragment shader, YCrCb to RGB conversion"
|
||||
size: 6168
|
||||
sha1: "d0477bd73ba524bb74c1faf30fd8f32bd254f924"
|
||||
md5: "e23f4668fea649cb14feab840fd8377f"
|
||||
required: false
|
||||
bundled: true
|
||||
has_builtin: true
|
||||
source_ref: "src/video.cpp:120, src/ShaderProgram.cpp:85-135, src/embedded_shaders.h:31-52"
|
||||
note: >
|
||||
Selected when UseCRTshader is disabled in nuance.cfg. Same lookup and
|
||||
fallback as video_generic.vs; the release copy is 6090 bytes.
|
||||
|
||||
- name: "video_m32_o32_crt.fs"
|
||||
path: "nuance/video_m32_o32_crt.fs"
|
||||
description: "GLSL fragment shader with CRT post-processing"
|
||||
size: 8130
|
||||
sha1: "e57671f844c3bf96f0bf77ea4d550e13e077b0d2"
|
||||
md5: "2e1335cd9b14165897eac031504abf8e"
|
||||
required: false
|
||||
bundled: true
|
||||
has_builtin: true
|
||||
source_ref: "src/video.cpp:120, src/ShaderProgram.cpp:85-135, src/embedded_shaders.h:31-52"
|
||||
note: >
|
||||
Selected when UseCRTshader is enabled, the shipped default. Same lookup
|
||||
and fallback as video_generic.vs; the release copy is 8052 bytes.
|
||||
|
||||
- name: "FlashEEPROM.bin"
|
||||
description: "Atmel AT49BV162A flash ROM image, 2 MB at 0xF0000000"
|
||||
size: 2097152
|
||||
required: false
|
||||
bundled: true
|
||||
source_ref: "src/FlashEEPROM.h:36-51, src/FlashEEPROM.cpp:273-292, src/dma.cpp:679-693"
|
||||
note: >
|
||||
Read by the FlashEEPROM constructor from the process working directory
|
||||
when the core is loaded, truncated to 2 MB, and written back by the
|
||||
destructor. The release archives ship one; its content is the flash
|
||||
state of the session that produced it.
|
||||
|
||||
- name: "breakpoint.txt"
|
||||
description: "Single breakpoint address, first line in hexadecimal"
|
||||
required: false
|
||||
mode: standalone
|
||||
source_ref: "src/NuanceMain_linux.cpp:124, src/NuanceMain.cpp:446"
|
||||
note: >
|
||||
Read from the working directory by the standalone executables only;
|
||||
NuanceMain.cpp and NuanceMain_linux.cpp are excluded from the libretro
|
||||
build (CMakeLists.txt:190).
|
||||
@@ -0,0 +1,161 @@
|
||||
emulator: PCEE2
|
||||
type: libretro
|
||||
core_classification: community_fork
|
||||
bios_mode: agnostic
|
||||
source: "https://github.com/WizzardSK/pcee2-libretro"
|
||||
upstream: "https://github.com/PCSX2/pcsx2"
|
||||
profiled_date: "2026-09-03"
|
||||
source_commit: "93aded21a46e60f3def27b2590eccb49d30d6a05"
|
||||
upstream_commit: "6db638dc0373769b4c5d5b5dd7ed6da641b9a18e"
|
||||
core_version: "v2.7.523"
|
||||
display_name: "Sony - PlayStation 2 (PCEE2)"
|
||||
cores: [pcee2]
|
||||
systems: [sony-playstation-2]
|
||||
|
||||
bios_directory: "pcsx2/bios/"
|
||||
resources_directory: "pcsx2/resources/"
|
||||
|
||||
data_directories:
|
||||
- ref: pcsx2-resources
|
||||
destination: "pcsx2/resources"
|
||||
source_ref: "pcee2-libretro/Libretro.cpp:414-442, pcsx2/Pcsx2Config.cpp:2388-2400"
|
||||
|
||||
notes: |
|
||||
libretro port of current PCSX2, merged up to upstream 6db638dc (v2.7.523,
|
||||
pcee2-libretro/upstream.version); the build reports that version as
|
||||
library_version. Everything the port adds lives in pcee2-libretro/ and in
|
||||
the libretro renderer bridges; the BIOS, CDVD, patch and database code is
|
||||
upstream PCSX2.
|
||||
|
||||
InitializeConfig maps the PCSX2 folder layout under <system>/pcsx2:
|
||||
AppRoot and DataRoot are that directory, Resources and UserResources are
|
||||
pcsx2/resources, Settings is pcsx2/inis, and EmuFolders::LoadConfig
|
||||
derives bios, memcards, cheats, patches, textures, gamesettings, cache,
|
||||
snaps, sstates, logs, covers, inputprofiles and videos from DataRoot
|
||||
(pcee2-libretro/Libretro.cpp:414-428, pcsx2/Pcsx2Config.cpp:2319-2336).
|
||||
A standalone PCSX2.ini dropped in pcsx2/inis contributes nine emulation
|
||||
sections as the baseline (Libretro.cpp:504-535); the core options and the
|
||||
port overrides apply on top.
|
||||
|
||||
BIOS detection is filename-agnostic. The core option pcsx2_bios lists every
|
||||
file of pcsx2/bios that IsBIOS accepts: a romdir whose RESET entry is
|
||||
followed by a readable ROMVER, whose fifth character gives the zone (Japan,
|
||||
USA, Europe, Asia, China, T10K, COH-H, Test, Free). With the option on
|
||||
auto, SettingsOverride selects the first accepted file (Libretro.cpp:578-618,
|
||||
pcsx2/ps2/BiosTools.cpp:80-197, 284-294). When no BIOS is configured or the
|
||||
configured name is missing, LoadBIOS falls back to FindBiosImage, which
|
||||
also filters on size between 4 and 8 MB (BiosTools.cpp:258-282, 317-369).
|
||||
The image is read into the 4 MB ROM region; a file shorter than 2465792
|
||||
bytes turns off the OSDSys parameter HLE. No hash is matched. Booting with
|
||||
no content starts the BIOS (Libretro.cpp:2090-2096).
|
||||
|
||||
Companions derive from the selected image: rom1 and rom2 are tried as the
|
||||
full name plus extension, then with the extension replaced, and are skipped
|
||||
when absent; the nvm is read at the replaced extension and rebuilt with
|
||||
region and language defaults when missing or blank; the mec is written back
|
||||
as 0x00020603 when it cannot be read (BiosTools.cpp:214-241, 366-367,
|
||||
pcsx2/CDVD/CDVD.cpp:136-205).
|
||||
|
||||
The shaders, four interface fonts and GameIndex.yaml are built into the
|
||||
core (cmake/EmbedResources.cmake:19-31, pcsx2/CMakeLists.txt:1137-1157)
|
||||
and win over the copies on disk unless PCEE2_EXTERNAL_RESOURCES is set in
|
||||
the environment (pcsx2/EmbeddedResources.cpp:8-12, pcsx2/GS/Renderers/Common/GSDevice.cpp:372-387,
|
||||
pcsx2/ImGui/ImGuiManager.cpp:470-492, pcsx2/GameDatabase.cpp:1021-1050,
|
||||
Libretro.cpp:451-473). A missing resources directory is a warning, not a
|
||||
failure (Libretro.cpp:433-442). What the directory still supplies to this
|
||||
build is patches.zip. RedumpDatabase.yaml is read only by the Qt game
|
||||
summary (pcsx2/GameDatabase.cpp:1197-1210 has no caller in the core),
|
||||
game_controller_db.txt only by the SDL input source the port disables
|
||||
(Libretro.cpp:561-562, pcsx2/Input/SDLInputSource.cpp:701-706), the
|
||||
achievement sounds only with achievements enabled, which no core option or
|
||||
adopted ini section does (pcsx2/Achievements.cpp:943-951), and
|
||||
fullscreenui/no-save.png only by the save state selector, whose hotkeys the
|
||||
port clears (Libretro.cpp:564, pcsx2/ImGui/ImGuiOverlays.cpp:1461-1462).
|
||||
The port supplies Roboto alone to ImGui, so no emoji font is read.
|
||||
|
||||
Per-game user files keep their PCSX2 locations under <system>/pcsx2:
|
||||
cheats and patches as <serial>_<crc>.pnach (pcsx2/Patch.cpp:333-363),
|
||||
gamesettings/<serial>_<crc>.ini (pcsx2/VMManager.cpp:830-833),
|
||||
textures/<serial>/replacements (pcsx2/GS/Renderers/HW/GSTextureReplacements.cpp:262-264),
|
||||
memcards/*.ps2, which the core creates and lists in the memory card
|
||||
options (Libretro.cpp:620-640). The DEV9 HDD image is named in the ini and
|
||||
created on demand.
|
||||
|
||||
files:
|
||||
- name: "<bios>.bin"
|
||||
path: "pcsx2/bios/"
|
||||
description: "PS2 BIOS image"
|
||||
min_size: 4194304
|
||||
max_size: 8388608
|
||||
required: true
|
||||
validation: [size]
|
||||
source_ref: "pcee2-libretro/Libretro.cpp:578-618, pcsx2/ps2/BiosTools.cpp:16-17, pcsx2/ps2/BiosTools.cpp:80-197, pcsx2/ps2/BiosTools.cpp:258-294, pcsx2/ps2/BiosTools.cpp:317-369"
|
||||
note: >
|
||||
Any file of pcsx2/bios whose romdir carries RESET and ROMVER. The 4 to
|
||||
8 MB filter applies in FindBiosImage only; the core option scan and the
|
||||
auto selection accept any size that passes the romdir check.
|
||||
|
||||
- name: "<bios>.rom1"
|
||||
path: "pcsx2/bios/"
|
||||
description: "DVD player ROM"
|
||||
max_size: 4194304
|
||||
required: false
|
||||
source_ref: "pcsx2/ps2/BiosTools.cpp:214-241, pcsx2/ps2/BiosTools.cpp:366, pcsx2/MemoryTypes.h:13"
|
||||
note: >
|
||||
Tried as <bios>.bin.rom1 then <bios>.rom1, opened case-insensitively,
|
||||
skipped with a console line when absent.
|
||||
|
||||
- name: "<bios>.rom2"
|
||||
path: "pcsx2/bios/"
|
||||
description: "Chinese ROM extension"
|
||||
max_size: 4194304
|
||||
required: false
|
||||
source_ref: "pcsx2/ps2/BiosTools.cpp:214-241, pcsx2/ps2/BiosTools.cpp:367, pcsx2/MemoryTypes.h:14"
|
||||
note: >
|
||||
Same lookup as rom1. Present on Chinese region consoles only.
|
||||
|
||||
- name: "<bios>.nvm"
|
||||
path: "pcsx2/bios/"
|
||||
description: "Console NVRAM (region parameters, language, iLink ID, OSD settings)"
|
||||
size: 1024
|
||||
required: false
|
||||
hle_fallback: true
|
||||
source_ref: "pcsx2/CDVD/CDVD.cpp:47, pcsx2/CDVD/CDVD.cpp:136-188, pcsx2/CDVD/CDVD.cpp:207-238"
|
||||
note: >
|
||||
Read at <bios>.nvm, rebuilt in memory with region and language defaults
|
||||
when it is missing, short, or has a blank config block, and written back
|
||||
on save.
|
||||
|
||||
- name: "<bios>.mec"
|
||||
path: "pcsx2/bios/"
|
||||
description: "Mechacon version, one u32"
|
||||
size: 4
|
||||
required: false
|
||||
hle_fallback: true
|
||||
source_ref: "pcsx2/CDVD/CDVD.cpp:49, pcsx2/CDVD/CDVD.cpp:190-204"
|
||||
note: >
|
||||
Read at <bios>.mec; written as 0x00020603 when it cannot be read.
|
||||
|
||||
- name: "patches.zip"
|
||||
path: "pcsx2/resources/patches.zip"
|
||||
description: "Built-in game patch archive (pnach per serial and CRC)"
|
||||
required: false
|
||||
bundled: true
|
||||
category: game_data
|
||||
source_ref: "pcsx2/Patch.cpp:117, pcsx2/Patch.cpp:289-317, pcsx2/Patch.cpp:365-405"
|
||||
note: >
|
||||
Opened read only from the resources directory when a game's patches are
|
||||
enumerated and searched for <serial>_<crc>.pnach, then <crc>.pnach. Files
|
||||
in the patches folder take precedence. A failure to open is reported once
|
||||
on screen. Not part of the PCSX2 source tree: PCSX2 builds fetch it from
|
||||
the pcsx2_patches releases, a rolling asset rebuilt on every patch commit.
|
||||
|
||||
- name: "eeprom.dat"
|
||||
description: "DEV9 network adapter EEPROM"
|
||||
size: 64
|
||||
required: false
|
||||
hle_fallback: true
|
||||
source_ref: "pcsx2/DEV9/DEV9.cpp:60-73, pcsx2/DEV9/DEV9.cpp:97-158"
|
||||
note: >
|
||||
Opened read-write and mapped from the process working directory by
|
||||
DEV9init; the built-in eeprom table is used when it cannot be opened.
|
||||
@@ -0,0 +1,54 @@
|
||||
emulator: pokketstation
|
||||
type: libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/mentalfoundry/pokketstation"
|
||||
upstream: "https://github.com/mentalfoundry/pokketstation"
|
||||
profiled_date: "2026-09-03"
|
||||
source_commit: "11fb6de0139d5cbdbd44e37839571a0bf25e5ab2"
|
||||
core_version: "v1.11.1"
|
||||
display_name: "Sony - PocketStation (pokketstation)"
|
||||
cores: [pokketstation]
|
||||
systems: [sony-pocketstation]
|
||||
|
||||
notes: |
|
||||
PocketStation emulator with a portable C core (core/) shared by the libretro
|
||||
core, an SDL2 desktop application and a PS Vita port. The libretro core
|
||||
reports library_version "0.1"; the project version is the release tag,
|
||||
v1.11.1 in the desktop frontend (frontends/desktop/main.c:40).
|
||||
|
||||
load_bios opens <system>/pocketstation.bin, reads 16384 bytes and fails when
|
||||
fewer are read; a longer file is accepted and truncated. psemu_load_bios
|
||||
copies the image and rejects any size other than PSEMU_BIOS_SIZE.
|
||||
retro_load_game returns false when load_bios fails, and psemu_run executes
|
||||
nothing while no BIOS is loaded: there is no HLE and no embedded copy.
|
||||
Content (.mcr, .mcd, .mcs, .pss) is identified by its bytes, not by the
|
||||
extension. 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; a match
|
||||
enables the date, time and volume override writes into kernel RAM. 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
|
||||
(docs/hardware-notes.md:778-788). SWI 0Fh FlashWriteSerial works on 061
|
||||
and locks the CPU on 110.
|
||||
|
||||
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
|
||||
(frontends/desktop/main.c:630-668, 1000-1035, 2380-2451). The Vita frontend
|
||||
loads no BIOS yet (frontends/vita/main.c:31-33).
|
||||
|
||||
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:178-196, frontends/libretro/libretro.c:206-208, core/src/psemu.c:90-97, core/src/psemu.c:458-461, core/src/psemu.c:795-820, 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;
|
||||
the libretro core reads the first 16384 bytes. FNV-1a 0xB2E46838
|
||||
identifies the retail 110 revision for the settings overrides only.
|
||||
Reference in new issue
Block a user