Port of Moonlight for the Original Xbox. Unlikely to ever actually work. Do NOT use!
Nothing works, except the splash screen.
- Install nxdk prerequisites. Then run the following from mingw64 or bash shell:
export NXDK_DIR="$(pwd)/third-party/nxdk"
eval "$(${NXDK_DIR}/bin/activate -s)"
cd "${NXDK_DIR}"
make NXDK_ONLY=y
make tools
-
Create build directory
mkdir -p build
-
Configure the project
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE="${NXDK_DIR}/share/toolchain-nxdk.cmake"
cmake --build build
This script takes care of everything, except installing the prerequisites.
./build.sh
- Build
- Build in GitHub CI
- Build with CMake instead of Make, see https://github.com/Ryzee119/Xenium-Tools/blob/master/CMakeLists.txt and https://github.com/abaire/nxdk_pgraph_tests/blob/4b7934e6d612a6d17f9ec229a2d72601a5caefc4/CMakeLists.txt
- Get build environment working with CLion directly instead of using external terminal
- debugger, see https://github.com/abaire/xbdm_gdb_bridge
- Add a run config for CLion, see https://github.com/Subtixx/XSampleProject
- Automatically run built xiso in Xemu
- Add unit testing framework
- Separate main build and unit test builds, due to cross compiling, see https://stackoverflow.com/a/64335131/11214013
- Get tests to properly compile
- Enable codecov
- Enable sonarcloud
- Build moonlight-common-c
- Build custom enet, depends on XboxDev/nxdk#680 or https://github.com/thrimbor/nxdk/tree/winsock/lib/winapi (seems unlikely nxdk will ever be ready for this, could definitely use some help with this)
- Menus / Screens
- Loading/splash screen
- Initial loading screen, see https://github.com/XboxDev/nxdk/blob/master/samples/sdl_image/main.c
- Set video mode based on best available mode
- dynamic splash screen (size based on current resolution)
- two images (background color, and logo) to reduce total size... stretch background color image... or don't even use an image for the background
- Main/Home
- Settings
- Add Host
- Game/App Selection
- Host Details
- App Details
- Pause/Hotkey overlay
- Loading/splash screen
- Streaming
- Video - https://www.xbmc4xbox.org.uk/wiki/XBMC_Features_and_Supported_Formats#Xbox_supported_video_formats_and_resolutions
- Audio
- Mono
- Stereo
- 5.1 Surround
- 7.1 Surround
- Input
- Gamepad Input
- Keyboard Input
- Mouse Input
- Mouse Emulation via Gamepad
- Misc.
- Save config and pairing states, probably use nlohmann/json
- Host pairing
- Possibly, GPU overclocking, see https://github.com/GXTX/XboxOverclock
- Docs via doxygen