use ifdefs for all d3drm backends, cpack to generate vpk

This commit is contained in:
olebeck 2025-07-09 18:16:49 +02:00
parent 6c8abe85c4
commit d360fa290b
7 changed files with 54 additions and 83 deletions

View File

@ -132,7 +132,7 @@ jobs:
run: cmake --build build --verbose --config Release run: cmake --build build --verbose --config Release
- name: Package (CPack) - name: Package (CPack)
if: ${{ !matrix.n3ds && !matrix.vita }} if: ${{ !matrix.n3ds }}
run: | run: |
cd build cd build
success=0 success=0
@ -181,13 +181,6 @@ jobs:
mv *.3dsx dist/ mv *.3dsx dist/
mv *.cia dist/ mv *.cia dist/
- name: Package (Vita)
if: ${{ matrix.vita }}
run: |
cd build
mkdir dist
mv *.vpk dist/
- name: Upload Build Artifacts - name: Upload Build Artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:

View File

@ -69,6 +69,7 @@ if (DOWNLOAD_DEPENDENCIES)
SDL3 SDL3
GIT_REPOSITORY "https://github.com/Helloyunho/SDL3-uwp.git" GIT_REPOSITORY "https://github.com/Helloyunho/SDL3-uwp.git"
GIT_TAG "main" GIT_TAG "main"
UPDATE_DISCONNECTED TRUE
EXCLUDE_FROM_ALL EXCLUDE_FROM_ALL
) )
else() else()
@ -86,6 +87,7 @@ if (DOWNLOAD_DEPENDENCIES)
iniparser iniparser
GIT_REPOSITORY "https://gitlab.com/iniparser/iniparser.git" GIT_REPOSITORY "https://gitlab.com/iniparser/iniparser.git"
GIT_TAG "main" GIT_TAG "main"
UPDATE_DISCONNECTED TRUE
EXCLUDE_FROM_ALL EXCLUDE_FROM_ALL
) )
block() block()
@ -711,7 +713,7 @@ endif()
if(BUILD_SHARED_LIBS) if(BUILD_SHARED_LIBS)
list(APPEND install_extra_targets lego1) list(APPEND install_extra_targets lego1)
endif() endif()
if (NOT (NINTENDO_3DS OR WINDOWS_STORE)) if (NOT (NINTENDO_3DS OR WINDOWS_STORE OR VITA))
install(TARGETS isle ${install_extra_targets} install(TARGETS isle ${install_extra_targets}
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
@ -822,63 +824,31 @@ if(VITA)
vita_create_self(isle.self isle UNSAFE) vita_create_self(isle.self isle UNSAFE)
list(APPEND VPK_FILE_ARGS FILE ${ISLE_CONFIG_SELF} isle-config.self) add_custom_command(
list(APPEND VPK_FILE_ARGS FILE ${ISLE_CONFIG_RCO} config_plugin.rco) OUTPUT param.sfo
COMMAND ${VITA_MKSFOEX} -s APP_VER=${VITA_VERSION} -s TITLE_ID=${VITA_TITLEID} \"${VITA_APP_NAME}\" param.sfo
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/icon0.png sce_sys/icon0.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/pic0.png sce_sys/pic0.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/livearea/contents/bg.png sce_sys/livearea/contents/bg.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/livearea/contents/configure.png sce_sys/livearea/contents/configure.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/livearea/contents/gate.png sce_sys/livearea/contents/gate.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/livearea/contents/logo.png sce_sys/livearea/contents/logo.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/livearea/contents/template.xml sce_sys/livearea/contents/template.xml)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/001.png sce_sys/manual/001.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/002.png sce_sys/manual/002.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/003.png sce_sys/manual/003.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/004.png sce_sys/manual/004.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/005.png sce_sys/manual/005.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/006.png sce_sys/manual/006.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/007.png sce_sys/manual/007.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/008.png sce_sys/manual/008.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/009.png sce_sys/manual/009.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/010.png sce_sys/manual/010.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/011.png sce_sys/manual/011.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/012.png sce_sys/manual/012.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/013.png sce_sys/manual/013.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/014.png sce_sys/manual/014.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/015.png sce_sys/manual/015.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/016.png sce_sys/manual/016.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/017.png sce_sys/manual/017.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/018.png sce_sys/manual/018.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/019.png sce_sys/manual/019.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/020.png sce_sys/manual/020.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/021.png sce_sys/manual/021.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/022.png sce_sys/manual/022.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/023.png sce_sys/manual/023.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/024.png sce_sys/manual/024.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/025.png sce_sys/manual/025.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/026.png sce_sys/manual/026.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/027.png sce_sys/manual/027.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/028.png sce_sys/manual/028.png)
vita_create_vpk(isle.vpk ${VITA_TITLEID} isle.self
VERSION ${VITA_VERSION}
NAME ${VITA_APP_NAME}
${VPK_FILE_ARGS}
)
add_dependencies(isle.vpk-vpk
isle-config.self-self
config_plugin.rco_target
) )
add_custom_target(param_sfo ALL DEPENDS param.sfo)
add_dependencies(isle param_sfo)
add_dependencies(isle config_plugin.rco_target)
install(FILES "$<TARGET_FILE_DIR:isle>/isle.vpk" DESTINATION "${CMAKE_INSTALL_BINDIR}") set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF)
set(CPACK_ARCHIVE_FILE_EXTENSION "vpk")
set(CPACK_PACKAGE_FILE_NAME "lego-island-${PROJECT_VERSION}")
install(FILES "$<TARGET_FILE_DIR:isle>/isle.self" DESTINATION . RENAME "eboot.bin")
install(FILES "$<TARGET_FILE_DIR:isle-config>/isle-config.self" DESTINATION .)
install(FILES "$<TARGET_FILE_DIR:isle-config>/config_plugin.rco" DESTINATION .)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/param.sfo" DESTINATION .)
install(DIRECTORY packaging/vita/sce_sys DESTINATION .)
endif() endif()
if(MSVC) if(MSVC)
set(CPACK_GENERATOR ZIP) set(CPACK_GENERATOR ZIP)
elseif(APPLE AND NOT IOS) elseif(APPLE AND NOT IOS)
set(CPACK_GENERATOR DragNDrop) set(CPACK_GENERATOR DragNDrop)
elseif(VITA)
set(CPACK_GENERATOR ZIP)
else() else()
set(CPACK_GENERATOR TGZ) set(CPACK_GENERATOR TGZ)
endif() endif()

