mirror of
https://forgejo.xatacraft.ru/Sunshine/mkxp-sunshine.git
synced 2026-08-19 21:39:57 +00:00
Porting patchea for DOS, Android, PS Vita, PS2 and other
This commit is contained in:
parent
999176c19b
commit
9a4646f2bd
5 changed files with 104 additions and 39 deletions
|
|
@ -6,7 +6,6 @@ include(FindPackageHandleStandardArgs)
|
|||
option(STEAM "Build for Steam" OFF)
|
||||
option(DEBUG "Debug mode" ON)
|
||||
option(NATIVE "Use native instructions(for local use only)" OFF)
|
||||
option(MODLOADER "Build with modloader" ON)
|
||||
|
||||
#Configuration
|
||||
set(CMAKE_DISABLE_IN_SOURCE_BUILD TRUE)
|
||||
|
|
@ -158,10 +157,8 @@ elseif(BSD)
|
|||
list(APPEND MAIN_SOURCE src/xdg-user-dir-lookup.c)
|
||||
list(APPEND MAIN_HEADERS src/xdg-user-dir-lookup.h)
|
||||
set(STEAM OFF)
|
||||
set(MODLOADER OFF)
|
||||
elseif(EMSCRIPTEN)
|
||||
set(STEAM OFF)
|
||||
set(MODLOADER OFF)
|
||||
set(CMAKE_EXECUTABLE_SUFFIX ".html" CACHE INTERNAL "")
|
||||
elseif(APPLE)
|
||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND cmake -P "${CMAKE_SOURCE_DIR}/patches/mac/CompleteBundle.cmake" VERBATIM)
|
||||
|
|
@ -367,11 +364,9 @@ find_package(Ruby 3.0 REQUIRED COMPONENTS Development)
|
|||
pkg_check_modules(VORBISFILE REQUIRED vorbisfile)
|
||||
find_package_handle_standard_args(pixman-1 DEFAULT_MSG PIXMAN_LIBRARY PIXMAN_INCLUDE_DIR)
|
||||
mark_as_advanced(PIXMAN_INCLUDE_DIR PIXMAN_LIBRARY)
|
||||
if(MODLOADER)
|
||||
find_package(OpenSSL CONFIG REQUIRED COMPONENTS Crypto)
|
||||
pkg_check_modules(SIGC2 REQUIRED sigc++-2.0)
|
||||
pkg_check_modules(LIBZIP REQUIRED libzip)
|
||||
endif()
|
||||
find_package(OpenSSL CONFIG REQUIRED COMPONENTS Crypto)
|
||||
pkg_check_modules(SIGC2 REQUIRED sigc++-2.0)
|
||||
pkg_check_modules(LIBZIP REQUIRED libzip)
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE ${DEFINES})
|
||||
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE src include ${PIXMAN_INCLUDE_DIR} ${SIGC2_INCLUDE_DIRS}
|
||||
|
|
@ -384,12 +379,8 @@ physfs ${PIXMAN_LIBRARY} ${SIGC2_LIBRARIES} ${PLATFORM_LIBRARIES}
|
|||
${Ruby_LIBRARIES} Boost::boost Boost::chrono ${Boost_LIBRARIES}
|
||||
${VORBISFILE_LIBRARIES} ZLIB::ZLIB ${PLATFORM_LIBS})
|
||||
|
||||
if(MODLOADER)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE ${LIBZIP_INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIR})
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBZIP_LIBRARIES} OpenSSL::Crypto)
|
||||
else()
|
||||
|
||||
endif()
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE ${LIBZIP_INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIR})
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBZIP_LIBRARIES} OpenSSL::Crypto)
|
||||
|
||||
if(STEAM)
|
||||
add_subdirectory(steamshim_parent)
|
||||
|
|
|
|||
|
|
@ -12,11 +12,11 @@
|
|||
| Solaris/OpenSolaris | 1% | В работе |
|
||||
| RedoxOS | 0% | Не хватает библеотек |
|
||||
| Android | 4% | В работе |
|
||||
| PS Vita | 0% | В работе |
|
||||
| PS Vita | 1% | В работе |
|
||||
| PSP | 1% | В работе |
|
||||
| Emspritein(web) | 11% | Нет хватает библеотек<br> \* Нужно написать порт библеотеки libsigc++2<br>(А лучше 3 и переписать движок)<br> \* Проблемы с компиляцией и зависимостями |
|
||||
| HaikuOS | 0% | В работе |
|
||||
| DOS | 0.2% | Не в работе |
|
||||
| HaikuOS | 1% | В работе |
|
||||
| DOS | 1% | Не в работе |
|
||||
| Ubuntu Touch | 61% | Будет почти готово тогда когда Linux порт будет доведён до ума |
|
||||
| Аврора ОС | 0% | Возможно, но пока не в работе |
|
||||
| ChromeOS/ChromiumOS | 0.4% | Неизвестное |
|
||||
|
|
|
|||
73
src/define.h
73
src/define.h
|
|
@ -1,5 +1,70 @@
|
|||
#if defined(__linux__) || defined(__sun) || defined(__APPLE__) || \
|
||||
defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || \
|
||||
defined(__GNU__) || defined(__hurd__) || defined(__DragonFly__)
|
||||
#define unix_like 1
|
||||
#include <SDL3/SDL_platform_defines.h>
|
||||
|
||||
#if defined(SDL_PLATFORM_AIX) || defined(SDL_PLATFORM_BSDI) || defined(SDL_PLATFORM_FREEBSD) || \
|
||||
defined(SDL_PLATFORM_HPUX) || defined(SDL_PLATFORM_HURD) || defined(SDL_PLATFORM_IRIX) || \
|
||||
defined(SDL_PLATFORM_LINUX) || defined(SDL_PLATFORM_MACOS) || defined(SDL_PLATFORM_NETBSD) || \
|
||||
defined(SDL_PLATFORM_OPENBSD) || defined(SDL_PLATFORM_SOLARIS) || defined(SDL_PLATFORM_UNIX) || \
|
||||
defined(SDL_PLATFORM_APPLE) || defined(SDL_PLATFORM_OSF)
|
||||
#define unix_like 1
|
||||
#endif
|
||||
|
||||
#if defined(SDL_PLATFORM_DOS)
|
||||
#define dos 1
|
||||
#endif
|
||||
|
||||
#if defined(SDL_WINAPI_FAMILY_PHONE) || defined(SDL_PLATFORM_WINDOWS) || defined(SDL_PLATFORM_WIN32) || defined(SDL_PLATFORM_WINGDK)
|
||||
#define windows 1
|
||||
#endif
|
||||
|
||||
#if defined(SDL_PLATFORM_XBOXSERIES) || defined(SDL_PLATFORM_XBOXONE)
|
||||
#define xbox 1
|
||||
#endif
|
||||
|
||||
#if SDL_PLATFORM_3DS
|
||||
#define 3ds 1
|
||||
#endif
|
||||
|
||||
#if SDL_PLATFORM_ANDROID
|
||||
#define android 1
|
||||
#endif
|
||||
|
||||
#if defined(SDL_PLATFORM_APPLE) || defined(SDL_PLATFORM_TVOS) || defined(SDL_PLATFORM_VISIONOS)
|
||||
#define apple 1
|
||||
#endif
|
||||
|
||||
#if SDL_PLATFORM_EMSCRIPTEN
|
||||
#define web 1
|
||||
#endif
|
||||
|
||||
#if SDL_PLATFORM_HAIKU
|
||||
#define haiku 1
|
||||
#endif
|
||||
|
||||
#if SDL_PLATFORM_IOS
|
||||
#define ios 1
|
||||
#endif
|
||||
|
||||
#if defined(SDL_PLATFORM_OS2)
|
||||
#define os2 1
|
||||
#endif
|
||||
|
||||
#if SDL_PLATFORM_PS2
|
||||
#define ps2 1
|
||||
#endif
|
||||
|
||||
#if SDL_PLATFORM_PSP
|
||||
#define psp 1
|
||||
#endif
|
||||
|
||||
#if SDL_PLATFORM_QNXNTO
|
||||
#define qnx 1
|
||||
#endif
|
||||
|
||||
#if SDL_PLATFORM_VITA
|
||||
#define vita 1
|
||||
#endif
|
||||
|
||||
#if SDL_PLATFORM_RISCOS
|
||||
#define riscos 1
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -32,19 +32,16 @@
|
|||
#include <SDL3/SDL_thread.h>
|
||||
#include <SDL3/SDL_touch.h>
|
||||
#include <SDL3/SDL_rect.h>
|
||||
#include <SDL3/SDL_stdinc.h>
|
||||
|
||||
#include "sharedstate.h"
|
||||
#include "graphics.h"
|
||||
#include "al-util.h"
|
||||
#include "debugwriter.h"
|
||||
|
||||
#include "oneshot.h"
|
||||
|
||||
#include <SDL3/SDL_stdinc.h>
|
||||
|
||||
#include <cstdio>
|
||||
#include <map>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
typedef void (ALC_APIENTRY *LPALCDEVICEPAUSESOFT) (ALCdevice *device);
|
||||
|
|
@ -106,9 +103,7 @@ bool EventThread::allocUserEvents(){
|
|||
}
|
||||
|
||||
EventThread::EventThread()
|
||||
: fullscreen(false),
|
||||
showCursor(true)
|
||||
{}
|
||||
: fullscreen(false), showCursor(true){}
|
||||
|
||||
void EventThread::process(RGSSThreadData &rtData){
|
||||
SDL_Event event;
|
||||
|
|
@ -128,7 +123,7 @@ void EventThread::process(RGSSThreadData &rtData){
|
|||
fps.displayCounter = 0;
|
||||
fps.acc = 0;
|
||||
fps.accDiv = 0;
|
||||
|
||||
|
||||
if (rtData.config.printFPS)
|
||||
fps.sendUpdates.set();
|
||||
|
||||
|
|
@ -157,7 +152,7 @@ void EventThread::process(RGSSThreadData &rtData){
|
|||
jId = ids[i];
|
||||
}
|
||||
|
||||
printf("Gamepad connected: %s", SDL_GetGamepadName(gc));
|
||||
Debug() << "Gamepad connected: " << SDL_GetGamepadName(gc);
|
||||
|
||||
if (i > 0) {
|
||||
SDL_CloseGamepad(gamepd);
|
||||
|
|
@ -269,7 +264,10 @@ void EventThread::process(RGSSThreadData &rtData){
|
|||
|
||||
/* Now process the rest */
|
||||
switch (event.type){
|
||||
case SDL_EVENT_QUIT :
|
||||
case SDL_EVENT_LOW_MEMORY:
|
||||
rb_gc();
|
||||
break;
|
||||
case SDL_EVENT_QUIT:
|
||||
if (rtData.allowExit) {
|
||||
terminate = true;
|
||||
Debug() << "[EventThread::process] EventThread termination requested";
|
||||
|
|
|
|||
27
src/main.cpp
27
src/main.cpp
|
|
@ -66,6 +66,12 @@
|
|||
#include "gamecontrollerdb.txt.xxd"
|
||||
#endif
|
||||
|
||||
#ifdef ps2
|
||||
#ifdef DEBUG
|
||||
SDL_PS2_SKIP_IOP_RESET();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static void rgssThreadError(RGSSThreadData *rtData, const std::string &msg){
|
||||
rtData->rgssErrorMsg = msg;
|
||||
rtData->ethread->requestTerminate();
|
||||
|
|
@ -215,26 +221,31 @@ static void setGamePathInRegistry() {
|
|||
//TODO handle this for Linux/Mac
|
||||
}
|
||||
int main(int argc, char *argv[]){
|
||||
#if dos
|
||||
__djgpp_nearptr_enable();
|
||||
#endif
|
||||
|
||||
SecurityManagerInit();
|
||||
startTime = boost::chrono::high_resolution_clock::now();
|
||||
loadLanguageMetadata(); //there will be a segfault on fclose if I don't move it here
|
||||
|
||||
SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, "0");
|
||||
SDL_SetHint(SDL_HINT_APP_ID, "OneshotSunshine");
|
||||
SDL_SetHint(SDL_HINT_APP_NAME, "Oneshot: Sunshine");
|
||||
SDL_SetHint(SDL_HINT_AUDIO_DEVICE_STREAM_NAME, "Oneshot: sunshine");
|
||||
SDL_SetHint(SDL_HINT_AUDIO_DEVICE_STREAM_ROLE, "Game");
|
||||
SDL_SetAppMetadata("Oneshot: Sunshine", "0.1.1", "com.catwindowteam.sunshine");
|
||||
//X11 work on *BSD,Solaris too!
|
||||
#if unix_like
|
||||
SDL_SetHint(SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR, "0");
|
||||
#if SDL_VERSION_ATLEAST(3, 4, 10)
|
||||
SDL_SetHint(SDL_HINT_VIDEO_X11_ENABLE_XSYNC_EXT, "1");
|
||||
#endif
|
||||
#elif defined(WIN32)
|
||||
#elif windows
|
||||
SDL_SetHint(SDL_HINT_WINDOWS_RAW_KEYBOARD, "1");
|
||||
#elif __ANDROID__
|
||||
#elif android
|
||||
SDL_SetHint(SDL_HINT_ANDROID_ALLOW_PERSISTENT_FOLDER_ACCESS, "1");
|
||||
#elif defined(__DJGPP__) || defined(__DOS__) || defined(__MSDOS__)
|
||||
#elif vita
|
||||
SDL_SetHint(SDL_HINT_VITA_RESOLUTION, "1080");
|
||||
#elif ps2
|
||||
SFL_SetHint(SDL_HINT_PS2_GS_MODE, "NTSC");
|
||||
#elif dos
|
||||
SDL_SetHint(SDL_HINT_DOS_ALLOW_DIRECT_FRAMEBUFFER, "1");
|
||||
#endif
|
||||
/* initialize SDL first */
|
||||
|
|
@ -273,7 +284,7 @@ int main(int argc, char *argv[]){
|
|||
/* now we load the config */
|
||||
Config conf;
|
||||
conf.read(argc, argv);
|
||||
#if defined WIN32
|
||||
#if windows
|
||||
if(conf.Windows_AllocConsole == true){
|
||||
AllocConsole();
|
||||
freopen("CONOUT$", "w", stdout);
|
||||
|
|
|
|||
Loading…
Reference in a new issue