int init_dvd() { // Gamecube Mode #ifdef HW_DOL if(mfpvr()!=GC_CPU_VERSION) //GC mode on Wii, modchip required { DVD_Reset(DVD_RESETHARD); dvd_read_id(); if(!dvd_get_error()) { return 0; //we're ok } } else //GC, no modchip even required :) { DVD_Reset(DVD_RESETHARD); DVD_Mount (); if(!dvd_get_error()) { return 0; //we're ok } } if(dvd_get_error()>>24) { return NO_DISC; } return -1; #endif // Wii (Wii mode) #ifdef HW_RVL if(!have_hw_access()) { return NO_HW_ACCESS; } if((dvd_get_error()>>24) == 1) { return NO_DISC; } if((!dvd_hard_init) || (dvd_get_error())) { DI_Mount(); while(DI_GetStatus() & DVD_INIT) usleep(20000); dvd_hard_init=1; } if((dvd_get_error()&0xFFFFFF)==0x053000) { read_cmd = DVDR; } else { read_cmd = NORMAL; } return 0; #endif }
/**************************************************************************** * OpenDVD * * Function to load a DVD directory and display to user. ****************************************************************************/ int OpenDVD (int method) { if (!getpvd()) { ShowAction((char*) "Loading DVD..."); #ifdef HW_DOL DVD_Mount(); // mount the DVD unit again #elif WII_DVD u32 val; DI_GetCoverRegister(&val); if(val & 0x1) // True if no disc inside, use (val & 0x2) for true if disc inside. { WaitPrompt((char *)"No disc inserted!"); return 0; } DI_Mount(); while(DI_GetStatus() & DVD_INIT); #endif if (!getpvd()) { WaitPrompt ((char *)"Invalid DVD."); return 0; // not a ISO9660 DVD } } maxfiles = ParseDVDdirectory(); // load root folder // switch to rom folder SwitchDVDFolder(GCSettings.LoadFolder); if (maxfiles > 0) { return FileSelector (method); } else { // no entries found WaitPrompt ((char *)"No Files Found!"); return 0; } }
/** * OpenDVD * * Function to load a DVD directory and display to user. */ int OpenDVD () { int romsdiroffset = 0; loadtype = LOAD_DVD; if (!getpvd()) { ShowAction((char*) "Mounting DVD ... Wait"); DVD_Mount(); /* mount the DVD unit again */ havedir = 0; /* this may be a new DVD: content need to be parsed again */ if (!getpvd()) return 0; /* no correct ISO9660 DVD */ } if (havedir == 0) { offset = selection = 0; /* reset file selector */ haveSDdir = 0; /* prevent conflicts with SDCARD, USB file selector */ haveUSBdir = 0; if ((maxfiles = parsedirectory ())) { if ( romsdiroffset = SNESROMSOffset() ) { rootdir = filelist[romsdiroffset].offset; rootdirlength = filelist[romsdiroffset].length; offset = selection = 0; maxfiles = parsedirectory (); } int ret = FileSelector (); havedir = 1; return ret; } } else return FileSelector (); return 0; }