Getting started with compiling Wii apps in Linux

First off, setting up a development environment, and then the ability to run the games on the Wii are very different. Since my Wii was on the latest official system upgrade (v4.3), there were not many options for getting a custom game boot loader on it. Thankfully, I went with the Indiana Pwns and it was super easy and straight forward. Now I have the Homebrew Loader installed by way of using the BootMii installer, and I am free to load my own compiled projects as well.

To get the development kit up and operational it involved a bit of guess work, but thankful I can still use my GNU C utilities.

From the “devkitPPC” directory, you’ll need the appropriate download for you host type. For me, it was devkitPPC_r21-x86_64-linux.tar.bz2

http://sourceforge.net/projects/devkitpro/files/

It extracts to ”devkitPPC/”. You can put this where every you’d like, but I kept everything as my limited privilege user, and created a directory $HOME/bin/opt/, and put the directory there. Next you’ll need to set a couple of ENV variables that most projects look for in their Makefile’s. In my $HOME/.bashrc I added

export DEVKITPPC=$HOME/bin/opt/devkitPPC/
export DEVKITPRO=$DEVKITPPC
export MANPATH=$MANPATH:$DEVKITPPC/man
export PATH=$PATH:$DEVKITPPC/bin

The manpath is for me :)

From the portlibs folder you’ll need everything with “ppc” in the name. The Wii’s proccesor is an IBM PowerPC chipset

http://sourceforge.net/projects/devkitpro/files/portlibs

Once you have all of these downloaded, a simple for loop will do well.

mkdir ${DEVKITPPC}/portlibs

for file in *ppc.tar.bz2 ; do tar -C ${DEVKITPPC}/portlibs/ -xjf $file ; done

Next, download libogc-src-*.tar.bz2 from http://sourceforge.net/projects/devkitpro/files/libogc/, and lets get it compiled and installed (also, it depends on the ENV variables and the libraries above). The make install below will put it in $DEVKITPPC.

mkdir libogc ; tar -C libogc -xjf libogrc-src-*.tar.bz2 ; cd libogc

make clean && make && make install

Lastly, getting libfat present and respectable. http://sourceforge.net/projects/devkitpro/files/libfat/ get the libfat-ogc-*.tar.bz2 tar ball

tar -C ${DEVKITPPC}/portlibs/ -xjf libfat-ogc-*.tar.bz2

cp ${DEVKITPPC}/portlibs/lib/wii/libfat.a ${DEVKITPPC}/portlibs/lib/libfat.a

At this point there is enough present to begin hacking or least compiling as a tester. To validate we have a good compiling ENV, lets try out libwiigui . It is a great framework to learn/use/get started with, but for now if we use it to a validation test. At the time of writing this, the latest was libwiigui-1.05.zip. So:

mkdir libwiigui ; cd libwiigui ; unzip ../libwiigui-1.05.zip

make clean && make

You should be left with two  new files (libwiigui-demo.elf and libwiigui-demo.dol).

On the SD card that I keep my HomeBrew applications on, I make a directory sd://apps/libwiigui/ and copy these two files into that directory, and rename them boot.elf and boot.dol respectively.

Now when I put the SD card in the Wii and launch the HomeBrew loader, I have a blank button (because I didn’t take the time to add icons and descriptions), and when clicked and loaded, there it the basic libwiigui framework app!

YAHTZEE!!

Take care,

vb

p.s. here are a couple of additional information links.

http://wiibrew.org/wiki/Libwiigui/tutorial

http://wiibrew.org/wiki/Developer_tips

Share

linux 2.6.32.3 and the Broadcom STA wireless driver

on the recent release of the 2.6.32 series kernel in the slackware-current branch, currently 2.6.32.3, it has posed a bit of a minor frustration on this Dell mini 9″ and its broadcom 4312

vbatts@mini:~$ lspci | grep Network
03:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g (rev 01)

appearantly in the kernel headers, the definition of schedule() has moved around a little. Using the drivers downloaded from here (currently version 5.10.91.9.3), if you are getting an error like

