Skip to content

Commit

Permalink
splash screen
Browse files Browse the repository at this point in the history
  • Loading branch information
ReenigneArcher committed Oct 19, 2024
1 parent 8b45b06 commit fd4d160
Show file tree
Hide file tree
Showing 20 changed files with 628 additions and 28 deletions.
5 changes: 1 addition & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -140,10 +140,7 @@ jobs:
# the main target needs to be cross compiled
echo "--- Building ALL ---"
cmake \
-B build \
-S . \
-DCMAKE_TOOLCHAIN_FILE="${nxdk_dir}/share/toolchain-nxdk.cmake"
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE="${nxdk_dir}/share/toolchain-nxdk.cmake"
cmake --build build
# TODO: Tests are not building properly...
Expand Down
47 changes: 38 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,25 +1,47 @@
cmake_minimum_required(VERSION 3.14)
cmake_minimum_required(VERSION 3.18)
# much of this file is borrowed from https://github.com/Ryzee119/Xenium-Tools/blob/master/CMakeLists.txt
# and https://github.com/abaire/nxdk_pgraph_tests/blob/main/CMakeLists.txt

project(Moonlight C CXX)
set(XBE_TITLE ${CMAKE_PROJECT_NAME})
message(STATUS "XBE_TITLE: ${XBE_TITLE}")

#
# metadata
#
set(XBE_TITLE ${CMAKE_PROJECT_NAME})
set(NXDK_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third-party/nxdk")
message(STATUS "NXDK_DIR: ${NXDK_DIR}")

set(XBOX_XBE_DIR "${CMAKE_CURRENT_BINARY_DIR}/xbe")
set(XBOX_ISO "${CMAKE_PROJECT_NAME}.iso")
message(STATUS "XBOX_ISO: ${XBOX_ISO}")

#
# Options
#
option(BUILD_TESTS "Build tests" OFF)

# add custom modules
set(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/"
)

set(CMAKE_CXX_STANDARD 17)

include(XBEUtils REQUIRED)

find_package(NXDK REQUIRED)
find_package(NXDK_SDL2 REQUIRED)
find_package(NXDK_SDL2_Image REQUIRED)

# add the automount_d_drive symbol to the linker flags, this is automatic with nxdk when using the Makefile option
# if this is not used, we must add some code to the main function to automount the D drive
# e.g. https://github.com/abaire/nxdk_pgraph_tests/blob/4b7934e6d612a6d17f9ec229a2d72601a5caefc4/src/main.cpp#L118-L122
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -include:_automount_d_drive")

# create the xbe directory if it doesn't exist
file(MAKE_DIRECTORY ${XBOX_XBE_DIR})

# copy assets directory to xbe directory
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/xbe/" DESTINATION "${XBOX_XBE_DIR}")

include(FindPkgConfig)

if(NOT CMAKE_BUILD_TYPE)
Expand All @@ -32,10 +54,12 @@ set(MOONLIGHT_SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp"
)
set(MOONLIGHT_EXTERNAL_LIBRARIES
"${NXDK_DIR}/lib/libpbkit.lib"
NXDK::NXDK
NXDK::NXDK_CXX
NXDK::SDL2
NXDK::SDL2_Image
)
set(MOONLIGHT_INCLUDE_DIRS
"${NXDK_DIR}/lib"
)
set(MOONLIGHT_COMPILE_OPTIONS "-Wno-builtin-macro-redefined")
set(MOONLIGHT_DEFINITIONS "-DXBOX -DNXDK")
Expand All @@ -47,7 +71,9 @@ add_definitions(${MOONLIGHT_DEFINITIONS})
add_executable(${CMAKE_PROJECT_NAME}
${MOONLIGHT_SOURCES}
)
include_directories(SYSTEM ${MOONLIGHT_INCLUDE_DIRS})
include_directories(SYSTEM
${CMAKE_CURRENT_SOURCE_DIR}
${MOONLIGHT_INCLUDE_DIRS})
target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC
${MOONLIGHT_EXTERNAL_LIBRARIES}
)
Expand Down Expand Up @@ -85,3 +111,6 @@ add_dependencies(xbe_iso cxbe_convert)

set_target_properties(cxbe_convert PROPERTIES OUTPUT_QUIET ON)
set_target_properties(xbe_iso PROPERTIES OUTPUT_QUIET ON)

#add_xbe(xbe_file "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.exe" TITLE "${XBE_TITLE}" RESOURCE_DIRS xbe)
#add_xiso(xiso xbe_file XISO ${XBOX_ISO})
35 changes: 35 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,37 @@
# Moonlight-XboxOG
Port of Moonlight for the Original Xbox. Unlikely to ever actually work. Do NOT use.


## Build

### Pre Build

1. Install nxdk prerequisites. Then run the following from mingw64 or bash shell:

```bash
nxdk_dir="$(pwd)/third-party/nxdk"
eval "$(${nxdk_dir}/bin/activate -s)"
cd "${nxdk_dir}"
make NXDK_ONLY=y
make tools
```

### Configure

1. Create build directory

