Browse Source

Build for PSP

pull/6807/head
Anders Jenbo 3 years ago
parent
commit
49a4b2014b
  1. 11
      .circleci/config.yml
  2. 4
      CMake/Platforms.cmake
  3. 9
      CMake/platforms/psp_defs.cmake
  4. 12
      CMakeLists.txt
  5. BIN
      Packaging/psp/background.png
  6. BIN
      Packaging/psp/icon.png
  7. 2
      Source/multi.cpp
  8. 8
      Source/storm/storm_svid.cpp
  9. 4
      Source/utils/display.cpp

11
.circleci/config.yml

@ -48,6 +48,16 @@ jobs:
- run: cmake -S. -Bbuild -GNinja -DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo
- run: cmake --build build -j 2
- store_artifacts: {path: ./build/devilutionx.vpk, destination: devilutionx.vpk}
psp:
docker:
- image: pspdev/pspdev
working_directory: ~/repo
steps:
- checkout
- run: apk --no-cache add git cmake gettext
- run: psp-cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_PRX=1 -DENC_PRX=1
- run: cmake --build build -j 2
- store_artifacts: {path: ./EBOOT.PBP, destination: EBOOT.PBP}
workflows:
version: 2
@ -57,3 +67,4 @@ workflows:
- 3ds
- amigaos-m68k
- vita
- psp

4
CMake/Platforms.cmake

@ -52,6 +52,10 @@ if(VITA)
include(platforms/vita)
endif()
if(PSP)
include(platforms/psp_defs)
endif()
if(PS4)
include(platforms/ps4)
endif()

9
CMake/platforms/psp_defs.cmake

@ -0,0 +1,9 @@
set(NONET ON)
set(DEVILUTIONX_SYSTEM_SDL_IMAGE OFF)
set(BUILD_TESTING OFF)
set(PREFILL_PLAYER_NAME ON)
set(NOEXIT ON)
set(DEFAULT_WIDTH 480)
set(DEFAULT_HEIGHT 272)

12
CMakeLists.txt

@ -240,7 +240,7 @@ endif()
#
# PS4 toolchain crashes in `create-fself` when linking with these flags, so we exclude it:
# https://github.com/PacBrew/ps4-openorbis/issues/8
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" AND NOT PS4)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" AND NOT PS4 AND NOT PSP)
add_compile_options("$<$<NOT:$<CONFIG:Debug>>:-ffunction-sections;-fdata-sections>")
if(APPLE)
add_link_options("$<$<NOT:$<CONFIG:Debug>>:LINKER:-dead_strip>")
@ -501,6 +501,16 @@ if(NXDK)
add_custom_target(nxdk_xbe DEPENDS "${_xbe_path}")
endif()
if(PSP)
create_pbp_file(
TARGET ${BIN_TARGET}
ICON_PATH "${PROJECT_SOURCE_DIR}/Packaging/psp/icon.png"
BACKGROUND_PATH "${PROJECT_SOURCE_DIR}/Packaging/psp/background.png"
PREVIEW_PATH NULL
TITLE ${PROJECT_NAME}
)
endif()
if(CPACK AND (APPLE OR BUILD_ASSETS_MPQ OR SRC_DIST))
if(WIN32)
if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")

BIN
Packaging/psp/background.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
Packaging/psp/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 968 B

2
Source/multi.cpp

@ -678,8 +678,10 @@ void multi_process_network_packets()
}
HandleAllPackets(playerId, (const byte *)(pkt + 1), dwMsgSize - sizeof(TPktHdr));
}
#ifndef PSP
if (SErrGetLastError() != STORM_ERROR_NO_MESSAGES_WAITING)
nthread_terminate_game("SNetReceiveMsg");
#endif
CheckPlayerInfoTimeouts();
}

8
Source/storm/storm_svid.cpp

@ -285,7 +285,11 @@ bool SVidPlayBegin(const char *filename, int flags)
if (renderer != nullptr) {
int renderWidth = static_cast<int>(SVidWidth);
int renderHeight = static_cast<int>(SVidHeight);
#ifdef PSP
texture = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_ABGR1555, SDL_TEXTUREACCESS_STREAMING, renderWidth, renderHeight);
#else
texture = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, renderWidth, renderHeight);
#endif
if (SDL_RenderSetLogicalSize(renderer, renderWidth, renderHeight) <= -1) {
ErrSdl();
}
@ -379,7 +383,11 @@ void SVidPlayEnd()
#ifndef USE_SDL1
if (renderer != nullptr) {
#ifdef PSP
texture = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_ABGR1555, SDL_TEXTUREACCESS_STREAMING, gnScreenWidth, gnScreenHeight);
#else
texture = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, gnScreenWidth, gnScreenHeight);
#endif
if (renderer != nullptr && SDL_RenderSetLogicalSize(renderer, gnScreenWidth, gnScreenHeight) <= -1) {
ErrSdl();
}

4
Source/utils/display.cpp

@ -387,7 +387,11 @@ void ReinitializeTexture()
auto quality = StrCat(static_cast<int>(*sgOptions.Graphics.scaleQuality));
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, quality.c_str());
#ifdef PSP
texture = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_ABGR1555, SDL_TEXTUREACCESS_STREAMING, gnScreenWidth, gnScreenHeight);
#else
texture = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, gnScreenWidth, gnScreenHeight);
#endif
}
void ReinitializeIntegerScale()

Loading…
Cancel
Save