diff --git a/CMakeLists.txt b/CMakeLists.txt index a91aaab3c..b82f73550 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2539,7 +2539,10 @@ elseif(PSP) endif(NOT SDL2_DISABLE_SDL2MAIN) elseif(PS2) - list(APPEND EXTRA_CFLAGS "-DPS2" "-D__PS2__") + list(APPEND EXTRA_CFLAGS "-DPS2" "-D__PS2__" "-I${PS2SDK}/ports/include") + + file(GLOB PS2_MAIN_SOURCES ${SDL2_SOURCE_DIR}/src/main/ps2/*.c) + set(SDLMAIN_SOURCES ${SDLMAIN_SOURCES} ${PS2_MAIN_SOURCES}) if(SDL_FILESYSTEM) set(SDL_FILESYSTEM_PS2 1) @@ -2559,6 +2562,12 @@ elseif(PS2) list(APPEND SOURCE_FILES ${PS2_TIMER_SOURCES}) set(HAVE_SDL_TIMERS TRUE) endif() + + list(APPEND EXTRA_LIBS + patches + ps2_drivers + ) + elseif(OS2) list(APPEND EXTRA_CFLAGS "-DOS2EMX_PLAIN_CHAR") diff --git a/include/SDL_main.h b/include/SDL_main.h index b3fec15fe..a7679f278 100644 --- a/include/SDL_main.h +++ b/include/SDL_main.h @@ -92,6 +92,9 @@ */ #define SDL_MAIN_AVAILABLE +#elif defined(__PS2__) +#define SDL_MAIN_AVAILABLE + #endif #endif /* SDL_MAIN_HANDLED */ diff --git a/src/main/ps2/SDL_ps2_main.c b/src/main/ps2/SDL_ps2_main.c new file mode 100644 index 000000000..60b1fbd0a --- /dev/null +++ b/src/main/ps2/SDL_ps2_main.c @@ -0,0 +1,36 @@ +/* + SDL_ps2_main.c, fjtrujy@gmail.com +*/ + +#include "SDL_config.h" + +#ifdef __PS2__ + +#include "SDL_main.h" +#include "SDL_error.h" + +#include +#include +#include + +#ifdef main + #undef main +#endif + +static void prepare_IOP() +{ + SifInitRpc(0); + sbv_patch_enable_lmb(); + sbv_patch_disable_prefix_check(); +} + +int main(int argc, char *argv[]) +{ + prepare_IOP(); + + return SDL_main(argc, argv); +} + +#endif /* _EE */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 135be4597..c2fcc766a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -27,6 +27,14 @@ if(PSP) psphprm psppower ) +elseif(PS2) +link_libraries( + SDL2main + SDL2_test + SDL2-static + patches + ps2_drivers +) else() link_libraries(SDL2::SDL2test SDL2::SDL2-static) endif()