From c5fe234d53a9955289bc1640c3e7d5f086e54656 Mon Sep 17 00:00:00 2001 From: Francisco Javier Trujillo Mata Date: Sun, 7 Aug 2022 23:07:02 +0200 Subject: [PATCH] Improve SDL main adding usb drivers --- src/main/ps2/SDL_ps2_main.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/main/ps2/SDL_ps2_main.c b/src/main/ps2/SDL_ps2_main.c index 1bc8154b3..0d97ed3f1 100644 --- a/src/main/ps2/SDL_ps2_main.c +++ b/src/main/ps2/SDL_ps2_main.c @@ -9,6 +9,11 @@ #include "SDL_main.h" #include "SDL_error.h" +#include +#include +#include + +#include #include #include #include @@ -21,6 +26,13 @@ static void prepare_IOP() { + SifInitRpc(0); + // #if !defined(DEBUG) || defined(BUILD_FOR_PCSX2) + /* Comment this line if you don't wanna debug the output */ + while(!SifIopReset(NULL, 0)){}; + // #endif + + while(!SifIopSync()){}; SifInitRpc(0); sbv_patch_enable_lmb(); sbv_patch_disable_prefix_check(); @@ -29,18 +41,41 @@ static void prepare_IOP() static void init_drivers() { init_fileXio_driver(); init_memcard_driver(true); + init_usb_driver(true); } static void deinit_drivers() { + deinit_usb_driver(true); deinit_memcard_driver(true); deinit_fileXio_driver(); } +static void waitUntilDeviceIsReady(char *path) +{ + struct stat buffer; + int ret = -1; + int retries = 50; + + while(ret != 0 && retries > 0) + { + ret = stat(path, &buffer); + /* Wait untill the device is ready */ + nopdelay(); + + retries--; + } +} + int main(int argc, char *argv[]) { int res; + char cwd[FILENAME_MAX]; + prepare_IOP(); init_drivers(); + + getcwd(cwd, sizeof(cwd)); + waitUntilDeviceIsReady(cwd); res = SDL_main(argc, argv);