5 Commits

Author SHA1 Message Date
892e69e0af typo 2020-09-09 20:52:12 -07:00
314f0dd53d Formatting mistake 2020-08-06 20:16:25 -07:00
5d3120851a Update README.md
Documentation overhaul
2020-08-06 20:04:07 -07:00
27e19b002e Fix the autotool-based build 2020-08-06 19:40:28 -07:00
6ec1915971 Add a .gitignore file 2020-08-06 19:36:47 -07:00
4 changed files with 56 additions and 44 deletions

17
.gitignore vendored Normal file
View File

@ -0,0 +1,17 @@
Makefile
Makefile.in
config.log
config.status
*.o
gcfuse
aclocal.m4
compile
configure
depcomp
install-sh
missing
.deps
config.h
config.h.in
stamp-h1
autom4te.cache

View File

@ -1,17 +1,5 @@
# gcfuse - Use FUSE To Mount GameCube Filesystems
**Note (February, 2018):** The original build instructions below were written circa 2006 and are a bit obsolete. This source code should still compile and run on modern Linux kernels using this process:
1. Be sure to have FUSE libraries installed (as of Ubuntu 16.04, this package is 'libfuse-dev')
2. Clone this repository
3. Execute the following build command:
```gcc -D_FILE_OFFSET_BITS=64 -Wall src/gcfs.c src/main.c src/tree.c -o gcfs -lfuse```
This will build the binary executable ```gcfs```. Use the *Usage* section below for instructions on running this utility.
---
gcfuse is a program that allows you to mount a Nintendo GameCube DVD
disk image as a read-only part of the Linux filesystem. This allows the
user to browse the directory structure and read the files within.
@ -22,36 +10,48 @@ the mounted filesystem.
gcfuse accomplishes all this using Filesystem in Userspace (FUSE),
available at:
http://fuse.sourceforge.net/
https://github.com/libfuse/libfuse
Note that there are likely to be bugs and perhaps even security
Note that it is not usually possible to simply read a Nintendo optical discs in
an ordinary computer's DVD-ROM drive. In order to
mount a filesystem, generally, you will have to rip the proper
sector image from the disc using special hardware and tools, or contact
another source who has already done so.
Note also that there are likely to be bugs and perhaps even security
problems. It is currently meant as primarily an experimental research
tool for studying GameCube discs.
### Requirements:
- Linux 2.4.x or 2.6.x (as of 2.6.14 FUSE is part of the kernel, but you still need user libraries)
- FUSE (http://fuse.sourceforge.net) 2.5.x or higher
- FUSE development libraries; 'libfuse-dev' on Ubuntu distros
Requirements:
```
- Linux 2.4.x or 2.6.x (as of 2.6.14 FUSE is part of the
kernel, but you still need user libraries)
- FUSE (http://fuse.sourceforge.net) 2.5.x or higher
```
### Build:
./autogen.sh
./configure
make
Build:
```
./configure && make
```
### Install:
make install
Install:
```
make install
```
#### Usage:
The basic usage is to supply a Nintendo GameCube disc image and an empty mount point on the filesystem:
Usage:
```
gcfuse <image_file.gcm> <mount_point>
```
gcfuse <image_file.gcm> <mount_point>
Browsing to the mount point will reveal the directory structure of the disc's filesystems. Further,
it will also expose the root executable .dol file, which is an implicit part of the disc filesystem.
This file will be named after the name of the disc.
Speaking of the name of the disc, the filesystem will also have a '.metadata' file at the root which
contains a few bits of metadata embedded in the filesystem, including:
- Game code
- Publisher code
- Title
The filesystem derives the name of the root executable from that title metadata.
To unmount previously mounted file, use:
```
fusermount -u <mount_point>
```
fusermount -u <mount_point>

View File

@ -1,5 +1,5 @@
AC_INIT([gcfuse], [0.9.1], [mike@multimedia.cx])
AM_INIT_AUTOMAKE([gcfuse], [0.9.1])
AM_INIT_AUTOMAKE([1.11 foreign])
AC_CONFIG_HEADER([src/config.h])
AC_PROG_CC
@ -7,14 +7,7 @@ AC_PROG_CC
CPPFLAGS="$CPPFLAGS -Wall `getconf LFS_CFLAGS`"
LDFLAGS="$LDFLAGS `getconf LFS_LDFLAGS`"
AC_CHECK_LIB([fuse], [fuse_main], , AC_MSG_ERROR([Unable to find libfuse]))
AC_HEADER_STDC
AC_CHECK_HEADER([fuse/fuse.h], , AC_MSG_ERROR([Unable to find fuse.h]))
AC_PREPROC_IFELSE(
[#define FUSE_USE_VERSION 25
#include <fuse.h>]
, , AC_MSG_ERROR([You need FUSE version 2.5.x]))
PKG_CHECK_MODULES([FUSE], [fuse >= 2.5])
AC_C_CONST

View File

@ -1,3 +1,5 @@
bin_PROGRAMS = gcfuse
gcfuse_SOURCES = tree.c gcfs.c main.c
noinst_HEADERS = tree.h gcfs.h
gcfuse_CFLAGS = $(CFLAGS) $(FUSE_CFLAGS)
gcfuse_LDADD = $(LDFLAGS) $(FUSE_LDFLAGS) $(FUSE_LIBS)