Gp2x With A D-pad.


ok, sorry for the late reply

using a single dip-14 microcontroller can be pretty much easy, I was thinking in an atmel attiny24 or attiny44, both have 14 pins which 12 can be used for general purpose, which means 4 inputs and 8 outputs, perfect joystick fitting (perhaps the only bad is that we can't have a stick push button, then we shall need a 13 pin mcu) all working between 1.8 and 6Vdc

If will it be useful, I think it's easier to build one and give it a try and see what it can do, but perhaps a kernel patch can be easier to do... as for me, it's easier to implement in hardware than implementing in software (as long as it have enough space inside gp2x)

my gp2x's joystick is broken, I started to miss the left then I tried to chop off the base of the stick as some other thread in this forum told me to and then it completely ruined my joystick... now I can only play by pressing directly the bare metal stick :(

I can pretty much develop one and some for somebody who actually have a d-padded gp2x to try, just follow the pinout and you're free to go, as long as the Vcc is pin 1 and GND is pin 14, everything else can be used/mapped as we wish
 
Lint posted on Aug 30 2006 at 08:50 AM said:
ok, sorry for the late reply

using a single dip-14 microcontroller can be pretty much easy, I was thinking in an atmel attiny24 or attiny44, both have 14 pins which 12 can be used for general purpose, which means 4 inputs and 8 outputs, perfect joystick fitting (perhaps the only bad is that we can't have a stick push button, then we shall need a 13 pin mcu) all working between 1.8 and 6Vdc

If will it be useful, I think it's easier to build one and give it a try and see what it can do, but perhaps a kernel patch can be easier to do... as for me, it's easier to implement in hardware than implementing in software (as long as it have enough space inside gp2x)

my gp2x's joystick is broken, I started to miss the left then I tried to chop off the base of the stick as some other thread in this forum told me to and then it completely ruined my joystick... now I can only play by pressing directly the bare metal stick :(

I can pretty much develop one and some for somebody who actually have a d-padded gp2x to try, just follow the pinout and you're free to go, as long as the Vcc is pin 1 and GND is pin 14, everything else can be used/mapped as we wish
My opinion is that if we're going to bother with making this chip at all, it should be fully functional which includes the stick button, and that doing so is worth the small extra cost (less than a dollar certainly) of a slightly larger microcontroller. I'd been planning to use the atmega88 but I'm sure other chips would work fine.

At the moment I'm confused by Radek's status and also about whether the mod is even necessary, so what I've been planning to do is beg DaveC to send me a set of his boards along with the switches (for which I would pay him of course -- so if you're reading this Dave, take note that I want this :) ). I need to play with it myself to decide whether the added compatibility is worth the added complexity.

Given that the button states are gotten in many software apps by reading the MMSP2 hardware registers directly, I have some doubts that a kernel module would be very helpful but I could just be ignorant about what is possible.

One thing I am still not quite clear on for Dave's mod is what stops the D-pad from falling out... is the rubber skirt glued down somehow?
 
Last edited by a moderator:
Dzz posted on Aug 30 2006 at 04:24 PM said:
I need to play with it myself to decide whether the added compatibility is worth the added complexity.

One thing I am still not quite clear on for Dave's mod is what stops the D-pad from falling out... is the rubber skirt glued down somehow?
Compatible with what? A D-pad by itself produces diagonals in everything except Whack the Rat - it is, I believe, the ONLY game which doesn't work properly with a D-pad only (no circuit board). Dzz - there really is no point in this circuit board at all, now that GnGeo has been upgraded to fix this issue - all emulators and all (but one) homebrew game works perfectly well without it - so there is nothing to achieve by a circuit board you refer too - everything works fine without it, and it just creates more problems, as Epicenter pointed out before.

A D-pad can simply be connected the the existing connectors on the back of the joystick; including the centre push button connectors - the choice is an internal D-pad or a flat and low external D-pad.

I believe, on DaveC's design, he removed the joystick by de-soldering it; the D-pad he was looking at had extended pins, to go through the pins removed from the old joystick, re-soldered then to make the unit secure. I think this is right.

