geckoloader is a native wii application which helps you to load and execute wii homebrew binaries in the easiest and fastest way possible. It acts as a server which will receive binaries directly over the usb bus
a client tool to transfer such files is included
requirements
a usbgecko adapter
a gamecube pad
a way to boot wii homebrew
architecture
the application consists of 3 parts
stub
loader
boot
the boot code is what you will be running. that part contains the other two. it will write the loader code to the onboard usbgecko flash and place the stub into memory
the bootcode will then execute the stub
the stub's job is to read the loader code from flash and execute it
finally, the loader code will accept incoming .dol's sent using a client application over the usb bus from the pc side
the chosen architecture has the advantage that the tiny stub is the only component which has to stay in tact in memory. since the real loader sits on the flash on your usbgecko, no application can corrupt it in memory
features
100% native wii mode
no medium ejecting, rewriting and inserting required whatsoever
this is especially useful for wii coders (fast developent cycle)
the stub is placed at the memory location 0x80001800. this is PSO reload compatible, which means that you can jump back there to load another binary without rebooting. the libogc exception handler also jumps to this address (when pressing START)
the included client is compatible to the official geckotool, so you can use nuke's windows client to upload .dol's too
as always, this is open source
build
to compile the included code, you need devkitPPC and libogc r14 or higher
copy stub/stub.lds to $DEVKITPPC/powerpc-gekko/lib
check config.h for some tuneables
run make in the root dir
run make install to copy geckoupload (the client) to $DEVKITPPC/bin
usage
use the Twilight hack in combination with the included geckoloader.elf to get this running
the boot code will show up
you have to write the loader code to the flash once, so press Z on a gamecube pad to do that
flashing has to be done only once, press A the next time you reboot the wii to skip that step
after that you will see the loader code in action
use the included client (geckoupload) or the windows geckotool to send a .dol
the transfered binary should execute
if you loaded a game/app which has an option to jump back to 0x80001800, you will be able to transmit another binary without reboot
client usage
set the environment variable USBGECKODEVICE to the tty device of the usbgecko adapter, eg:
export USBGECKODEVICE=/dev/ttyUSB0
make sure that your console is ready to receive an executable
pass the filename of the binary to geckoupload, for example:
geckotool wiifuse_server.dol
you can use this client to transfer
wii .dol's to the geckoloader described on this page
gamecube .dol's to the official usbgecko boot dvd
wii .elf's to the upcoming release of the twilight hack
notes
this is an early version and i really have no clue how (if at all) it works for others. please report back
only .dol files are supported
you can not run gamecube binaries with this loader since we're working in wiimode here (thats a good thing)
the included client will not compile with mingw and apparently doesnt currently work on osx, patches are welcome
the uploaded data is not verified by neither the included client nor the receiving loader code. pay attention to what you are sending to avoid annoying reboots
the default libogc base address for wii homebrew is at 0x80003f00. this gives a PSO compatible stub ~10k of memory. hence, the stub's main() functions was written in c so that its easy to improve/fix
the loader initially puts a received binary in MEM2 to avoid overlaps. it will be relocated from there. unfortunately the loader itself has a base address in MEM1. putting it in MEM2 is on my TODO list
for the record: you can use the truncha signer to boot this app straight from dvd, but that is currently not supported nor endorsed. do not ask about it. seriously.