diff --git a/.github/workflows/switch.yml b/.github/workflows/switch.yml new file mode 100644 index 0000000..abf3293 --- /dev/null +++ b/.github/workflows/switch.yml @@ -0,0 +1,27 @@ +name: Nintendo Switch Build +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + container: devkitpro/devkita64:latest + + steps: + - uses: actions/checkout@v2 + with: + submodules: true + + - name: Build + run: | + mkdir -p out/switch + cd out/switch + /opt/devkitpro/portlibs/switch/bin/aarch64-none-elf-cmake -DCMAKE_BUILD_TYPE=Release ../../src/ + make + mkdir system3 + mv system3.* system3/ + + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: system3-switch + path: out/switch/system3 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 53bf2b3..d104677 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -178,6 +178,22 @@ target_sources(system3 PRIVATE sys/nact_sys3.cpp ) +if(NINTENDO_SWITCH) + set(RESOURCE_PATH romfs:/) + + nx_generate_nacp(system3.nacp + NAME "system3" + AUTHOR "kichikuou" + VERSION "0.8.0" + ) + + nx_create_nro(system3 + NACP system3.nacp + ICON "../switch/icon.jpg" + ROMFS "../resources" + ) +endif() + target_compile_definitions(system3 PRIVATE $<$:_DEBUG_CONSOLE> RESOURCE_PATH="${RESOURCE_PATH}") diff --git a/src/sdlmain.cpp b/src/sdlmain.cpp index 912fc13..1ae4498 100644 --- a/src/sdlmain.cpp +++ b/src/sdlmain.cpp @@ -13,6 +13,9 @@ #include #include #endif +#ifdef __SWITCH__ +#include +#endif SDL_Window* g_window; SDL_Renderer* g_renderer; @@ -20,6 +23,9 @@ NACT* g_nact; int main(int argc, char *argv[]) { +#ifdef __SWITCH__ + romfsInit(); +#endif Config config(argc, argv); if (!config.timidity_cfg.empty()) { @@ -94,6 +100,10 @@ int main(int argc, char *argv[]) SDL_DestroyWindow(g_window); SDL_Quit(); +#ifdef __SWITCH__ + romfsExit(); +#endif + return 0; } diff --git a/switch/icon.jpg b/switch/icon.jpg new file mode 100644 index 0000000..09a4cd8 Binary files /dev/null and b/switch/icon.jpg differ