PSP Moonlight is a Moonlight-compatible game-streaming client for Sony PSP systems, designed around a custom PSP-native networking, decode, audio, and rendering stack.
The project streams H.264 video from a host PC running Sunshine, performs software decode on the main CPU, and uses the Media Engine for accelerated YUV-to-RGBA conversion.
Compared with the current public upstream baseline, this tree includes additional network-path updates:
- Launch and transport bitrate now start from the client-selected bitrate (no hidden startup downscale step).
- Connection quality classification now uses transport metrics (loss/FEC recovery) without coupling decode FPS into bandwidth decisions.
- RTCP Receiver Reports were aligned with interval loss accounting and RFC3550-style jitter units (
90 kHzRTP clock domain). - Adaptive fast-drop trigger was tuned to require 3 consecutive drop signals before aggressive halving.
| Feature | Status | Notes |
|---|---|---|
| Host discovery | Ready | mDNS + optional subnet scan |
| Pairing + TLS transport auth | Ready | Runtime identity + pin-based trust |
| Game library + icons | Ready | Normal Sunshine box-art download, static PNG decode, raw RGB565 cache |
| RTSP / RTP / FEC pipeline | Ready | Real-hardware validated, CAVLC host profile required for stable normal playback |
| OpenH264 decode + ME conversion | Ready | PSP-optimized software decode path |
| Opus stereo audio | Ready | PLC + adaptive handling |
| UPnP hotspot/remote assist | Ready | Automatic IGD UDP port mapping for RTP/RTCP session ports |
| Multi-host support | Ready | Up to 8 paired hosts |
PSP Moonlight includes UPnP IGD integration to improve session setup when streaming over:
- Mobile hotspot networks
- Public IP / WAN remote sessions
- NAT paths that require inbound UDP mapping for RTP/RTCP
During session preparation, the client requests temporary UDP mappings for active stream ports and cleans them up when the session ends.
- Your gateway/hotspot must support UPnP IGD
- UPnP must be enabled on the gateway/hotspot
- Host PC must be reachable by the selected session route
If UPnP is unavailable, streaming may still work on LAN or on NAT setups that do not require explicit mapping.
Main CPU (Allegrex) Media Engine
-------------------- ---------------------------
Wi-Fi receive + RTP/FEC processing YUV420P -> RGBA8888 via VFPU
OpenH264 software decode Concurrent conversion work
Control/input channel Output frame handoff
Opus audio decode + recovery
- PSP-1000 / PSP-2000 / PSP-3000
- Custom firmware: ARK-4
- 2.4 GHz Wi-Fi
- Sunshine (current stable release recommended)
- H.264 output configured for PSP-compatible streaming
Recommended baseline host profile:
- Codec: H.264
- Encoder profile: Baseline
- Entropy: CAVLC (required for PSP v1.1 validation and normal playback)
- Resolution/FPS: Start with 480x272 @ 15 fps
- Bitrate: Start around 384 kbps and tune as needed
This guidance applies to all supported host encoder backends (NVIDIA NVENC, AMD AMF, Intel QSV, and software x264).
See docs/BUILDING.md for full environment setup.
# 1) Build Media Engine helper PRX
cd moonlight_me_helper && make
# 2) Build application (retail mode is default)
cd .. && make
# Optional debug build
make RETAIL_BUILD=0Build output includes:
- EBOOT.PBP
- moonlight_me_helper.prx
Quick install path:
- Create folder:
ms0:/PSP/GAME/Moonlight/
- Copy:
- EBOOT.PBP
- moonlight_me_helper.prx
- Launch from XMB -> Game -> Memory Stick.
For full setup, pairing flow, and troubleshooting, see INSTALL.md.
- No tearless double-buffer output yet
- PSP Wi-Fi quality can still be a limiting factor on weak signals
- Very high streaming resolutions are outside practical PSP decode limits
Detailed notes: docs/KNOWN_ISSUES.md
- docs/BUILDING.md
- docs/KNOWN_ISSUES.md
- docs/ARCHITECTURE.md
- docs/NVENC_SETTINGS_GUIDE.md
- docs/AMD_SETTINGS_GUIDE.md
- docs/QSV_SETTINGS_GUIDE.md
- docs/SOFTWARE_ENCODING_GUIDE.md
- docs/GAME_LIST_PARSER_README.md
- docs/PAIRING_README.md
- docs/DECODER_PIPELINE.md
- INSTALL.md
- CHANGELOG.md
- v1.1.0: Network controller refinements (transport-first quality classification, direct launch bitrate use, RTCP RR accounting update) and manual retail artifact publication.
- v1.0.0: Public release of the PSP-native rewrite with documented host compatibility guidance and release validation.
- v0.2.x: Public beta cycle.
See CONTRIBUTING.md.
GPLv3 — see LICENSE.