yaustar posted on Aug 30 2006 at 03:48 PM said:
bacteria posted on Aug 30 2006 at 03:02 AM said:
When I make it, and test it, I will post pics, and a "how to make it" guide. Then everyone else has a chance to have a D-pad, for almost no cost. using standard household materials - plastic, tin-foil, glue, electrical wires, foam pads, cardboard - no fancy rubber contact pads which you can't stick to anything!!
Now this part interests me somewhat. I be really interested to see what it look like.
Good. I am hoping that many other users will also show interest and post their comments/interest here about this. If enough people are interested, it will be worth my time producing a guide. So far, you are the first! :D
 
Last edited by a moderator:
bacteria posted on Aug 30 2006 at 09:43 AM said:
Compatible with what? A D-pad by itself produces diagonals in everything except Whack the Rat - it is, I believe, the ONLY game which doesn't work properly with a D-pad only (no circuit board). Dzz - there really is no point in this circuit board at all, now that GnGeo has been upgraded to fix this issue - all emulators and all (but one) homebrew game works perfectly well without it - so there is nothing to achieve by a circuit board you refer too - everything works fine without it, and it just creates more problems, as Epicenter pointed out before.

Obviously (being lazy) I want to believe this but I just am not sure without seeing it with my own eyes. By "compatible" I mean compatible with the hardware, to make sure that functionality is not lost. I will give you some examples:

1. Stick click. Besides the fact that some people LIKE the stick-click, there may be programs that require it. For example, my NetHack port has every single button mapped to an action, including that one. I can change this, and I will if more than three or four people actually have incompatible Dpad hardware, but it's not obvious to me that ALL software for the gp2x will work perfectly without stick-click. Even if 95% of it does, that extra 5% is the added compatibility I mean.