vbatts@current:~/bcm1$ make
KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
make[1]: Entering directory `/usr/src/linux-2.6.32.3'
  LD      /home/vbatts/bcm1/built-in.o
  CC [M]  /home/vbatts/bcm1/src/wl/sys/wl_linux.o
/home/vbatts/bcm1/src/wl/sys/wl_linux.c: In function 'wl_free':
/home/vbatts/bcm1/src/wl/sys/wl_linux.c:705: error: implicit declaration of function 'schedule'
make[2]: *** [/home/vbatts/bcm1/src/wl/sys/wl_linux.o] Error 1
make[1]: *** [_module_/home/vbatts/bcm1] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.32.3'
make: *** [all] Error 2

then the following patch will just add include the needed headers to move you along in compiling your wl.ko module


cat ../hybrid_sta-2.3.32.patch | patch -p1

at which point you should be gravy to proceed as usual.

vbatts@current:~/bcm2$ make
KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
make[1]: Entering directory `/usr/src/linux-2.6.32.3'
LD      /home/vbatts/bcm2/built-in.o
CC [M]  /home/vbatts/bcm2/src/wl/sys/wl_linux.o
CC [M]  /home/vbatts/bcm2/src/wl/sys/wl_iw.o
CC [M]  /home/vbatts/bcm2/src/shared/linux_osl.o
LD [M]  /home/vbatts/bcm2/wl.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: modpost: missing MODULE_LICENSE() in /home/vbatts/bcm2/wl.o
see include/linux/module.h for more information
CC      /home/vbatts/bcm2/wl.mod.o
LD [M]  /home/vbatts/bcm2/wl.ko
make[1]: Leaving directory `/usr/src/linux-2.6.32.3'
vbatts@current:~/bcm2$ ls
Makefile  Module.symvers  built-in.o  lib/  modules.order  src/  wl.ko  wl.mod.c  wl.mod.o  wl.o
vbatts@current:~/bcm2$ sudo mv wl.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless/
vbatts@current:~/bcm2$ sudo depmod -a
vbatts@current:~/bcm2$ sudo modprobe wl

and do not forget to `unset ARCH` before compiling ;)

Take care,

vb

Share

huludesktop for linux … and slackware !!

so i just saw that hulu.com labs has recently published a desktop player for linux. using my rpm-slackpack script , i converted the fedora packages they have for download, into slackware tgz’s.

you can download the i386 and x86_64 from cardinal.lizella.net/~vbatts/

once you’ve downloaded and installed it, pending you have the flash-player-plugin installed from slackbuilds.org, or some other means, you will need to edit the file ~/.huludesktop, on the line “flash_location = (null)”, to the location of the flash library. For me, its as follows.

$ grep libflash /var/log/packages/flash-player-plugin-10.0_r32-x86_64-1_SBo
usr/lib64/mozilla/plugins/libflashplayer.so

then you have a command `huludesktop`, and away you go!

Take care,

vb

Share

Openoffice.org 3.1.0 on Dell Mini 9 with Ubuntu 8.04.1

So I have *finally* received the 9 inch Dell mini that I had ordered over a month ago. The device pre-installed with Ubuntu was much more preferable, even though the release is a couple of versions old now.

Everything is great so far, but the first thing that i had to do was update the version of OpenOffice.org being used. Its not so much that I have any problems with version 2.4, but rather everything else I am using is version 3.0 or 3.1.  I have seen several issues when opening and transferring an *.odt between varying versions of openoffice.  Its never fun to lose or mess up formating.

Luckily for me, there were only a couple of dependencies that had to be resolved and the packages I lost, didn’t really impact me.

First off, I had to add the project that maintains the lastest OOo for Ubuntu. Either through the GUI or to /etc/apt/sources.list, add

deb http://ppa.launchpad.net/openoffice-pkgs/ubuntu hardy main

and then wget their key and import it. I panzied out and used the GUI to import it.

http://ppa.launchpad.net/openoffice-pkgs/ubuntu/dists/hardy/Release.gpg

you next apt-get update, and should remove the following to packages, and all their dependencies.

aptitude remove openoffice.org-l10n-en-za openoffice.org-l10n-en-gb

at which point, you are clear to do an

aptitude dist-upgrade

all done!

take care,

vb

Share