/* SDL_ps2_main.c, fjtrujy@gmail.com */ #include "SDL_config.h" #ifdef __PS2__ #include "SDL_main.h" #include "SDL_error.h" #include #include #include #include #include #include #include #include #include #include #ifdef main #undef main #endif __attribute__((weak)) void reset_IOP() { SifInitRpc(0); while(!SifIopReset(NULL, 0)) { } while(!SifIopSync()){ } } static void prepare_IOP() { reset_IOP(); SifInitRpc(0); sbv_patch_enable_lmb(); sbv_patch_disable_prefix_check(); sbv_patch_fileio(); } static void init_drivers() { init_memcard_driver(true); init_usb_driver(true); } static void deinit_drivers() { deinit_usb_driver(true); deinit_memcard_driver(true); } static void waitUntilDeviceIsReady(char *path) { struct stat buffer; int ret = -1; int retries = 50; while(ret != 0 && retries > 0) { ret = stat(path, &buffer); /* Wait until 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); deinit_drivers(); return res; } #endif /* _PS2 */ /* vi: set ts=4 sw=4 expandtab: */