rock88 / moonlight-nx

Moonlight port for Horizon OS
GNU General Public License v3.0
391 stars 47 forks source link

Build

Moonlight-NX

Moonlight-NX is a port of Moonlight Game Streaming Project for Nintendo Switch.

Installing

  1. Download latest Moonlight-NX release or automatic build (require github login for artifacts link appear);
  2. Put moonlight.nro to sdcard:/switch/moonlight;
  3. Launch hbmenu over Title Redirection (for FULL RAM access);
  4. Launch moonlight.

Controls

Mouse

With touch screen you can configure two mouse input mode:

In both case you can hold L/R buttons an tap on a screen for left/right click (cursor will not move) or hold ZL/ZR for allow cursor movement while left/right mouse buttons holded.

Also you can scroll pages with two fingers.

Keyboard

Currently full keyboard input not supported, but you can use this combinations for most common cases:

  1. Minus+Plus - Guide button;
  2. ZL+ZR+Up - Exit from stream (without closing current app);
  3. ZL+ZR+Down - Exit from stream (and close current app);
  4. ZL+ZR+Left - Show/hide video decoder/render stats;
  5. L+R+Up - ESC key;
  6. L+R+Down - Win key;
  7. L+R+Left - Alt+Enter (for enable/disable fullscreen mode in some games or emulators);
  8. L+R+Right - Shift+Tab (for open/close Steam overlay).

You can change this combos on a Input Settings screen (Gamepad icon on a main screen, next tap keyboard icon) or by press Y button on a Applications screen for adjust keyboard combos for a specific game/application.

Gamepad

By default Switch gamepad configured as X360 gamepad (A/B and X/Y swapped). You can reconfigure buttons on a Input Settings screen or by press Y button on a Applications screen for adjust gamepad mapping for a specific game/application.

Multiple gamepad currently not supported.

HID Keyboard/Mouse

Moonlight-NX support attached hardware keyboard/mouse over USB connected to Switch directly or over dock (Switch should be in dock).

Build Moonlight-NX

Using Docker

  1. Create a working dir:

mkdir moonlight-nx-build; cd moonlight-nx-build

  1. Download a Dockerfile:

wget https://raw.githubusercontent.com/rock88/moonlight-nx/master/Dockerfile

  1. Build and run a development environment:
docker build . -t moonlight-nx-build
docker run -it moonlight-nx-build
  1. Clone the repo:

git clone --recursive https://github.com/rock88/moonlight-nx.git

  1. Run the build:

cd moonlight-nx; make; exit

  1. Copy the .nro out of the container:
    
    // Find your container ID
    docker ps -a

// Use container ID for copy .nro from container docker cp CONTAINER_ID:moonlight-nx/moonlight.nro .


## Build Manually
1. Setup a [Development Environment](https://switchbrew.org/wiki/Setting_up_Development_Environment "Development Environment")
2. Install deps (`dkp-pacman` for Linux like arch, `pacman` for MacOS) and update all to latest versions:

sudo (dkp-)pacman --noconfirm -S devkitA64 switch-tools libnx switch-ffmpeg switch-glad switch-glfw switch-jansson switch-libdrm_nouveau switch-libexpat switch-libopus switch-libvpx switch-mbedtls switch-mesa switch-zlib switch-ffmpeg switch-curl sudo (dkp-)pacman --noconfirm -Suy



3. Clone the repo: 

`git clone --recursive https://github.com/rock88/moonlight-nx.git`

4. Run the build:

`cd moonlight-nx; make -j`

# Assets
Icon - [moonlight-stream](https://github.com/moonlight-stream "moonlight-stream") project logo.