Line 1: |
Line 1: |
| geckoloader - coded by dhewg, #wiidev on EFNet | | geckoloader - coded by dhewg, #wiidev on EFNet |
| | | |
− | *'''latest version: [[#v0.0.2|v0.0.2]]''' | + | *'''latest version: [[#v0.0.2b|v0.0.2b]]''' |
| | | |
| ==about== | | ==about== |
− | :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 | + | :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 using a usbgecko adapter |
| :a client tool to transfer such files is included | | :a client tool to transfer such files is included |
| | | |
Line 18: |
Line 18: |
| ::*boot | | ::*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 boot code is what you will be running, it contains the other two parts. 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 bootcode will then execute the stub |
| :the stub's job is to read the loader code from flash and execute it | | :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 | + | :finally, the loader code will accept incoming .dol's sent using a client application 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 | + | :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 onboard usbgecko flash, no application can corrupt it in memory |
| | | |
| ==features== | | ==features== |
Line 34: |
Line 34: |
| | | |
| ==build== | | ==build== |
| + | :'''hint:''' a precompiled binary is included |
| + | |
| :to compile the included code, you need [http://www.devkitpro.org/ devkitPPC and libogc] r14 or higher | | :to compile the included code, you need [http://www.devkitpro.org/ devkitPPC and libogc] r14 or higher |
| :copy <code>stub/stub.lds</code> to <code>$DEVKITPPC/powerpc-gekko/lib</code> | | :copy <code>stub/stub.lds</code> to <code>$DEVKITPPC/powerpc-gekko/lib</code> |
Line 43: |
Line 45: |
| :*use the [[Twilight_Hack|Twilight hack]] in combination with the included geckoloader.elf to get this running | | :*use the [[Twilight_Hack|Twilight hack]] in combination with the included geckoloader.elf to get this running |
| :*the boot code will show up | | :*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 | + | ::*you have to write the loader code to the onboard usbgecko 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 | | ::*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 | | :*after that you will see the loader code in action |
− | :*use the included client (<code>geckoupload</code>) or the windows geckotool to send a .dol | + | :*use a compatible client (like the included one <code>geckoupload</code>, or the official windows geckotool) to send a .dol |
| :*the transfered binary should execute | | :*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 | | :*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 |
| + | |
| + | :'''hint:''' try to upload the included <code>test.dol</code> first. it just prints a string to screen and has an option to jump back to the loader |
| | | |
| ==client usage== | | ==client usage== |
Line 55: |
Line 59: |
| :*make sure that your console is ready to receive an executable | | :*make sure that your console is ready to receive an executable |
| :*pass the filename of the binary to <code>geckoupload</code>, for example: | | :*pass the filename of the binary to <code>geckoupload</code>, for example: |
− | ::<code>geckoupload wiifuse_server.dol</code> | + | ::<code>geckoupload test.dol</code> |
| | | |
| :you can use this client to transfer | | :you can use this client to transfer |
Line 63: |
Line 67: |
| | | |
| ==notes== | | ==notes== |
− | :*this is an early version and i really have no clue how (if at all) it works for others. please report back | + | :*please report back how it worked for you! |
| :*only .dol files are supported | | :*only .dol files are supported |
| :*you can not run gamecube binaries with this loader since we're working in wiimode here (that's a good thing) | | :*you can not run gamecube binaries with this loader since we're working in wiimode here (that's a good thing) |
− | :*the included client will not compile with mingw and apparently doesnt currently work on osx, patches are welcome | + | :*the included client will not compile using mingw, 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 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 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 |
Line 80: |
Line 84: |
| | | |
| ==download== | | ==download== |
| + | |
| + | ===v0.0.2b=== |
| + | :[[media:Geckoloader-0.0.2b.tgz|geckoloader-0.0.2b.tgz]] |
| | | |
| ===v0.0.2=== | | ===v0.0.2=== |
Line 85: |
Line 92: |
| | | |
| ==changelog== | | ==changelog== |
| + | |
| + | :*v0.0.2b |
| + | ::*fixed a timing issue in the usbgecko flash code. since i couldn't reproduce this on my setup, thanks go out to my testing bitches bLAStY and NoNameNo |
| + | ::*the included client now works on osx thanks to bushing |
| + | ::*added an extra checked for malformed .dol files (some doltool converted .elf's) |
| + | ::*included a tiny test application |
| | | |
| :*v0.0.2 | | :*v0.0.2 |
| ::*first public release | | ::*first public release |