```bash
mkdir -p build
```

2. Configure the project

```bash
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE="${nxdk_dir}/share/toolchain-nxdk.cmake"
```

### Build

```bash
cmake --build build
```
108 changes: 108 additions & 0 deletions cmake/modules/FindNXDK.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
if(NOT TARGET NXDK::NXDK)
add_library(nxdk STATIC IMPORTED)
set_target_properties(
nxdk
PROPERTIES
IMPORTED_LOCATION "${NXDK_DIR}/lib/libnxdk.lib"
)

add_library(nxdk_automount_d STATIC IMPORTED)
set_target_properties(
nxdk_automount_d
PROPERTIES
IMPORTED_LOCATION "${NXDK_DIR}/lib/libnxdk_automount_d.lib"
)

add_library(nxdk_hal STATIC IMPORTED)
set_target_properties(
nxdk_hal
PROPERTIES
IMPORTED_LOCATION "${NXDK_DIR}/lib/libnxdk_hal.lib"
)

add_library(nxdk_net STATIC IMPORTED)
set_target_properties(
nxdk_net
PROPERTIES
IMPORTED_LOCATION "${NXDK_DIR}/lib/libnxdk_net.lib"
)

add_library(nxdk_usb STATIC IMPORTED)
set_target_properties(
nxdk_usb
PROPERTIES
IMPORTED_LOCATION "${NXDK_DIR}/lib/nxdk_usb.lib"
)

add_library(pbkit STATIC IMPORTED)
set_target_properties(
pbkit
PROPERTIES
IMPORTED_LOCATION "${NXDK_DIR}/lib/libpbkit.lib"
)

add_library(pdclib STATIC IMPORTED)
set_target_properties(
pdclib
PROPERTIES
IMPORTED_LOCATION "${NXDK_DIR}/lib/libpdclib.lib"
)

add_library(winapi STATIC IMPORTED)
set_target_properties(
winapi
PROPERTIES
IMPORTED_LOCATION "${NXDK_DIR}/lib/libwinapi.lib"
)

add_library(winmm STATIC IMPORTED)
set_target_properties(
winmm
PROPERTIES
IMPORTED_LOCATION "${NXDK_DIR}/lib/winmm.lib"
)

add_library(xboxrt STATIC IMPORTED)
set_target_properties(
xboxrt
PROPERTIES
IMPORTED_LOCATION "${NXDK_DIR}/lib/libxboxrt.lib"
)

add_library(zlib STATIC IMPORTED)
set_target_properties(
zlib
PROPERTIES
IMPORTED_LOCATION "${NXDK_DIR}/lib/libzlib.lib"
)

add_library(NXDK::NXDK INTERFACE IMPORTED)
target_link_libraries(
NXDK::NXDK
INTERFACE
nxdk
nxdk_automount_d
nxdk_hal
nxdk_net
nxdk_usb
pbkit
pdclib
winapi
winmm
xboxrt
zlib
)
endif()

if(NOT TARGET NXDK::NXDK_CXX)

add_library(nxdk_cxx STATIC IMPORTED)
set_target_properties(
nxdk_cxx
PROPERTIES
IMPORTED_LOCATION "${NXDK_DIR}/lib/libc++.lib"
)

add_library(NXDK::NXDK_CXX INTERFACE IMPORTED)
target_link_libraries(NXDK::NXDK_CXX INTERFACE nxdk_cxx)
endif()
6 changes: 6 additions & 0 deletions cmake/modules/FindNXDK_SDL2.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
if(NOT TARGET NXDK::SDL2)
find_package(PkgConfig REQUIRED)
pkg_check_modules(SDL2 REQUIRED IMPORTED_TARGET sdl2)

add_library(NXDK::SDL2 ALIAS PkgConfig::SDL2)
endif()
37 changes: 37 additions & 0 deletions cmake/modules/FindNXDK_SDL2_Image.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
if (NOT TARGET NXDK::SDL2_Image)

add_library(nxdk_sdl2_image STATIC IMPORTED)
set_target_properties(
nxdk_sdl2_image
PROPERTIES
IMPORTED_LOCATION "${NXDK_DIR}/lib/libSDL2_image.lib"
)

add_library(nxdk_jpeg STATIC IMPORTED)
set_target_properties(
nxdk_jpeg
PROPERTIES
IMPORTED_LOCATION "${NXDK_DIR}/lib/libjpeg.lib"
)

add_library(nxdk_png STATIC IMPORTED)
set_target_properties(
nxdk_png
PROPERTIES
IMPORTED_LOCATION "${NXDK_DIR}/lib/libpng.lib"
)

add_library(NXDK::SDL2_Image INTERFACE IMPORTED)
target_link_libraries(
NXDK::SDL2_Image
INTERFACE
nxdk_sdl2_image
nxdk_jpeg
nxdk_png
)
target_include_directories(
NXDK::SDL2_Image
SYSTEM INTERFACE
"${NXDK_DIR}/lib/sdl/SDL2_image"
)
endif ()
Loading

0 comments on commit fd4d160

Please sign in to comment.