I’m taking useless academic exercises to new heights. I wrote a utility called gcfuse that allows you to mount filesystems replicated, one way or another, from Nintendo GameCube DVDs.
What on earth for? I’ve heard tales of strange and wonderful FMV formats on those petite GameCube DVDs and I just had to know for myself. One game I’m playing right now is Metroid Prime, which has visuals that certainly appear to be pre-rendered multimedia files. Let’s find out:
$ gcfs metroidprime.gcm gcm/ $ ls gcm/ Audio Metroid4.pak NESemu.rel SlideShow.PAK metroid5.pak AudioGrp.pak Metroid6.pak NESemuD.rel TestAnim.Pak opening.bnr GGuiSys.pak Metroid7.pak NESemuP.rel Tweaks.Pak Metroid1.pak Metroid8.pak NoARAM.pak Video Metroid2.pak MidiData.pak SamGunFx.pak client_pad.bin Metroid3.pak MiscData.pak SamusGun.pak default.dol $ ls gcm/Video/ 00_first_start.thp 08_GBA_fileselect.thp attract9.thp 01_startloop.thp AfterCredits.thp creditBG.thp [...]
Right away, a new multimedia format– THP. The GC-Linux project already has documentation about this MJPEG-like format. Samples, of course, are available for your inspection.
NESemu.rel ?!
IIRC you can play the NES Metroids on the GameCube, so they probably packed the ROMs and an emulator on the disc.
thpplay 1.5 (with source)
http://www.amnoid.de/gc/index.html
Nice. I’m glad we don’t have to start this quest from square 1. It looks like the format really is just a basic chunked format with more or less standard JPEG pictures interspersed with a custom ADPCM format. Who wants to have a go at integrating into FFmpeg?
Quickly looking through the source code for the thpplay, I found the following note:
MTH (mute thp?), similar to thp but without sound.
It seems that this might be slightly easier to implement as it doesn’t require knowledge of the audio format.
Fortunately, the audio format is documented here (assuming it’s correct): http://www.gc-linux.org/docs/yagcd/chap15.html#sec15.34.7
its been a few days since you posted about gcfuse… so probably nobody is reading this…
…but i’ve written wiifuse based on your code, check the above url. i improved it alot, and it can still mount gc images – hopefully someone finds it useful.
regards
Nice work, dhewg. I’ll check this out myself and probably make a more current post about it.
thpplay for psp(with source)
http://pspinit.web.fc2.com/apuri/apuri.html
no audio, slow