DVD support broken on Gamecube
Posted: Mon Mar 12, 2012 4:07 pm
FCEUGX and SNES9XGX are currently broken on Gamecube (and have been since they were at version 4.1.1) - both hang at the "Loading DVD" screen.
The maintainer of these projects, dborth, has marked these issues as "won't fix" claiming it is an upstream problem with libogc:
http://code.google.com/p/snes9x-gx/issues/detail?id=601
http://code.google.com/p/snes9x-gx/issues/detail?id=659
Since they've been outstanding issues for years now, I'm going to finally tackle the bugs and make the emulators functional again, so I can get my GC back out of storage. Consider this thread a WIP discussion about the bug.
First, a segment of code from SNES9XGX where the problem manifests:
The maintainer of these projects, dborth, has marked these issues as "won't fix" claiming it is an upstream problem with libogc:
http://code.google.com/p/snes9x-gx/issues/detail?id=601
http://code.google.com/p/snes9x-gx/issues/detail?id=659
Since they've been outstanding issues for years now, I'm going to finally tackle the bugs and make the emulators functional again, so I can get my GC back out of storage. Consider this thread a WIP discussion about the bug.
First, a segment of code from SNES9XGX where the problem manifests:
Code: Select all
/****************************************************************************
* MountDVD()
*
* Tests if a ISO9660 DVD is inserted and available, and mounts it
***************************************************************************/
bool MountDVD(bool silent)
{
bool mounted = false;
int retry = 1;
if(unmountRequired[DEVICE_DVD])
{
unmountRequired[DEVICE_DVD] = false;
ISO9660_Unmount("dvd:");
}
while(retry)
{
ShowAction("Loading DVD...");
if(!dvd->isInserted())
{
if(silent)
break;
retry = ErrorPromptRetry("No disc inserted!");
}
else if(!ISO9660_Mount("dvd", dvd))
{
if(silent)
break;
retry = ErrorPromptRetry("Unrecognized DVD format.");
}
else
{
mounted = true;
break;
}
}
CancelAction();
isMounted[DEVICE_DVD] = mounted;
return mounted;
}