68 lines
2.8 KiB
Markdown
68 lines
2.8 KiB
Markdown
# Phase 1.0A upstream analysis
|
|
|
|
## Selected RetroArch base
|
|
|
|
| Field | Value |
|
|
| --- | --- |
|
|
| Official repository | `https://github.com/libretro/RetroArch` |
|
|
| Stable tag | `v1.22.2` |
|
|
| Commit | `69a4f0ea1e8aaf442ae4858f2e7f2b31a1776576` |
|
|
| Tree | `33babf9eb7699b5d571a3063ea21c3e488c159fe` |
|
|
| Commit date | `2025-11-20T00:17:08Z` |
|
|
| Source archive | official GitHub tag archive |
|
|
| Archive size | `71629881` bytes |
|
|
| Archive SHA-256 | `245ef18c8fa8fbd9fbb5eb25cf43e17c6aace2f95c1ed99873cbd794012bb232` |
|
|
| License | GPL-3.0-or-later (`COPYING` and source notices) |
|
|
| Acquisition date | `2026-07-19` |
|
|
|
|
The local fork starts at that exact commit. Its `upstream` fetch remote names
|
|
the official repository and its push URL is disabled. Project pushes are
|
|
restricted to the private Gitea `origin`.
|
|
|
|
## Areas inspected
|
|
|
|
The analysis covered `Makefile.common`, `Makefile.griffin`,
|
|
`Makefile.orbis`, frontend and driver registries, null/dummy drivers, RGUI,
|
|
static core glue, config/path startup, task queues, time/sleep, threads,
|
|
dynamic loading, VFS and logging. Reference platform implementations included
|
|
Orbis, Vita, Switch, PSP and null.
|
|
|
|
Relevant upstream mechanisms:
|
|
|
|
- `frontend_ctx_drivers[]` selects the first compiled platform frontend;
|
|
- video, audio and input arrays fall back to their null drivers;
|
|
- `Makefile.common` conditionally adds SDL2 video, input/joypad and audio;
|
|
- a static build resolves the global libretro API symbols at link time;
|
|
- configuration defaults derive driver names from compiled feature macros;
|
|
- RGUI is the smallest software-oriented menu driver;
|
|
- generic file/VFS/task code is widely shared even when persistent features
|
|
are disabled.
|
|
|
|
## Fork delta
|
|
|
|
The port adds:
|
|
|
|
- `Makefile.ps5` with explicit headless and software profiles;
|
|
- `frontend/drivers/platform_ps5.c`;
|
|
- `cores/chimera_smokecore/`;
|
|
- host tests and PS5 build validation;
|
|
- `pkg/ps5/` for the pinned SDL build and reviewed overlay;
|
|
- PS5 port documentation.
|
|
|
|
Small generic-source changes register the platform, block static Salamander
|
|
config I/O and normal shutdown saves for this profile, and add headers or
|
|
fallback locals required by the unusually small feature matrix. No proprietary
|
|
header, NID, syscall, firmware offset or device path is introduced.
|
|
|
|
## Static and dynamic core decisions
|
|
|
|
The static smoke core is linked into both ELFs and exports the real libretro
|
|
entrypoints consumed by RetroArch. Dynamic loading is deliberately disabled:
|
|
there is no proven native PS5 shared-core file/relocation/unload contract yet.
|
|
A later milestone must separately specify format, symbol binding, executable
|
|
memory, directory/VFS policy, ABI compatibility, error cleanup and unload.
|
|
|
|
No additional `libretro-samples` acquisition was needed because the required
|
|
deterministic input, video, audio and no-content behaviour was implemented in
|
|
the small GPL-compatible Chimera core and verified by a host harness.
|