void init_basic_modules(const char *path) { char *gz; int gz_size; module_t basic_modules[7] = { { "sio2man", "freesio2.irx", NULL, 0, 0 }, { "mcman", "mcman.irx", NULL, 0, 0 }, { "mcserv", "mcserv.irx", NULL, 0, 0 }, { "mtapman", "freemtap.irx", NULL, 0, 0 }, { "padman", "freepad.irx", NULL, 0, 0 }, { "IOX/File_Manager", "iomanX.irx", NULL, 0, 0 }, { "IOX/File_Manager_Rpc", "fileXio.irx", NULL, 0, 0 } }; gz = init_modules_tgz(path,&gz_size); init_load_irx(gz, gz_size, basic_modules, 7); // Init various libraries mcInit(MC_TYPE_MC); mtapInit(); padInit(0); mtapPortOpen(0); mtapPortOpen(1); if (!basic_modules[6].result) { fileXioInit(); } else { // Problem initializing fileXio modules fioInit(); } if (gz != (char*)modules_tgz) { free(gz); } }
static void frontend_ps2_init(void *data) { char cwd[FILENAME_MAX]; int bootDeviceID; SifInitRpc(0); #if !defined(DEBUG) /* Comment this line if you don't wanna debug the output */ while(!SifIopReset(NULL, 0)){}; #endif while(!SifIopSync()){}; SifInitRpc(0); sbv_patch_enable_lmb(); /* I/O Files */ SifExecModuleBuffer(&iomanX_irx, size_iomanX_irx, 0, NULL, NULL); SifExecModuleBuffer(&fileXio_irx, size_fileXio_irx, 0, NULL, NULL); SifExecModuleBuffer(&freesio2_irx, size_freesio2_irx, 0, NULL, NULL); /* Memory Card */ SifExecModuleBuffer(&mcman_irx, size_mcman_irx, 0, NULL, NULL); SifExecModuleBuffer(&mcserv_irx, size_mcserv_irx, 0, NULL, NULL); /* Controllers */ SifExecModuleBuffer(&freemtap_irx, size_freemtap_irx, 0, NULL, NULL); SifExecModuleBuffer(&freepad_irx, size_freepad_irx, 0, NULL, NULL); /* USB */ SifExecModuleBuffer(&usbd_irx, size_usbd_irx, 0, NULL, NULL); SifExecModuleBuffer(&usbhdfsd_irx, size_usbhdfsd_irx, 0, NULL, NULL); /* Audio */ SifExecModuleBuffer(&freesd_irx, size_freesd_irx, 0, NULL, NULL); SifExecModuleBuffer(&audsrv_irx, size_audsrv_irx, 0, NULL, NULL); /* CDVD */ SifExecModuleBuffer(&cdvd_irx, size_cdvd_irx, 0, NULL, NULL); if (mcInit(MC_TYPE_XMC)) { RARCH_ERR("mcInit library not initalizated\n"); } /* Initializes audsrv library */ if (audsrv_init()) { RARCH_ERR("audsrv library not initalizated\n"); } /* Initializes pad libraries Must be init with 0 as parameter*/ if (mtapInit() != 1) { RARCH_ERR("mtapInit library not initalizated\n"); } if (padInit(0) != 1) { RARCH_ERR("padInit library not initalizated\n"); } if (mtapPortOpen(0) != 1) { RARCH_ERR("mtapPortOpen library not initalizated\n"); } /* Initializes CDVD library */ /* SCECdINoD init without check for a disc. Reduces risk of a lockup if the drive is in a erroneous state. */ sceCdInit(SCECdINoD); if (CDVD_Init() != 1) { RARCH_ERR("CDVD_Init library not initalizated\n"); } _init_ps2_io(); /* Prepare device */ getcwd(cwd, sizeof(cwd)); bootDeviceID=getBootDeviceID(cwd); waitUntilDeviceIsReady(bootDeviceID); #if defined(HAVE_FILE_LOGGER) retro_main_log_file_init("retroarch.log"); verbosity_enable(); #endif }
void InitPS2() { int i, sometime; static char hddarg[] = "-o" "\0" "4" "\0" "-n" "\0" "20"; static char pfsarg[] = "-m" "\0" "4" "\0" "-o" "\0" "10" "\0" "-n" "\0" "40"; SifInitRpc(0); // Reset IOP borrowed from uLaunchelf while (!SifIopReset(NULL, 0)){}; while (!SifIopSync()){}; SifInitRpc(0); sbv_patch_enable_lmb(); SifExecModuleBuffer(&iomanX_irx, size_iomanX_irx, 0, NULL, NULL); SifExecModuleBuffer(&fileXio_irx, size_fileXio_irx, 0, NULL, NULL); SifExecModuleBuffer(&freesio2_irx, size_freesio2_irx, 0, NULL, NULL); /* SifLoadModule("rom0:XSIO2MAN", 0, NULL); SifLoadModule("rom0:XMCMAN", 0, NULL); SifLoadModule("rom0:XMCSERV", 0, NULL); SifLoadModule("rom0:XMTAPMAN", 0, NULL); SifLoadModule("rom0:XPADMAN", 0, NULL); */ SifExecModuleBuffer(&mcman_irx, size_mcman_irx, 0, NULL, NULL); SifExecModuleBuffer(&mcserv_irx, size_mcserv_irx, 0, NULL, NULL); SifExecModuleBuffer(&freemtap_irx, size_freemtap_irx, 0, NULL, NULL); SifExecModuleBuffer(&freepad_irx, size_freepad_irx, 0, NULL, NULL); #ifdef SOUND_ON SifExecModuleBuffer(&freesd_irx, size_freesd_irx, 0, NULL, NULL); SifExecModuleBuffer(&audsrv_irx, size_audsrv_irx, 0, NULL, NULL); #endif SifExecModuleBuffer(&SMSUTILS_irx, size_SMSUTILS_irx, 0, NULL, NULL); SifExecModuleBuffer(&usbd_irx, size_usbd_irx, 0, NULL, NULL); SifExecModuleBuffer(&usbhdfsd_irx, size_usbhdfsd_irx, 0, NULL, NULL); for (i = 0; i < 3; i++) { // Taken from ulaunchelf sometime = 0x01000000; while (sometime--) asm("nop\nnop\nnop\nnop"); } SifExecModuleBuffer(&poweroff_irx, size_poweroff_irx, 0, NULL, NULL); SifExecModuleBuffer(&ps2dev9_irx, size_ps2dev9_irx, 0, NULL, NULL); SifExecModuleBuffer(&ps2atad_irx, size_ps2atad_irx, 0, NULL, NULL); SifExecModuleBuffer(&ps2hdd_irx, size_ps2hdd_irx, sizeof(hddarg), hddarg, NULL); SifExecModuleBuffer(&ps2fs_irx, size_ps2fs_irx, sizeof(pfsarg), pfsarg, NULL); mcInit(MC_TYPE_XMC); #ifdef CDSUPPORT SifExecModuleBuffer(&cdvd_irx, size_cdvd_irx, 0, NULL, NULL); cdInit(CDVD_INIT_INIT); CDVD_Init(); #endif #ifdef SOUND_ON audsrv_init(); #endif mtapInit(); padInit(0); mtapPortOpen(0); }
/* Function to scan the system for joysticks. * This function should set SDL_numjoysticks to the number of available * joysticks. Joystick 0 should be the system default joystick. * It should return number of joysticks, or -1 on an unrecoverable fatal error. */ int SDL_SYS_JoystickInit(void) { int ret; int mtap_enabled; int index; int numports, numdevs; int port, slot; printf("SDL_Joystick: JoystickInit begins\n"); #ifdef PS2SDL_ENABLE_MTAP ret = SifLoadModule("rom0:XSIO2MAN", 0, NULL); if (ret < 0) { SDL_SetError("Failed to load XSIO2MAN"); return 0; } ret = SifLoadModule("rom0:XPADMAN", 0, NULL); if (ret < 0) { SDL_SetError("Failed to load XPADMAN"); return 0; } ret = SifLoadModule("rom0:XMTAPMAN", 0, NULL); if (ret < 0) { SDL_SetError("Failed to load XMTAPMAN"); return 0; } #else ret = SifLoadModule("rom0:SIO2MAN", 0, NULL); if (ret < 0) { SDL_SetError("Failed to load SIO2MAN"); return 0; } ret = SifLoadModule("rom0:PADMAN", 0, NULL); if (ret < 0) { SDL_SetError("Failed to load PADMAN"); return 0; } #endif ret = padInit(0); printf("SDL_Joystick: padInit: %d\n", ret); #ifdef PS2SDL_ENABLE_MTAP ret = mtapInit(); printf("SDL_Joystick: mtapInit: %d\n", ret); #endif numdevs = 0; numports = padGetPortMax(); printf("SDL_Joystick: numports %d\n", numports); index = 0; #ifdef PS2SDL_ENABLE_MTAP /* gawd: look for mtap connection on one of the ports. if it's there, * then don't support the only interface. */ if (mtapPortOpen(0) == 1 && mtapGetConnection(0) == 1) { /* found on port 0 */ mtap_enabled = 1; mtapPortClose(0); printf("SDL_Joystick: found mtap on port 0\n"); } else if (mtapPortOpen(1) == 1 && mtapGetConnection(1) == 1) { /* found on port 1 */ mtap_enabled = 1; mtapPortClose(1); printf("SDL_Joystick: found mtap on port 1\n"); } else { mtap_enabled = 0; printf("SDL_Joystick: mtap adapter not found on either ports\n"); } #endif for (port=0; port<numports; port++) { int maxslots; #ifdef PS2SDL_ENABLE_MTAP if (mtap_enabled) { ret = mtapPortOpen(port); printf("\nSDL_Joystick: Port: %d, mtapPortOpen: %d\n", port, ret); ret = mtapGetConnection(port); printf("SDL_Joystick: Port: %d, mtapGetConnection: %d\n", port, ret); if (ret != 1) { /* failed */ mtapPortClose(port); continue; } } #endif maxslots = padGetSlotMax(port); printf("SDL_Joystick: Port %d, MaxSlots: %d\n", port, maxslots); for (slot=0; slot<maxslots; slot++) { ret = padPortOpen(port, slot, &padbufs[256*index]); if (ret < 0) { //SDL_SetError("padPortOpen %d, %d failed\n", port, slot); //return 0; continue; } printf("Joystick %d at port=%d slot=%d\n", index, port, slot); joyports[index] = port; joyslots[index] = slot; index++; } } SDL_numjoysticks = index; printf("SDL_Joystick: JoystickInit ends with %d joysticks\n", SDL_numjoysticks); return SDL_numjoysticks; }