24
edits
(wii build instructions) |
(then again, this isn't really required) |
||
(8 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
This page describes how you build a Wii or Gamecube binary from the ScummVM source tree. | This page describes how you build a Wii or Gamecube binary from the ScummVM source tree. | ||
Required tools and/or libraries might change at times, and differences for various ScummVM versions are pointed out when necessary. | Required tools and/or libraries might change at times, and differences for various ScummVM versions are pointed out when necessary. | ||
Line 11: | Line 7: | ||
= Mandatory tools and libraries = | = Mandatory tools and libraries = | ||
* [http://devkitpro.org/ devkitPPC] as a build environment, please refer to its documentation to set it up | * [http://devkitpro.org/ devkitPPC] as a build environment, please refer to its documentation how to set it up | ||
* libogc and libfat | * libogc and libfat | ||
The latter two libraries are part of devkitPPC and are already installed with it. However, official ScummVM Wii and Gamecube binaries use unofficial versions, available via [http://git.or.cz/ git] [http:// | The latter two libraries are part of devkitPPC and are already installed with it. However, official ScummVM Wii and Gamecube binaries use unofficial versions, available via [http://git.or.cz/ git] [http://repo.or.cz/w/libogc.git here] and [http://repo.or.cz/w/libfat.git here]. | ||
== Versions differences == | == Versions differences == | ||
* v0.12.0 (first official version) is built with devkitPPC r15 | * v0.12.0 (first official version) is built with devkitPPC r15 | ||
* | * starting with v0.13.0, devkitPPC r16 is used | ||
* starting with revision 44189, [http://repo.or.cz/w/libgxflux.git libgxflux] in mandatory | |||
= Optional libraries = | = Optional libraries = | ||
Line 37: | Line 27: | ||
== Precompiled binaries == | == Precompiled binaries == | ||
Get [http://static.hackmii.com/dhewg/devkitPPC_r16_3rd_libs.tar.bz2 this archive] and extract it in <tt>$DEVKITPRO/3rd/</tt> you just created. The directory structure should look like <tt>$DEVKITPRO/3rd/wii/include</tt> | Get [http://static.hackmii.com/dhewg/devkitPPC_r16_3rd_libs.tar.bz2 this archive] and extract it in <tt>$DEVKITPRO/3rd/</tt> you just created. The directory structure should look like | ||
<tt>$DEVKITPRO/3rd/wii/include</tt> | |||
<tt>$DEVKITPRO/3rd/wii/lib</tt> | |||
and so on. The binaries will work on Wii and Gamecube. | |||
== Build the libraries yourself == | == Build the libraries yourself == | ||
Line 63: | Line 56: | ||
echo "./configure --host=ppc --disable-shared --prefix=${DEVKITPRO}/3rd/wii" | echo "./configure --host=ppc --disable-shared --prefix=${DEVKITPRO}/3rd/wii" | ||
Save it to a file (like <tt>gekkoenv.sh</tt> and run | Save it to a file (like <tt>gekkoenv.sh</tt>) and run | ||
. ./gekkoenv.sh | . ./gekkoenv.sh | ||
Line 71: | Line 64: | ||
=== Tremor === | === Tremor === | ||
Get a SVN checkout ( | Get a SVN checkout (r16259 as of this writing): | ||
svn co http://svn.xiph.org/ | svn co http://svn.xiph.org/trunk/Tremor | ||
patch it: | patch it: | ||
Line 83: | Line 76: | ||
#include <sys/types.h> | #include <sys/types.h> | ||
-#if | -#if BYTE_ORDER==LITTLE_ENDIAN | ||
+#if | +#if 0 | ||
union magic { | union magic { | ||
struct { | struct { | ||
Line 92: | Line 85: | ||
#endif | #endif | ||
-#if | -#if BYTE_ORDER==BIG_ENDIAN | ||
+#if | +#if 1 | ||
union magic { | union magic { | ||
struct { | struct { | ||
Line 148: | Line 141: | ||
= Compiling = | = Compiling = | ||
This port doesn't utilize ScummVM's <tt>configure</tt> system, instead it comes with a simple Makefile. The port code can be found in two directories: | == 1.0.0 and greater == | ||
The Wii and Gamecube port can be compiled with the <tt>configure</tt> script. The most basic way to accomplish this is to run: | |||
./configure --host=wii | |||
make | |||
If you want to build a Gamecube binary, just use | |||
./configure --host=gamecube | |||
make | |||
instead. | |||
The script supports various arguments, which you can use to en- or disable features, see <tt>./configure --help</tt>. | |||
Two of the [[#Optional libraries|optional libraries]] are already part of libogc: | |||
* zlib, used to (de-)compress save games. It gets automatically detected with a recent libogc version. | |||
* libmad, used for MP3 playback. It gets automatically detected with a recent libogc version. | |||
Others are not, and if you want support for it, you need cross-compiled binaries: | |||
* libFLAC, used for FLAC lossless audio playback. Use the ''--with-flac-prefix=<directory>'' argument. | |||
* Tremor, used for OGG audio playback. Use the ''--with-tremor-prefix=<directory>'' argument. | |||
If you followed the [[#Optional libraries|above description]] and have those libraries in <tt>$DEVKITPRO/3rd/wii</tt>, the <tt>configure</tt> command line would look like this: | |||
./configure --host=wii --with-flac-prefix=$DEVKITPRO/3rd/wii --with-tremor-prefix=$DEVKITPRO/3rd/wii | |||
Additionally, there're a few make targets for your convenience: | |||
* <tt>make wiiload</tt> - uploads a compiled Wii binary over TCP/IP. | |||
* <tt>make geckoupload</tt> - uploads a compiled binary over a USBGecko device. | |||
* <tt>make wiidist</tt> - copies all required files for the Wii into the ''dist'' subdirectory, read to copy onto your SD card for the Homebrew Channel. | |||
* <tt>make gcdist</tt> - same for Gamecube. | |||
* <tt>make wiigdb</tt> - starts GDB and loads your compiled binary, ready to debug. | |||
* <tt>make wiidebug</tt> - starts GDB with your binary and attaches remotely to the Wii via a USBGecko device. | |||
== v0.13.x and below == | |||
This port doesn't utilize ScummVM's <tt>configure</tt> system for v0.12.0, instead it comes with a simple Makefile. The port code can be found in two directories: | |||
./backends/fs/wii/ | ./backends/fs/wii/ | ||
Line 157: | Line 189: | ||
Change your working directory to the latter and open the <tt>Makefile</tt> in a editor. You'll find some variables on top of that file, adjust those to your liking. Everything should be self-explanatory, some are even documented. Here are some random hints: | Change your working directory to the latter and open the <tt>Makefile</tt> in a editor. You'll find some variables on top of that file, adjust those to your liking. Everything should be self-explanatory, some are even documented. Here are some random hints: | ||
* There is no support for dynamic libraries on the Wii, keep an engine toggle at <tt>STATIC_PLUGIN</tt> or disable it by just commenting that line | * There is no support for dynamic libraries on the Wii or Gamecube, keep an engine toggle at <tt>STATIC_PLUGIN</tt> or disable it by just commenting that line | ||
* Vanilla scalers | * Vanilla scalers are not supported by the Wii port | ||
* [http://www.zlib.net/ zlib] and [http://www.underbit.com/products/mad/ MAD] are part of libogc | * [http://www.zlib.net/ zlib] and [http://www.underbit.com/products/mad/ MAD] are part of libogc | ||
* MPEG2 support has been dropped from the Wii port, if you want | * MPEG2 support has been dropped from the Wii port, if you want support for it, you have to cross compile [http://libmpeg2.sourceforge.net/ libmpeg2] | ||
When you're done with the <tt>Makefile</tt>, save it and run <tt> | When you're done with the <tt>Makefile</tt>, save it and run <tt>make</tt> (GNU version). That's it, the build system is now building an ''.elf'' and a ''.dol''. | ||
Test the ''.dol'' by uploading it using ''wiiload'' via: | Test the ''.dol'' by uploading it using ''wiiload'' via: |
edits