Changes

14 bytes added ,  21:35, 7 July 2008
m
no edit summary
Line 11: Line 11:  
}}
 
}}
   −
'''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.
+
'''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.
    
==Requirements==
 
==Requirements==
 
:*a usbgecko adapter
 
:*a usbgecko adapter
:*a way to boot wii homebrew
+
:*a way to boot Wii homebrew
    
==Features==
 
==Features==
:*100% native wii mode
+
:*100% native Wii mode
 
:*no medium ejecting, rewriting and inserting required whatsoever
 
:*no medium ejecting, rewriting and inserting required whatsoever
 
:*this is especially useful for wii coders (fast development cycle)
 
:*this is especially useful for wii coders (fast development cycle)
:*reloading. the stub is placed at the memory location 0x80001800. this is PSO reload compatible, which means that any application can jump back there so that you can load another binary without reboot. the libogc exception handler also jumps to this address (when pressing Z on a gamecube pad)
+
:*reloading. the stub is placed at the memory location 0x80001800. this is PSO reload compatible, which means that any application can jump back there so that you can load another binary without reboot. the libogc exception handler also jumps to this address (when pressing Z on a GameCube pad)
 
:*the protocol used for uploading is compatible to the official geckotool (you can use your client of choice)
 
:*the protocol used for uploading is compatible to the official geckotool (you can use your client of choice)
 
:*as always, this is open source ;)
 
:*as always, this is open source ;)
Line 35: Line 35:  
:the boot code will then execute the stub
 
:the boot code 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 wii executables sent using a client application from the pc side
+
:finally, the loader code will accept incoming Wii executables 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 intact in memory. while the usage of the usbgecko onboard flash might seem unnecessary at first, its purpose is the reloading feature. you will upload and run wii applications. these in return will allocate memory and write to it. if the loader code would stay somewhere in memory, any executed application might overwrite it this way, but since it sits on the onboard usbgecko flash, no application can corrupt it.
+
:the chosen architecture has the advantage that the tiny stub is the only component which has to stay intact in memory. while the usage of the usbgecko onboard flash might seem unnecessary at first, its purpose is the reloading feature. you will upload and run Wii applications. these in return will allocate memory and write to it. if the loader code would stay somewhere in memory, any executed application might overwrite it this way, but since it sits on the onboard usbgecko flash, no application can corrupt it.
    
==Build==
 
==Build==
Line 54: Line 54:  
:*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 onboard usbgecko flash once, press the wii RESET button when asked to
+
::*you have to write the loader code to the onboard usbgecko flash once, press the Wii RESET button when asked to
 
:*after that you will see the loader code in action
 
:*after that you will see the loader code in action
:*use a compatible client (like the included one <code>geckoupload</code>, or the official windows geckotool) to send a wii binary
+
:*use a compatible client (like the included one <code>geckoupload</code>, or the official windows geckotool) to send a Wii binary
 
:*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 presented with the loader code again. from there, you can transfer another binary again (no reboot required)
 
:*if you loaded a game/app which has an option to jump back to 0x80001800, you will be presented with the loader code again. from there, you can transfer another binary again (no reboot required)
Line 84: Line 84:     
==Notes==
 
==Notes==
:*you can not run gamecube binaries with this loader since we're working in wii mode here (that's a good thing)
+
:*you can not run GameCube binaries with this loader since we're working in Wii mode here (that's a good thing)
:*the default libogc base address for wii homebrew is at 0x80003f00. this gives a PSO compatible stub 0x1900 bytes of memory for code. hence, the stub's main() functions were written in c so that it's easy to improve/fix
+
:*the default libogc base address for Wii homebrew is at 0x80003f00. this gives a PSO compatible stub 0x1900 bytes of memory for code. hence, the stub's main() functions were written in c so that it's 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
 
:*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
 
:*you can use the trucha signer to boot this app straight from dvd
 
:*you can use the trucha signer to boot this app straight from dvd
Line 91: Line 91:  
==Thanks==
 
==Thanks==
 
:*shagkur, for helping me getting the stub working and providing the linkerscript
 
:*shagkur, for helping me getting the stub working and providing the linkerscript
:*the devkitpro team
+
:*the [[DevkitPro|devkitpro]] team
 
:*team tweezers for making all of this possible
 
:*team tweezers for making all of this possible
:*all open source wii coders
+
:*all open source Wii coders
 
:*nuke for sharing code for his adapter
 
:*nuke for sharing code for his adapter
  
3,032

edits