Here's a video of Super Smash Bros. Melee with 5 human players on Wii using GeckoTunnel. Player 5 is using a USB gamepad via USB Gecko. (Sorry about the lack of sound.)
http://www.youtube.com/watch?v=Rr6IaXgjCNc
very nice. I attempted to find out a way to upload commands (like walk forward and such) on call of duty black ops for wii and pretty much failed. :\ but in mind i planned on achieving something like this. very well done ;)
PS: i look forward to that talk on youtube ;)
how´s that possible? :O
What about doing it on brawl aswell? Harder, Impossible? :confused:
@hetoan2: Thanks! The talk should be on YouTube soon.
@Bully: This works because there's a debug menu in Melee which allows 6-player matches, and you can set players 5 and 6 to human. Since there isn't a 5th or 6th controller, those players usually just sit doing nothing. However, players 5 and 6 do still have controller data variables, there's just nothing that writes to them. I rigged GeckoTunnel to write controller data to the player 5 variable, enabling my laptop to control player 5. There are some glitches at the moment, due to bugs in Melee's 6-player mode (I gather that the Melee devs didn't expect someone to write to those variables). Specifically, player 6 crashes with a bad pointer when you write to its controller data (hence why this video only has 5 players), and player 5 also has no control of the analog Y axis (it crashes similarly to player 6's data). I'll be trying some ASM hacking to fix those crashes, but I didn't have time to do so before the conference talk, so in this video, player 5 doesn't use its Y axis. Still a fun proof-of-concept though.
As for Brawl, if someone can provide a Gecko code which allows more than 4 players and also sets those players to human-controlled, then yes, it's probably possible to do something similar for Brawl.
I'm curious, how did you find the location of the "real" pad data?
I once wanted to make a Super Mario Galaxy code that gave p1 access to all of p2's powers (mainly super jumps and freezing enemies). I would do this by copying p1's pointer data to p2, and fooling the game into thinking that the p2 wiimote was attached. However, I never got it to work quite right...
Quote from: dcx2 on April 04, 2011, 02:29:16 PM
I'm curious, how did you find the location of the "real" pad data?
I once wanted to make a Super Mario Galaxy code that gave p1 access to all of p2's powers (mainly super jumps and freezing enemies). I would do this by copying p1's pointer data to p2, and fooling the game into thinking that the p2 wiimote was attached. However, I never got it to work quite right...
First I searched for every address that contained P1's pad data. Next I set a Read BP on each one, and noted the address where it hit. Then I set an Execute BP on each of those addresses, and looked for a register that was cycling between 0 and 5 (there were some which only cycled between 0 and 3, which I discarded). I then took the addresses where that instruction was reading when that register was 4 and 5. Next I set a Write BP on each of those addresses and backtraced until I found an address for P5 and P6 which didn't get written to; those were the pad addresses for those players. Hope I explained that okay.