I Want to Mod My Hitbox (Help Plz)

Hey Everyone,

I got a hitbox and I must say I like it a lot but I am not happy with the design. I want a larger heavier build, standard size buttons, and a more reliable USB port. A nice option I would also like to implement is getting some custom art.

Also if possible I want to mod it so that double negatives such as holding left + right or up + down will cancel the previous direction rather than being neutral or up respectably.

I looked around on the forum a bit with advanced search but didn’t notice a thread for this. Any guides or threads that are available on this subject that someone can show me would be great.

Thanks,
Pagan

Honestly, if you want bigger buttons, a larger case, and a pluggable USB, you’d be better off just getting someone to make you a custom one and selling yours—though you will need 50 posts to do so on SRK, your account has the required age, however.

As far as the advanced electronics go, it’s likely possible, but someone will probably have to custom-program a microcontroller to do that, or work some sort of logic gate wizardry that’s beyond my level.

So if I have 50 posts I can request a custom controller?

Nerrage’s suggestion is commissioning a custom box and selling your old/current one. However, you need 50 posts if you want to sell on SRK.

From http://shoryuken.com/forum/index.php?threads/81882/

Well that’s sort of roundabout from what I’m after. I just want to mod my hitbox. I see how to’s on youtube for MadCatz but haven’t found any for the hitbox yet (though I see modded ones everywhere).

Look at it this way: considering what you want:

  1. larger heavier build = new box/housing
  2. standard size buttons = new top panel + new buttons
  3. more reliable USB port = new wiring
  4. custom art = new art
  5. changing SOCD results = new electronics

You’re looking at changing/modding pretty much ALL components. Not to say you can’t do most it with some woodworking tools, a dremel and a soldering iron, but it hardly seems worth the effort.

I’d say FreedomGundam’s right, at least about making it a new project rather than a mod. You’re talking about a new controller, not a modded HitBox. And to be frank, if you’re looking for step-by-step tutorials for the mods you’re trying to do… you’re likely better off paying a custom builder; you’ll get a better result for probably about the same as the combined price of your old HitBox + all the new parts. Not to mention the effort.

Alternatively, a lot of what you’re talking about could probably be done by using a TE as a base, and getting a custom panel + plex from LLC. The SOCD change would probably best be done via a custom firmware for a DualStrike or Cthulhu, so you’d need a software guy to do that, or it could be done in hardware with some logic and latches, which would take a hardware guy to design at the very least (but if you wanted to later dual-mod it, it would work with a 360 pad hack or stock TE PCB as well).

Either way, it makes no sense to to me to start with your HitBox – if you need a larger case with a different layout (aka the larger buttons), AND you’re unhappy with how the SOCD cleaning works… there’s literally no part of your old HitBox that’ll be carried over.

I actually am in the process of making an all 30mm “hitbox” using a TE base, will be dual modded as well. PM me if you’re interested.

Made mine already, now I’m getting used to using it. Good luck on getting the electrical logic working the way you want though.

I made my own SOCD cleaner, but doing what this guy wants is over my head. I’ll wait for a tutorial haha

Sounds good, thanks for the replies everyone. I have a TE case i was planning on using for this project actually. I’ll PM you Vicko. Also getting all this would be surprising i just wanted to list off the various reasons i had for modding it. = )

I think you’d want to go for a microcontroller for it. You’d only need 4 I/O pins, 2 input, 2 output. Wire left and right to an input pins, and then output pins to the left and right of the PCB.

In rough Arduino, I’d do something like this:

[details=Spoiler]
void setup()
{

[INDENT=1]int left_input = (whatever pin you connect it to);[/INDENT]
[INDENT=1]int right_input = (whatever pin you connect it to);[/INDENT]
[INDENT=1]int right_output = (whatever pin you connect it to);[/INDENT]
[INDENT=1]int left_output = (whatever pin you connect it to);[/INDENT]
[INDENT=1] [/INDENT]
[INDENT=1]pinmode(left_input, input);[/INDENT]
[INDENT=1]pinmode(right_input, input);[/INDENT]
[INDENT=1]pinmode(left_output, output);[/INDENT]
[INDENT=1]pinmode(right_output, output);[/INDENT]
[INDENT=1]}[/INDENT]
[INDENT=1] [/INDENT]
void loop()