View File

@ -8,6 +8,7 @@ include(FetchContent)
FetchContent_Declare( FetchContent_Declare(
ScePaf_External ScePaf_External
URL https://github.com/olebeck/ScePaf/releases/download/continuous/ScePaf-1.0.0.zip URL https://github.com/olebeck/ScePaf/releases/download/continuous/ScePaf-1.0.0.zip
UPDATE_DISCONNECTED TRUE
) )
FetchContent_MakeAvailable(ScePaf_External) FetchContent_MakeAvailable(ScePaf_External)
@ -52,6 +53,3 @@ endblock()
include(${scepaf_external_SOURCE_DIR}/rco.cmake) include(${scepaf_external_SOURCE_DIR}/rco.cmake)
make_rco(cxml/config_plugin.xml config_plugin.rco) make_rco(cxml/config_plugin.xml config_plugin.rco)
set(ISLE_CONFIG_SELF ${CMAKE_CURRENT_BINARY_DIR}/isle-config.self PARENT_SCOPE)
set(ISLE_CONFIG_RCO ${CMAKE_CURRENT_BINARY_DIR}/config_plugin.rco PARENT_SCOPE)

View File

@ -840,7 +840,7 @@ MxResult IsleApp::SetupWindow()
SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_HEIGHT_NUMBER, g_targetHeight); SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_HEIGHT_NUMBER, g_targetHeight);
SDL_SetBooleanProperty(props, SDL_PROP_WINDOW_CREATE_FULLSCREEN_BOOLEAN, m_fullScreen); SDL_SetBooleanProperty(props, SDL_PROP_WINDOW_CREATE_FULLSCREEN_BOOLEAN, m_fullScreen);
SDL_SetStringProperty(props, SDL_PROP_WINDOW_CREATE_TITLE_STRING, WINDOW_TITLE); SDL_SetStringProperty(props, SDL_PROP_WINDOW_CREATE_TITLE_STRING, WINDOW_TITLE);
#if defined(MINIWIN) && !defined(__3DS__) && !defined(WINDOWS_STORE) && !defined(__vita__) #if defined(MINIWIN) && (defined(USE_OPENGLES2) || defined(USE_OPENGL1))
SDL_SetBooleanProperty(props, SDL_PROP_WINDOW_CREATE_OPENGL_BOOLEAN, true); SDL_SetBooleanProperty(props, SDL_PROP_WINDOW_CREATE_OPENGL_BOOLEAN, true);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);

View File

@ -20,11 +20,6 @@ add_library(miniwin STATIC EXCLUDE_FROM_ALL
src/d3drm/d3drmtexture.cpp src/d3drm/d3drmtexture.cpp
src/d3drm/d3drmviewport.cpp src/d3drm/d3drmviewport.cpp
src/internal/meshutils.cpp src/internal/meshutils.cpp
# D3DRM backends
src/d3drm/backends/sdl3gpu/renderer.cpp
src/d3drm/backends/sdl3gpu/shaders/generated/ShaderIndex.cpp
src/d3drm/backends/software/renderer.cpp
) )
target_compile_definitions(miniwin PRIVATE target_compile_definitions(miniwin PRIVATE
@ -91,6 +86,7 @@ if(NINTENDO_3DS)
ctr_add_shader_library(vshader src/d3drm/backends/citro3d/vshader.v.pica) ctr_add_shader_library(vshader src/d3drm/backends/citro3d/vshader.v.pica)
dkp_add_embedded_binary_library(3ds_shaders vshader) dkp_add_embedded_binary_library(3ds_shaders vshader)
target_link_libraries(miniwin PRIVATE ${CITRO3D_LIBRARY} 3ds_shaders) target_link_libraries(miniwin PRIVATE ${CITRO3D_LIBRARY} 3ds_shaders)
list(APPEND GRAPHICS_BACKENDS USE_CITRO3D)
else() else()
message(STATUS "🧩 Citro3D support not enabled") message(STATUS "🧩 Citro3D support not enabled")
endif() endif()
@ -102,12 +98,26 @@ if(WIN32 AND NOT WINDOWS_STORE)
src/d3drm/backends/directx9/renderer.cpp src/d3drm/backends/directx9/renderer.cpp
) )
target_link_libraries(miniwin PRIVATE d3d9) target_link_libraries(miniwin PRIVATE d3d9)
list(APPEND GRAPHICS_BACKENDS USE_DIRECTX9)
endif() endif()
if(WINDOWS_STORE) if(WINDOWS_STORE)
add_compile_definitions(WINDOWS_STORE) add_compile_definitions(WINDOWS_STORE)
endif() endif()
if(USE_SDL_GPU IN_LIST GRAPHICS_BACKENDS)
target_sources(miniwin PRIVATE
src/d3drm/backends/sdl3gpu/renderer.cpp
src/d3drm/backends/sdl3gpu/shaders/generated/ShaderIndex.cpp
)
endif()
if(USE_SOFTWARE_RENDER IN_LIST GRAPHICS_BACKENDS)
target_sources(miniwin PRIVATE
src/d3drm/backends/software/renderer.cpp
)
endif()
target_compile_definitions(miniwin PUBLIC MINIWIN) target_compile_definitions(miniwin PUBLIC MINIWIN)
target_include_directories(miniwin target_include_directories(miniwin
@ -119,7 +129,7 @@ target_link_libraries(miniwin PUBLIC miniwin-headers)
target_link_libraries(miniwin PRIVATE SDL3::SDL3) target_link_libraries(miniwin PRIVATE SDL3::SDL3)
target_compile_definitions(miniwin PRIVATE ${GRAPHICS_BACKENDS}) target_compile_definitions(miniwin PUBLIC ${GRAPHICS_BACKENDS})
# Shader stuff # Shader stuff

View File

@ -13,13 +13,13 @@
#ifdef USE_OPENGLES2 #ifdef USE_OPENGLES2
#include "d3drmrenderer_opengles2.h" #include "d3drmrenderer_opengles2.h"
#endif #endif
#ifdef __3DS__ #ifdef USE_CITRO3D
#include "d3drmrenderer_citro3d.h" #include "d3drmrenderer_citro3d.h"
#endif #endif
#ifdef _WIN32 #ifdef USE_DIRECTX9
#include "d3drmrenderer_directx9.h" #include "d3drmrenderer_directx9.h"
#endif #endif
#ifdef __vita__ #ifdef USE_GXM
#include "d3drmrenderer_gxm.h" #include "d3drmrenderer_gxm.h"
#endif #endif
#ifdef USE_SDL_GPU #ifdef USE_SDL_GPU
@ -175,17 +175,17 @@ HRESULT Direct3DRMImpl::CreateDeviceFromSurface(
DDRenderer = OpenGL1Renderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight); DDRenderer = OpenGL1Renderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight);
} }
#endif #endif
#ifdef __3DS__ #ifdef USE_CITRO3D
else if (SDL_memcmp(&guid, &Citro3D_GUID, sizeof(GUID)) == 0) { else if (SDL_memcmp(&guid, &Citro3D_GUID, sizeof(GUID)) == 0) {
DDRenderer = new Citro3DRenderer(DDSDesc.dwWidth, DDSDesc.dwHeight); DDRenderer = new Citro3DRenderer(DDSDesc.dwWidth, DDSDesc.dwHeight);
} }
#endif #endif
#if defined(_WIN32) && !defined(WINDOWS_STORE) #ifdef USE_DIRECTX9
else if (SDL_memcmp(&guid, &DirectX9_GUID, sizeof(GUID)) == 0) { else if (SDL_memcmp(&guid, &DirectX9_GUID, sizeof(GUID)) == 0) {
DDRenderer = DirectX9Renderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight); DDRenderer = DirectX9Renderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight);
} }
#endif #endif
#ifdef __vita__ #ifdef USE_GXM
else if (SDL_memcmp(&guid, &GXM_GUID, sizeof(GUID)) == 0) { else if (SDL_memcmp(&guid, &GXM_GUID, sizeof(GUID)) == 0) {
DDRenderer = GXMRenderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight); DDRenderer = GXMRenderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight);
} }