Another example on this topic: The Common User Interface Recommendations on wiki.gp2x.org makes heavy use of the stick click. Any application implementing those (on the theory that standard interfaces are good) would be a headache for Dpad users. We can say that those recommendations are stupid (I wouldn't argue), but stupidity isn't the issue. Compatibility is.

2. Diagonals. Maybe your Dpad has eight outputs which can attach to the appropriate input lines on the gp2x, but DaveC's does not. This means that a diagonal will be indicated in the MMSP2 register as, say, UP and LEFT both on at once. Since this can never happen with the stock gp2x, not all software will be written to look for that combination, meaning that the diagonals won't work. I agree that most games work fine without diagonals anyway, and the most popular apps will probably change their input processing code to handle this case if they haven't already, but I'm not convinced without seeing it for myself that nothing is lost.

There's no harm in what I intend to do -- make DaveC's Dpad mod and if I find compatibility problems that bug me then make a board with the chip on it to solve those problems. It doesn't require anybody to change anything that they are doing, it doesn't delay anything.

Regarding Epicenter's problems with the chip -- of course any mod like this has to work properly, but I don't think it's impossible to debug it and make it work, the concept is extremely simple.
 
Last edited by a moderator:
@ Dzz - No, my D-pad has 4 directional inputs, as does DaveC's. All the software on the GP2x (bar one homebrew game) accepts up+left as an up/left diagonal. 4 directions truly gives 8 actual directions. Proof - I have only used this system since April, everything I play uses this principle - and all works. Those other people who have tried a D-pad also concur.

The only issue is with centre-push button. To avoid using Radek's circuit altogether, you just make a separate centre-push button and connect its two wires to the connectors on the back of the joystick button. I did this, I had to, Wolfenstein 3D only accepts your savegame if you press the centre-push button to confirm your choice! Any two wire button switch does this, and it can be mounted anywhere you want on the GP2x. Personally, I put one directly above the D-pad assembly I made (not on it - that was too fiddly), tin-foil, separated by 1/2mm foam pad (to connect/disconnect the circuit) - flat and functional. Why muck about with a circuit board just to act as centre-push when you press all 4 directions, when you can easily have the centre-push button as a separate button? The only connections to the back of the joystick are: 4 wires (up/down/left/right), 1 wire to complete the circuit for the 4 direction keys, 2 wires for centre push = 7 wires in total. End of. This is why Radek's board is not needed, and is obsolete now - games play with directional movement with just a standard 4 way D-pad.
 
Dzz posted on Aug 30 2006 at 03:24 PM said:
My opinion is that if we're going to bother with making this chip at all, it should be fully functional which includes the stick button, and that doing so is worth the small extra cost (less than a dollar certainly) of a slightly larger microcontroller.

so if you're reading this Dave, take note that I want this :) ). I need to play with it myself to decide whether the added compatibility is worth the added complexity.

One thing I am still not quite clear on for Dave's mod is what stops the D-pad from falling out... is the rubber skirt glued down somehow?

Another example on this topic: The Common User Interface Recommendations on wiki.gp2x.org makes heavy use of the stick click. Any application implementing those (on the theory that standard interfaces are good) would be a headache for Dpad users. We can say that those recommendations are stupid (I wouldn't argue), but stupidity isn't the issue. Compatibility is.

Just make sure the microcontroller is super power efficient. The lower the power the better. Battery life is already not too great.

I am having a few prototype boards proffessionally made as we speak. I will see how they turn out.

What keeps the pad from falling out is the rubber skirt. It is trapped between my board and the case, no glue needed. A pin keeps the pad oriented as it fits in that notch already there. I needed to trim that lip on the pad so it fits, the GP2X case is too thick.

Could we change the wiki to state for standard interfaces you must include an alternate button combo so that the center push is NOT required? You can use it but it wouldn't be needed and an alternate should be given. Also can we add to the wiki that pressing 2 ordinals will give a diagonal? This addition to the joystick code will not effect the standard stick anyway.
 
Last edited by a moderator:
bacteria posted on Aug 30 2006 at 10:46 AM said:
@ Dzz - No, my D-pad has 4 directional inputs, as does DaveC's. All the software on the GP2x (bar one homebrew game) accepts up+left as an up/left diagonal. 4 directions truly gives 8 actual directions. Proof - I have only used this system since April, everything I play uses this principle - and all works. Those other people who have tried a D-pad also concur.

The only issue is with centre-push button. To avoid using Radek's circuit altogether, you just make a separate centre-push button and connect its two wires to the connectors on the back of the joystick button. I did this, I had to, Wolfenstein 3D only accepts your savegame if you press the centre-push button to confirm your choice! Any two wire button switch does this, and it can be mounted anywhere you want on the GP2x. Personally, I put one directly above the D-pad assembly I made (not on it - that was too fiddly), tin-foil, separated by 1/2mm foam pad (to connect/disconnect the circuit) - flat and functional. Why muck about with a circuit board just to act as centre-push when you press all 4 directions, when you can easily have the centre-push button as a separate button? The only connections to the back of the joystick are: 4 wires (up/down/left/right), 1 wire to complete the circuit for the 4 direction keys, 2 wires for centre push = 7 wires in total. End of. This is why Radek's board is not needed, and is obsolete now - games play with directional movement with just a standard 4 way D-pad.
Re: diagonals, I still want to see it for myself though (hope that's okay :) ).

Your solution to the stick click sounds fine to me; it will be a lot easier for a kit if DaveC incorporates the connections into his board, I don't know if that is included right now.


DaveC posted on Aug 30 2006 at 11:57 AM said:
Just make sure the microcontroller is super power efficient. The lower the power the better. Battery life is already not too great.
Yeah, the power requirements are extremely small, I don't think that's a problem (by extremely small I mean way under one milliamp). But hopefully the whole thing is unnecessary.
What keeps the pad from falling out is the rubber skirt. It is trapped between my board and the case, no glue needed. A pin keeps the pad oriented as it fits in that notch already there. I needed to trim that lip on the pad so it fits, the GP2X case is too thick.
Thanks! That makes sense.
Could we change the wiki to state for standard interfaces you must include an alternate button combo so that the center push is NOT required? You can use it but it wouldn't be needed and an alternate should be given. Also can we add to the wiki that pressing 2 ordinals will give a diagonal? This addition to the joystick code will not effect the standard stick anyway.
Sounds good to me, I don't know where that wiki entry came from in the first place. I think it is mostly ignored but somebody changing it is probably a good idea anyway. I'm not completely comfortable with a mod that produces a gp2x with no stick click, but there are alternatives... the chip is one alternative. A separate button like bacteria suggests is another. A less desirable alternative is to ask all application developers to interpret all four directions simultaneously to mean stick-click in their software (just like they are required to interpret left+up as a diagonal). I say less desirable because you can't count on everybody to do anything.
 
Last edited by a moderator:
yaustar posted on Aug 30 2006 at 03:48 PM said:
bacteria posted on Aug 30 2006 at 03:02 AM said:
When I make it, and test it, I will post pics, and a "how to make it" guide. Then everyone else has a chance to have a D-pad, for almost no cost. using standard household materials - plastic, tin-foil, glue, electrical wires, foam pads, cardboard - no fancy rubber contact pads which you can't stick to anything!!
Now this part interests me somewhat. I be really interested to see what it look like.
:lol:
 
Last edited by a moderator:
Dzz posted on Aug 30 2006 at 04:12 PM said:
The Common User Interface Recommendations on wiki.gp2x.org makes heavy use of the stick click. Any application implementing those (on the theory that standard interfaces are good) would be a headache for Dpad users. We can say that those recommendations are stupid (I wouldn't argue), but stupidity isn't the issue. Compatibility is.

Hmm I tried to change it, but I can't even find that page in the wiki :blink:

Otherwise I completely agree, compatibility should be concern numer one.
 
Last edited by a moderator:
Julius posted on Aug 30 2006 at 02:14 PM said:
Dzz posted on Aug 30 2006 at 04:12 PM said:
The Common User Interface Recommendations on wiki.gp2x.org makes heavy use of the stick click. Any application implementing those (on the theory that standard interfaces are good) would be a headache for Dpad users. We can say that those recommendations are stupid (I wouldn't argue), but stupidity isn't the issue. Compatibility is.

Hmm I tried to change it, but I can't even find that page in the wiki :blink:
If you look on the lower right side of the front page of wiki.gp2x.org you see the link to it.
 
Last edited by a moderator:
bacteria posted on Aug 30 2006 at 03:02 PM said:
Before I go to the effort of making a "how to make it" guide, I would like some feedback please that people would like to see this topic posted; after all, documenting the guide will take more than twice the time it takes to actually make it - happy to do it, as long as people benefit from the article and MAKE one for themselves (otherwise there is no point me doing the article)! :blink: Would you like to see it when it is ready? I estimate you could make your own D-pad for the GP2x for literally pence/cents from scratch, maybe even for free - everyone could make one!! B)

i'm interested to see more detail of how you would do this. i am also working on an external d-pad assembly - but i'm using salvaged parts from other controllers, but it certainly wont sit as low as you say you can get it.

please, show us!
 
Last edited by a moderator:
chunkyktr posted on Aug 30 2006 at 09:39 PM said:
bacteria posted on Aug 30 2006 at 03:02 PM said:
Before I go to the effort of making a "how to make it" guide, I would like some feedback please that people would like to see this topic posted; after all, documenting the guide will take more than twice the time it takes to actually make it - happy to do it, as long as people benefit from the article and MAKE one for themselves (otherwise there is no point me doing the article)! :blink: Would you like to see it when it is ready? I estimate you could make your own D-pad for the GP2x for literally pence/cents from scratch, maybe even for free - everyone could make one!! B)

i'm interested to see more detail of how you would do this. i am also working on an external d-pad assembly - but i'm using salvaged parts from other controllers, but it certainly wont sit as low as you say you can get it.

please, show us!
Thanks guys, nice comments.

Using salvaged parts from other controllers (Chunkyktr) for an external D-pad is likely yo give a chunky finished product because it will need a circuit board, rubber contact pad, D-pad top, and things to secure the unit together. The reason I can make one so slim is because tin-foil is very, very thin and a very good conductor of electricity for low voltage (I was testing my R&D a few months back at 3 volts, the GP2x uses less than this). You only need a tiny gap to separate the contacts. The electrical wires have plenty of space under the D-pad to be concealed.

Below is a crude diagram:

a.jpg


The black is the GP2x case, the black block is the joystick (stick removed, showing gap above it), the grey above the black is the support for the D-pad, the grey (top bit) is the D-pad circle itself. The red and blue lines represent some of the wires, connecting to the underside of the support; the tin foil is the purple line, going from the wires underneath to the top of the support; the green wire connecting from the D-pad circle (to complete the circuit) - the red, green and blue wires (in reality, 4 directions, 1 connection wire) link through the existing joystick hole to the back of the stock stick (which is not removed) at the rear of the motherboard, as before. For both the D-pad circle and the support, tough and thin plastic can be used (eg lunchbox plastic or the plastic top from a CD case for example - under 1mm thick; or thin metal, painted to remove its conductive properties). This is the principle I used for my existing D-pad assembly, but better. The tin foil on the D-pad circle can cover the whole underside, the underside contacts take just under 1/4 of the area concerned (when the D-pad therefore goes diagonal, two contacts are made = diagonal.

Crude diagram, but it illustrates what I know works, and hopefully helps you guys with ideas... ;) You could even use some of the space in the dome above the joystick hole to make the surround recessed if you want to, so the D-pad circle would sit nearly flat...

This works, it is not theory, it is just my Mk X version. B) When I make the unit, I will provide photos of each stage of production.

Javacat posted on Aug 30 2006 at 07:47 PM said:
*Wonders when bacteria will be appearing on Blue Peter*
:lol: :lol: mind you, there is plenty of bacteria in hospitals....
 
Last edited by a moderator:
Perhaps you could mount an extra button somewhere for stick press compatibility?

Surely that would be easier than trying to make a pressable D-pad?
 
Dzz posted on Aug 30 2006 at 06:12 PM said:
Your solution to the stick click sounds fine to me; it will be a lot easier for a kit if DaveC incorporates the connections into his board, I don't know if that is included right now.


Yeah actually I do have pads for the push switch on my board. I designed it to be useable in any way possible, logic board, no logic board. All you have to do is solder bridge a few spots to use it without the logic board.

I still say the logic board is a good idea. With it you don't have to worry about something comming along that won't work without it.
 
Last edited by a moderator:
Shikaku posted on Aug 31 2006 at 01:27 AM said:
Aninhumer posted on Aug 30 2006 at 06:39 PM said:
Perhaps you could mount an extra button somewhere for stick press compatibility?

Surely that would be easier than trying to make a pressable D-pad?

Z button like the N64 :ph34r:
Exactly - a separate button. That is what I did for my current one. The centre-push button is important, usually to confirm a save, or similar in a game, or exit a game in a couple of emulators. This means the centre-push button can be mounted anywhere you like on the GP2x. I had mine above the D-pad; it could equally be placed on the side or even underneath the GP2x, by drilling two tiny holes in the case for two wires. Yes, a bit like the Z button on the N64, if you like.

The choice is either:

1) A traditional D-pad (eg Nintendo type) which you need to cut the centre out of so all 4 directions can press on the base at the same time; and a logic board to encode this into a centre-push feature (eg DaveC). You could of course not use the logic board and just connect the centre push buttons directly to the joystick connections anyway.

or

2) A D-pad with the centre pivit in place, which stops all 4 directions being pressed at the same time (as mine has to work). Advantage of this design is that it you can only press one of the 4 directions, or their diagonal equivalents; rather than all 4 directions in error. This requires the centre-push button to be mounted separately on the GP2x (could be next to the D-pad if you wish) - giving full compatability.

By not having a logic board, there is no additional drain on the batteries, as there is no additional electronics to feed; my solution is purely making wires connect; therefore with my approach, it is not possible to bring in any future potential incompatabilities if the firmware changes; and of course no drain on batteries - neither is relevant in my design.

It is personal choice at the end of the day. ;)
 
Last edited by a moderator:
Julius posted on Aug 30 2006 at 09:14 PM said:
Otherwise I completely agree, compatibility should be concern numer one.
Absolutely. You need a centre-push button feature, my solution allows for a separate button for this functionality, so IS 100% compatable. ;)
 
Last edited by a moderator:
Back
Top