A Moonlight-based game-streaming client for iOS, focused on PC emulator streaming. Forked from VoidLink, which was itself forked from the upstream moonlight-iOS.
- Platform resolution presets — in place of the generic 720p/1080p/4K selectors, a
Platformmode exposes per-console base resolutions (PS1 320×240, 3DS 400×480 stacked) with a 1×–4× scale multiplier.Safe Area,FullScr/Window, andCustomremain for non-emulator use. - Emulator controller skins — a runtime skin system renders a console-themed overlay on top of the stream, with per-button hit areas, thumbsticks, extended-edge hit testing, and per-screen video regions. Bundled:
PS1.manicskin,PS1_FLEX.manicskin,ModernBlack.manicskin(3DS). - Dual-screen rendering for Nintendo 3DS — the streamed composite frame is split into top and bottom screens using the skin's
screens[]layout. An auxiliaryAVSampleBufferDisplayLayerreceives the same decoded sample buffer queue as the primary, cropped and positioned to its region. - Per-region touch modes — top screen acts as a relative-mouse trackpad; bottom screen acts as an absolute-position touchscreen with left-click press/release, so Azahar / Citra / Lime3DS register it as a native 3DS stylus touch.
- Canonical source layouts — MoonPad pins the expected on-wire frame layout per platform, so a third-party skin's
inputFramevalues can't silently mismap when the PC-side capture geometry doesn't match.
- On the PC, install a virtual display driver (e.g. VirtualDisplayDriver) and add a 1600×1920 portrait display.
- In Azahar / Citra / Lime3DS, enable Use Custom Layout under Graphics, with:
- Top screen:
x=0, y=0, width=1600, height=960 - Bottom screen:
x=160, y=960, width=1280, height=960
- Top screen:
- Move the emulator to the virtual display and fullscreen it.
- Configure Sunshine to capture that display.
- In MoonPad: Settings → Resolution → Platform → 3DS → 4× (or Custom with 1600×1920).
See the Delta-compatible skin format docs for authoring your own skins — MoonPad's loader accepts both .manicskin (Manic Emu) and .deltaskin (Delta) archives.
moonlight-iOS (Moonlight Game Streaming Project)
│ fork
VoidLink (True砖家 @ Bilibili + community)
│ fork
MoonPad (this project)
- moonlight-iOS — the Moonlight Game Streaming Project supplies the core NVIDIA GameStream / Sunshine client, the decoding pipeline, the H.264/HEVC/AV1 path, and the overwhelming majority of the codebase under MoonPad. MoonPad is a derivative work.
- VoidLink — True砖家 (True Zhuanjia) and the VoidLink contributors reworked the UI, added the on-screen controller / widgets / custom-OSC editor, and built the initial skin loader (
SkinController/) that MoonPad extends. Most of MoonPad's plumbing is their work. - Controller skin format — inspired by and directly interoperable with the skin format used by Delta (Riley Testut) and Manic Emu, both iOS emulator front-ends. MoonPad's parser reads their
info.jsonlayout (includingextendedEdges, multi-screenscreens, directional /touchScreenX/Yinputs) and PDF/PNG assets natively. - Bundled skins
PS1.manicskin,PS1_FLEX.manicskin— shipped with VoidLink.ModernBlack.manicskin— 3DS skin by stars33k, originally distributed as a Delta-compatible.deltaskin.
- Submodules —
moonlight-common-c,ENet,ImGui,X1Kitper upstream Moonlight.
GPLv3, inherited from moonlight-iOS. See LICENSE.txt. As a derivative work of a GPLv3 project, MoonPad is itself GPLv3, and any further forks must preserve the license and this attribution chain.
From this fork (MoonPad):
From the upstream VoidLink fork:
From moonlight-iOS: full contributor list.