{
[INDENT=1]digitalwrite(left_input, HIGH);[/INDENT]
[INDENT=1]digitalwrite(right_input, HIGH);[/INDENT]
[INDENT=1]digitalwrite(left_output, HIGH);[/INDENT]
[INDENT=1]digitalwrite(right_output, HIGH);[/INDENT]
[INDENT=1] [/INDENT]
[INDENT=1]if digitalread(left_input) == LOW //will be LOW if you push the button down[/INDENT]
[INDENT=1]{[/INDENT]
[INDENT=2]if digitalread(right_input) == LOW //if it’s pressed after left[/INDENT]
[INDENT=2]{[/INDENT]
[INDENT=3]digitalwrite(right_output, LOW); //set right to engaged[/INDENT]
[INDENT=3]digitalwrite(left_output, HIGH); //disengage left[/INDENT]
[INDENT=3]}[/INDENT]
[INDENT=2]else[/INDENT]
[INDENT=2]{[/INDENT]
[INDENT=3]digitalwrite(left_output, LOW);[/INDENT]
[INDENT=3]}[/INDENT]
[INDENT=2]}[/INDENT]
[INDENT=2]break;[/INDENT]
[INDENT=1] [/INDENT]
[INDENT=1]if digitalread(right_input) == LOW[/INDENT]
[INDENT=1]{[/INDENT]
[INDENT=2]if digitalread(left_input) == LOW[/INDENT]
[INDENT=2]{[/INDENT]
[INDENT=3]digitalwrite(left_output, LOW);[/INDENT]
[INDENT=3]digitalwrite(right_output, HIGH);[/INDENT]
[INDENT=3]}[/INDENT]
[INDENT=2]else[/INDENT]
[INDENT=2]{[/INDENT]
[INDENT=3]digitalwrite(right_output, LOW);[/INDENT]
[INDENT=3]}[/INDENT]
[INDENT=2]}[/INDENT]
[INDENT=2]break;[/INDENT]
[INDENT=1]}[/INDENT]
[INDENT=1][/details][/INDENT]
Probably is buggy and doesn’t work, but it’s just a rough first idea.

Actually, totally realized it wouldn’t work, since it would constantly loop over to the left direction whenever there was SOCD. But it could be fixed. Was just my first idea.

SOCD cleaned here also. Man my left hand hurts. My fingers are not used to the movements. I need more training.

C-Style Pseudocode that should work (there’s a LOT of ways to approach this problem):

Spoiler

//setup
while true
{
inputs = readinputs
switch (inputs)
{
case LEFTVAL: //only left is being pressed
outputs = LEFTVAL;
canoverride = RIGHTVAL;
break;
case RIGHTVAL: //only right is being pressed
outputs = RIGHTVAL;
canoverride = LEFTVAL;
break;
case BOTH: //both are pressed
outputs = canoverride;
break;
default: //neither being pressed
canoverride = 0;
outputs = NOVAL;
}
output(outputs)
}

Some code could be added to handle the case of both being pressed simultaneously (really only realistic at the beginning of runtime; even underclocked, it’s unlikely that you could nail that at the high sample rate of whatever chip is used), but I’ll leave that as an exercise to the reader.

Other than that, feel free to point out any errors/add suggestions.

Fixed width, and indent…

Spoiler


//Assuming 1 means that the button is not pressed.
int leftin,rightin;
int leftout=1;
int rightout=1;
int toggled=0;
while(true) {
  leftin=getleft();
  rightin=getright();
  if(leftin || rightin) {  //at least one button is not pressed.  Unset the toggle flag
    leftout=leftin;
    rightout=rightin;
    toggled=0;
  } else if (!toggled) { //Only do this once until a button is released...
      toggled=1;
      if(rightout && leftout) { //Both buttons were low, no toggle
        ;
      } else {
        leftout=!leftout;
        rightout=!rightout;
      }
  }
  drive_pins(leftout,rightout);
}


For the adventurous t is also possible to build something that has the correct behavior with an edge-triggered flip flop (which can be built with NAND gates or transistors…)

Code tags, nice; didn’t realize the board supported them. Yeah, that looks like a good way to do it. I structured mine to use a bitmask of the relevant input and output registers, shifted into the 1’s and 2’s columns, but it’s the same idea (and a cleaner implementation). Same basic idea, though.

I’m a fan of the flip flop solution myself, but the problem is getting packages and wiring them up right… if you have the tools, it’s almost cheaper to go with an AVR/PIC. And if you’re good, you could program and then dead-bug a DIP (or even, very carefully, a SOIC) chip and be done with it, smaller package and no board. Those chips are crazy cheap these days. It kinda makes me weep for the old days. That being said, I might just find an appropriate chip and burn a few of these, just because I haven’t used my AVR programmer in a while.

NOTE: Couple typo’s I spotted in your code: you change toggled to toggle, and getright() is missing it’s t. But that is, effectively, the code you’d need.

I’m not sure there’s any ‘almost’ about it. Flip-flop ICs are surprisingly expensive. Thanks for pointing out the typos - I had originally thought bitmask too but I wanted something closer to readable pseudo-code.

So what would i need to implement code like that? i’m completely new to ardunio/c

For a one-of, starting from scratch, you’re probably well served with buying an arduino that has a USB connector…


This is - in many ways - massive overkill, but it should be very easy.

You’ll also need wire, to be able to solder, and a USB cable to program the Arduino. For the controller PCBs I’ve dealt with, the Arduino can drive and read the pins directly, but YMMV there - then you’d need another $0.30 in resistors and such to make it work.

Assuming that you can just drive and read pins directly, you put the Arduino between the signal lines of the buttons and the controller PCB. From there, it should be pretty easy to work out based on just the reading and writing digital pins examples they have there.

Jesus… is there something cheaper that can be done with FTDI? I have an ftdi usb cable already