From c5fe234d53a9955289bc1640c3e7d5f086e54656 Mon Sep 17 00:00:00 2001
From: Francisco Javier Trujillo Mata <[EMAIL REDACTED]>
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 1bc8154b38b..0d97ed3f1f6 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 <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <kernel.h>
#include <sifrpc.h>
#include <iopcontrol.h>
#include <sbv_patches.h>
@@ -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);