View File

@ -4,13 +4,13 @@
#ifdef USE_OPENGLES2 #ifdef USE_OPENGLES2
#include "d3drmrenderer_opengles2.h" #include "d3drmrenderer_opengles2.h"
#endif #endif
#ifdef __3DS__ #ifdef USE_CITRO3D
#include "d3drmrenderer_citro3d.h" #include "d3drmrenderer_citro3d.h"
#endif #endif
#if defined(_WIN32) && !defined(WINDOWS_STORE) #if USE_DIRECTX9
#include "d3drmrenderer_directx9.h" #include "d3drmrenderer_directx9.h"
#endif #endif
#ifdef __vita__ #ifdef USE_GXM
#include "d3drmrenderer_gxm.h" #include "d3drmrenderer_gxm.h"
#endif #endif
#ifdef USE_SDL_GPU #ifdef USE_SDL_GPU
@ -248,13 +248,13 @@ HRESULT DirectDrawImpl::EnumDevices(LPD3DENUMDEVICESCALLBACK cb, void* ctx)
#ifdef USE_OPENGL1 #ifdef USE_OPENGL1
OpenGL1Renderer_EnumDevice(cb, ctx); OpenGL1Renderer_EnumDevice(cb, ctx);
#endif #endif
#ifdef __3DS__ #ifdef USE_CITRO3D
Citro3DRenderer_EnumDevice(cb, ctx); Citro3DRenderer_EnumDevice(cb, ctx);
#endif #endif
#if defined(_WIN32) && !defined(WINDOWS_STORE) #ifdef USE_DIRECTX9
DirectX9Renderer_EnumDevice(cb, ctx); DirectX9Renderer_EnumDevice(cb, ctx);
#endif #endif
#ifdef __vita__ #ifdef USE_GXM
GXMRenderer_EnumDevice(cb, ctx); GXMRenderer_EnumDevice(cb, ctx);
#endif #endif
#ifdef USE_SOFTWARE_RENDER #ifdef USE_SOFTWARE_RENDER
@ -378,12 +378,12 @@ HRESULT DirectDrawImpl::CreateDevice(
DDRenderer = new Citro3DRenderer(DDSDesc.dwWidth, DDSDesc.dwHeight); DDRenderer = new Citro3DRenderer(DDSDesc.dwWidth, DDSDesc.dwHeight);
} }
#endif #endif
#if defined(_WIN32) && !defined(WINDOWS_STORE) #ifdef USE_DIRECTX9
else if (SDL_memcmp(&guid, &DirectX9_GUID, sizeof(GUID)) == 0) { else if (SDL_memcmp(&guid, &DirectX9_GUID, sizeof(GUID)) == 0) {
DDRenderer = DirectX9Renderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight); DDRenderer = DirectX9Renderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight);
} }
#endif #endif
#ifdef __vita__ #ifdef USE_GXM
else if (SDL_memcmp(&guid, &GXM_GUID, sizeof(GUID)) == 0) { else if (SDL_memcmp(&guid, &GXM_GUID, sizeof(GUID)) == 0) {
DDRenderer = GXMRenderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight); DDRenderer = GXMRenderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight);
} }