Filter mode 3 magnifies textures with an edge-directed rule after Hyllian's xBR (written from the published description, no code reused): for the texel corner nearest a sample, weighted YUV colour distances over a 5x5 neighbourhood decide whether an edge runs along the corner's diagonal; if so the corner is cut with an anti-aliased boundary and takes the closer side neighbour. Flat areas, straight edges, gradients, cutouts and 1:1 draws stay nearest. Selectable from [video] texture_filtering, settings.toml, PSX_TEXTURE_FILTER and the new texture_filter TCP command. Default unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
13 KiB
Third-Party Attribution
OpenBIOS — PCSX-Redux's free PS1 BIOS
OpenBIOS (src/mips/openbios) by
the PCSX-Redux authors, licensed MIT (notice: bios/OpenBIOS.LICENSE;
the binary also links permissively-licensed code from
uC-sdk, noted there too). Vendored
as the prebuilt image bios/openbios.bin (pin and build recipe recorded in
bios/OpenBIOS.toml) and statically recompiled by
psxrecomp-bios --config bios/OpenBIOS.toml exactly like the retail BIOS.
Normal runtime builds stage it automatically so players supply only a disc;
bios/OpenBIOS.LICENSE always rides alongside the shipped image.
libchdr — CHD disc-image decompressor
libchdr by Romain Tisserand and
contributors, licensed BSD-3-Clause (notice: LICENSE.txt inside the
archive). Vendored as the pinned source archive
third_party/libchdr-<commit>.tar.gz; the commit, digest, and upstream URL are
recorded in third_party/deps.manifest, and runtime/chd_dependency.cmake
verifies the archive against that digest before building it. It is compiled
into the runtime as a static library, so the BSD notice must ship with any
binary that links it: the notice text is runtime/licenses/libchdr-NOTICES.txt
and the release packagers copy runtime/licenses/ into the package as
licenses/.
The archive also carries libchdr's own bundled decompressors — Zstandard
(BSD-3-Clause / GPL-2.0 dual), LZMA SDK (public domain), and miniz (MIT) —
built from the same pinned tree; WITH_SYSTEM_ZLIB/WITH_SYSTEM_ZSTD are
forced OFF so the disc decoder cannot change with the host's packages.
libjuice — ICE transport for netplay
libjuice by Paul-Louis Ageneau
and contributors, licensed MPL-2.0. Only netplay builds link it
(PSX_NETPLAY=ON with recomp-net's RNET_ENABLE_ICE, the default); single-player
builds do not. Vendored unmodified as third_party/libjuice-v1.7.2.tar.gz, the
same URL and SHA-256 recomp-net pins; runtime/netplay_dependency.cmake declares
it for recomp-net and stops the configure if the two pins ever differ. It is
compiled in statically, so its notice and the source location ship with any
netplay binary: runtime/licenses/libjuice-NOTICES.txt. MPL-2.0 is file-level
copyleft: a change to a libjuice file must be published under MPL-2.0. The build
changes none.
libwebp - static texture-image decoder
libwebp 1.6.0
by Google Inc. and WebM contributors is licensed BSD-3-Clause. The runtime
builds only its static decoder, without command-line tools, the encoder, or a
libwebp DLL. The dependency is unmodified and pinned to commit
4fa21912338357f89e4fd51cf2368325b59e9bd9, with immutable archive SHA-256
923f3382a47a2af185c3240c954cf004428b237bd7317413a95146d01eb4b94b in
third_party/deps.manifest. Its original COPYING, PATENTS, and AUTHORS texts
ship in runtime/licenses/libwebp-NOTICES.txt, which release packagers carry
into licenses/. Developers can use the verified archive or an explicit
FETCHCONTENT_SOURCE_DIR_PSX_LIBWEBP / PSX_LIBWEBP_SOURCE_DIR source override.
PNG and JPEG continue to use the existing shared stb_image implementation.
xBR — edge-directed texture filter (Hyllian)
The texture_filtering = "xbr" mode in runtime/src/gpu_gl_renderer.c
(xbr_d, xbr_sample) follows Hyllian's xBR algorithm: its 5x5 neighbourhood,
YUV-weighted colour distance and the 4*d(H,F) / 4*d(E,I) edge sums. It is
an adaptation (CLUT texel fetches, primitive UV clamping, an anti-aliased corner
cut), not a copy of a shader file, but it derives from that work, licensed MIT:
Copyright (C) 2011-2016 Hyllian - sergiogdb@gmail.com
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Vendored libraries
These are checked in under recompiler/lib/ and runtime/third_party/ with
their upstream license files intact. All are permissive, so nothing here
constrains this repository's own terms; the obligation is to carry the notice.
| Component | License | Linked into | Notice |
|---|---|---|---|
| toml11 by Toru Niina | MIT | recompiler and runtime | recompiler/lib/toml11/LICENSE, shipped as runtime/licenses/toml11-NOTICES.txt |
| stb_image by Sean Barrett | MIT or public domain (Unlicense), at your option | runtime | notice in runtime/third_party/stb_image.h, shipped as runtime/licenses/stb_image-NOTICES.txt |
| xxHash 0.8.3 by Yann Collet | BSD-2-Clause | runtime texture-pack interoperability | runtime/third_party/xxhash.LICENSE, shipped as runtime/licenses/xxhash-NOTICES.txt |
| rabbitizer by Decompollaborate | MIT | recompiler only | recompiler/lib/rabbitizer/LICENSE |
| ELFIO by Serge Lamikhov-Center | MIT | recompiler only | recompiler/lib/ELFIO/LICENSE.txt |
| {fmt} by Victor Zverovich | MIT | recompiler only | recompiler/lib/fmt/LICENSE.rst |
Anything that reaches a player binary needs its notice in
runtime/licenses/, which both release packagers copy wholesale into the
package as licenses/ — that is the one place to add a notice when a new
runtime dependency lands. The recompiler-only entries are developer tooling
and are not in the shipped package; if that ever changes, their notices have
to ship too.
The unmodified xxHash header comes directly from upstream tag v0.8.3,
xxhash.h (SHA-256
17973c0dc49d9854ca26caa191f0e12f7a424b68858d9a78de3860d959d85e4b).
Its BSD notice remains in the header and the separate notice files. The
DuckStation-compatible filename parser, matching, PNG dumping and cache are
independent psxrecomp implementations; no DuckStation implementation is
included. Format observations and the upstream reference pin are recorded in
DUCKSTATION_TEXTURE_FORMAT.md.
TinyCC (TCC) — toolchain-free overlay compiler shipped to players
TinyCC by Fabrice Bellard and contributors, licensed
LGPL-2.1. Not vendored in this repository — no TinyCC source or binary is
tracked here. It is invoked as a separate subprocess by
tools/compile_overlays.py (--compiler tcc, --tcc <binary>) to build overlay
shards into a DLL, so players need no compiler of their own. Nothing in the
runtime links against libtcc, so this is aggregation with a separate program
rather than LGPL linkage.
The runtime expects an end-user bundle at
<exe_dir>/overlay_toolchain/{python/, tcc/tcc.exe, compile_overlays.py, …}
(runtime/src/main.cpp). tools/release_stage.py (stage_toolchain) populates
it on Windows from the pinned, unmodified upstream TinyCC 0.9.27 win64 binary
zip. That zip carries no license file, so the notice — LGPL-2.1 text, copyright
and the exact source URL — lives at runtime/licenses/TinyCC-LICENSE.txt
(shipped as licenses/TinyCC-LICENSE.txt) and is also staged beside the binary
as overlay_toolchain/tcc/COPYING. Staging fails if the notice does not name the
pinned version and archive hash, and the release zip verifier
(docs/ci/templates/game-release.yml) rejects a zip that bundles tcc.exe
without both copies.
Developers with gcc on PATH use the gcc tier instead; the bundled tcc matters
only for end-user release packages (docs/BUILDING.md).
JRickey / gba-recomp — verified-enhancement shadow + screen color science
The verified-enhancement QoL layer (feat/shadow-enhancements) reuses two
engine-agnostic pieces originally authored by Jrickey in
JRickey/gba-recomp, licensed
MIT OR Apache-2.0, used with permission:
-
ShadowVerifier— the envelope-correlation differential self-check, probation auto-gain calibration, and prove/strike/pause state machine. Original:crates/gba-core/src/shadow.rs. This repo:runtime/src/audio_shadow.c,runtime/include/audio_shadow.h(C re-implementation, via the gbarecomp C++ portsrc/gba/audio_shadow.*and the snesrecomp C portrunner/src/snes/audio_shadow.*; the algorithm is unchanged). -
Color-science core (xyY→XYZ, primaries→matrix, Bradford chromatic adaptation, sRGB OETF) used to bake the present-time screen-color LUT. Original:
crates/screen/src/{color,profile,lut}.rs. This repo:runtime/src/color_lut.c,runtime/include/color_lut.h(C re-implementation, via the gbarecomp C++ portsrc/runtime/color_lut.*).
PSX-specific work (ours)
- The CRT / composite / Trinitron display panel models in
color_lut.c(the GBA port modelled a handheld LCD; a console scanned out to a TV needs a CRT/composite model instead) — SMPTE-C / Trinitron-class phosphor gamuts, CRT gamma, black-lift. - The SPU float shadow render (
runtime/src/spu_shadow.c,runtime/include/spu_shadow.h): 4-point cubic resampling + float headroom re-render of the PS1 SPU ADPCM voice mix, driven from a read-only tap on the canonspu.cvoice state. This is console-specific (the SNES analog re-renders the S-DSP; the GBA analog re-renders the MP2K software mixer). - The tap plumbing in
runtime/src/spu.candruntime/include/spu.h.
All reuse keeps the original copyright and dual MIT/Apache-2.0 license.
retcomm-studio — multi-disc project tooling
retcomm-studio by
Alex Vanderveen, licensed MIT (notice: LICENSE in that repository).
psxrecomp is PolyForm-NC, so this is permissive vendored into stricter — the
MIT notice must ride along and is why this entry exists.
Vendored into tools/new_project_layout/ at commit 06bb918b:
verify_disc_set.py— verifies that N probed images form one buildable set (identical program across differing per-disc serials). New to this repository.probe_disc.py— synced forward. psxrecomp carried a stale fork predating multi-disc support, 90 lines behind; its only 8 unique lines were older revisions of the same functions, so nothing psxrecomp-specific was dropped. A single-disc project still rendersdisc = "..."byte-identically.
update_disc_set.py beside them is not vendored — it is psxrecomp's own,
written here because neither repository had it: probe_disc.py --write-game-toml renders a complete game.toml, which is correct when
scaffolding a project and destructive on a live one.
Keep the pin above accurate when re-syncing. These files are the reason a
standalone setup-wizard install and a Retro build produce the same
multi-disc game.toml; if the two drift, so do those two paths.
OpenXR SDK loader - optional PC headset backend
OpenXR-SDK by The Khronos Group
Inc. and contributors is licensed Apache-2.0. Its bundled JsonCpp sources are
distributed under their MIT terms. Only PSX_OPENXR=ON links the static loader;
the SDK provides the official host API/runtime discovery implementation needed
to connect to the user's separately installed OpenXR runtime. The feature is
currently Win32/OpenGL-only and defaults OFF, so ordinary builds do not fetch it.
The dependency is pinned by annotated tag object
b76b80adaf65ac3ad6cc1ce61974fb29a5d02352, resolving to commit
c15d38cb4bb10a5b7e075f74493ff13896e2597a. Enabled builds fetch and compile that
source, including bundled JsonCpp; they need network on a cold cache (the pinned
archive is verified against the SHA256 in third_party/deps.manifest), a vendored
archive (tools/ci/vendor_deps.sh psx_openxr_sdk), or a
FETCHCONTENT_SOURCE_DIR_PSX_OPENXR_SDK / PSX_OPENXR_SDK_SOURCE_DIR override. No proprietary headset SDK,
runtime binary, API layer or vendor driver is redistributed.
The complete SDK and JsonCpp notices are in
runtime/licenses/OpenXR-SDK-NOTICES.txt; both existing release packagers copy
that directory into player packages. The source dependency is unmodified.