Dumb question: Is it possible to manually change/hack the controls in a game?

Discussion in 'Nintendo GameCube' started by FreezingIceKirby, Aug 23, 2014.

  1. FreezingIceKirby
    OP

    FreezingIceKirby Advanced Member

    Newcomer
    58
    8
    Jul 15, 2014
    United States
    I don't expect to make any progress with this, considering I'm not that knowledgeable with coding and whatnot (and this section of the board seems kinda dead)... but hell, might as well ask, anyway.

    Basically, I'm wanting to change the controls in a certain game because the default setup is unpleasant (and there's no option to change it). I've already figured out how to extract the contents out of an ISO and re-inserting whatever I've changed back in after I'm done (and the ISO plays fine and dandy), but I'm just not sure what program to use to read/change the code, nor do I even know where to begin regarding what file contains the information that says "Hey, this controls what the A/B/whatever buttons does".

    (All I'm really wanting to do is change the function of the B button with the X button, and vice-versa... though I imagine it's much more difficult than it sounds... :unsure: )

    So, I thought I'd ask (before wasting too much of my time on something that might be completely futile)... is it even possible?
     
  2. FAST6191

    FAST6191 Techromancer

    pip Reporter
    24,129
    10,045
    Nov 21, 2005
    United Kingdom
    Possible, absolutely and it is well within sensible hack/project realms (there have been several examples in the past on all sorts of consoles).
    There is likely no program to do it as such things tend to be buried in the code (in this case the main.dol file) and that will probably be the tripping point for this -- you will probably need someone that can code/hack for the GC/Wii. This probably does mean versed assembly hacker (at least for the initial stuff) but there is a slim possibility for cheats.

    Is there a particular reason you did not mention the game name? Games tend to treat controls slightly differently and if the would be hacker can see what goes it can inform where things go from there -- if the game comes with some control schemes then that can mean a lot compared to if it comes with none at all.

    Going a bit more general from the above there are several ways of approaching the problem, some of which are informed by the way the game works and what you want to do.
    Generally games do not read the controller state and act upon it. They tend to copy the controller state ( http://hitmen.c02.at/files/yagcd/yagcd/chap9.html#sec9.2.2 ) and act upon that, as said state probably updates tens of times a second it is not so bad and it also has other benefits (see switch bounce).
    The cheat method would be to read this copied state and edit that. It is how you often make button activated cheats but depending upon how fast the cheat engine is then you might not get to it in time. If you are editing this yourself and hook the read code and copy then you should be within time.

    If the game has the option to remap controls (even if only has schemes you also do not like) then it probably has an additional layer here and that is great for editing. If it is analogue sensitivity only is a tough one -- it might have that but it might then leave buttons alone and pass them straight through.
    If it does not have options to change things then you get to edit the control state copy or you get to edit the game itself.
    As the control state copy concept was already covered we now get to cover the game itself stuff... the game takes the control state copy and then does a bunch of checks, depending upon what is happening (pause menu, battle, cutscene.....) the game may do all sorts of things. You get to find the thing that checks for the area you want and change it so it reads X instead (possibly also remapping what x currently does to b or something else). Depending upon how well or how badly the devs coded the game this can be one line thing or you have to do it for every level/bonus level.

    Alternative. Get a copy of dolphin. It is pretty good for GC these days and remapping controls is a possibility there.
    Alternative 2. Play with a soldering iron and rewire things at controller level. Controller buttons are just switches in the end and that means you typically have just the two wires doing things. A few cuts and a few solder joins later and you have yourself a remapped controller.
    In theory you might also have some options for the wii but such a hack would potentially be as hard, if not harder, than doing it for the game -- one is hacking a game, this is hacking MIOS and the like.
    Alternative 3. Some kind of device in line with the controller to modify what it sends. I don't know if I have ever seen one for a console, I have made a few for the PC though, mainly as jokes but once or twice for actual macros.
     
  3. FreezingIceKirby
    OP

    FreezingIceKirby Advanced Member

    Newcomer
    58
    8
    Jul 15, 2014
    United States
    To be honest, I just forgot. My apologies on that.

    The game in question I was wanting to hack is the Mega Man Anniversary Collection. Yeah, I know it's silly, since I can just emulate the games inside easily on any system, or even with the oldest of computers (or buy them on Virtual Console)... but despite the questionable audio quality, I like that these versions include no lag whatsoever, which to me makes the games a lot more fun... that, and I like the L/R item switching (and removing the memory card or refusing to set up one eliminates the "would you like to save" window from popping up, so no interruptions from that, whatsoever).

    Going by what you said though, and considering how difficult something like this just might be (as well as the game in-question probably wouldn't be worth a real-deal hacker's time), it sounds like it'd be best if I just got used to the reversed controls... or just stick to emulation/VC (I've been playing these games with lag all these years anyway... it's no big deal if I have to continue doing that.)

    Probably best if I give this up, as I don't think I'm going to be able to figure it out with my limited knowledge (nor I should waste anyone else's time with a game like this)... more trouble than it's worth, I suppose. In any case, I appreciate you taking the time and posting all that info. It was well informative and shows you definitely know your stuff and what you're talking about (which is definitely more than what I can say about myself -lol-). Thanks~


    (As for Dolphin... Unfortunately, my Laptop's nowhere near good enough to run that emulator at full speed, otherwise I would've considered that. Sadly, the ol' girl's getting up there in age, so I'm mainly a console gamer... which is why I was trying to set this up for my console.)


    EDIT - Not trying to sound like such a downer by giving up so easily... I'm just not sure any hacker would take on this task, let alone just tell me to just deal with the controls or get used to the original versions through the real deal/VC/emulation. Besides that, I've tried for the past couple of days to look into the code itself (I did see some .dol files, as you mentioned) using all sorts of different programs (Hex editors, and other things I can't remember the names of), but it all shows up as gibberish and whatnot, with only a small section of it being understandable (but it only showed up as memory card stuff, or .dsp audio files)... or rather, just to come out and say it, I don't think I'm smart enough for the task. lol
     
  4. FAST6191

    FAST6191 Techromancer

    pip Reporter
    24,129
    10,045
    Nov 21, 2005
    United Kingdom
    My main machine is a well (ab)used core2 e6600 so I can sympathise on the old machine bit. Equally I am probably the last person you will have to sell on the lack of virtue of bug for bug emulation -- I love my filters, lack of slowdown, improved audio....

    Some people were looking into may fixing up some of the megaman ports for the SNES, megadrive and the like though so that might also be an option if they ever come out.

    If you are wandering around a garage sale one day and they have a GC controller for not a lot then I would seriously consider getting one to cannibalise for this project. The soldering should not be that hard and you should even be able to add a toggle switch to turn it back into a normal controller as and when.
     
  5. FreezingIceKirby
    OP

    FreezingIceKirby Advanced Member

    Newcomer
    58
    8
    Jul 15, 2014
    United States
    Hmm... I could try the soldering thing you mentioned. I have a couple third-party controllers that are pretty much just going to waste and I don't mind if they get ruined... I'll look into that and see if I can't come up with anything.

    (I'll also look into the SNES/Genesis stuff you mentioned. Sounds like an interesting project.)

    Again, thanks for the info! :lol: