Jump to content
IGNORED

6 Button Gamepad for the TI-99/4a


Recommended Posts

This is a 6 button 8 directional gamepad for the TI-99/4a natively. (No Adaptors needed)

It's meant to be a D.I.Y. project. Total cost to me was Aprox. $19.00 US for 2 gamepads and 20 diodes.
Controller Source - https://www.amazon.com/gp/product/B00EAM862S/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1
Diode source - https://www.amazon.com/gp/product/B005T6Q3RE/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1
I don't know who created the original schematic, I find it all over the web. But the original in the upper left of my picture below is of a 2 port atari adaptor for the TI-99/4a created by someone else.
Same goes for the pin out diagram for the TI side including the 2 db9 pictures.

Add to that other materials used (solder, wiring, glue) for pennies PLUS time and you have yourself 2 TI-99/4a Gamepads, one for each console.

If I were asked to build one for someone, I'd ask for $20 $40 per joypad completely modded as shown.

I had to up the price because it takes me a couple of hours to complete a mod on one Joypad including setup and breakdown times.

I highly encourage you all to do this MOD yourself but if you really want me to do it for you, I have to ask for more money due to time.

Looking at the attached picture will show you how I did this with the materials I had.

I'll give some notes here:

1. Plan ahead with your own drawings that you understand. Your wire colors may differ depending on the controller you go with. Test them all and make your own chart for pin#, colour, board location.You'll want a controller that has all 9 wires to be certain. Sega Genesis controllers are like that as far as I know.

2. Test every wire and connection from the cable end to the connection ends as you go along. Check all solder points and pad connectivity as you go. One at a time.

3. It's easiest to do the Joy1 and Joy 2 connections first since they do not have diodes associated with them.

4. Be sure to isolate all traces. I used a dremel to obliterate the logic chip in to dust and cut all the lines.
I isolated each solder point the gamepad already had and made sure joy1 and joy2 check lines were isolated from each other. review the photo and follow the traces. It should all make perfect sense.

5. I used Hot Glue to hold things in place and I applied it as I went along ensuring I isolated all possible shorts (using hot glue as an insulator).

6. I also drilled holes next to all the already connected wires on the board to allow me an easy path for my connections. You can see the unused holes in the picture for lines 1->7 and 6->5.

7. I was fortunate that the gamepad board had exposed round pads of bare solder. I suppose those were for Q/A testing. I drilled holes next to the ones I needed for new connections.
I had to scratch the enamel off the common trace for J1 Signal sitting in the middle of the 4 directionals due to lack of circle solder pad.
You can see the circle pads I soldered to, there are a few unused. Look at the ones near the middle buttons that went unused in the picture below....

8. Be careful not to short any bare wires, be aware not to close holes that were there already (for encasement pins) and of course be aware of your drilled holes when applying hot glue if you choose to mimic my method.

9. I borrowed a program from another Topic thread to test. There was a typo in the original, find it and fix it. - Source = http://atariage.com/forums/topic/166557-proplay-new-4-button-gamepad-for-ti/?p=2058171

Already fixed and slightly customized code. Note: I think it's inefficient for game controller code but works for testing.

 

10 call clear

20 call joyst(1,x,y)

30 call joyst(2,b2,b3)

40 call key(1,b1,s)

50 call key(2,b4,s)

100 display at(1,1):"up/down:"&str$(y)

110 display at(2,1):"left/right:"&str$(x)

120 display at(3,1):"button1:"&str$(b1)

130 display at(4,1):"button2:"&str$(b2)

140 display at(5,1):"button3:"&str$(b3)

150 display at(6,1):"button4:"&str$(b4)

200 goto 20


My Test Results.
post-47352-0-87666300-1496611996.png

10. Use it as intended. - You can certainly use this gamepad as a single player Joy1 for any existing games you have. OR play two player games on one gamepad.(WHuh?Why? I know) However; the joy 2 buttons are just that, for Joy 2. So if you press them in conjunctions with Joy1 buttons in a game such as PARSEC (pressing up on both Joy1 and 2 at the same time) it will allegedly cause glitches or something undesirable (no damage just in game controller glitch). Don't blame the joypad. If you connect two TI joysticks and did the same thing, you'll probably get the same glitches. It doesn't make sense to use the controller in this way for existing games that aren't coded for this.

11. Further modifications were necessary. The bottom half of the controller housing has cylinders molded in to fit flush against the PCB. I needed to give 'em a little shave with the dremel to fit the wiring and hot glue.

12. Don't hold me responsible if you destroy the planet by attempting or using this modification. Or even if you break your console or something less destructive than destroying the entire planet.
I knew the risks and now you do too,

If you follow these instructions, any part of them, in real life you do so at your own peril. Just because it worked for me....doesn't mean it'll work for you in the sense that it could have been my fault. :P

Last but not least. You will need games specifically coded to work with the full functionality of this controller. The game pad directionals and the X button are the Joystick 1 directionals and fire button.
Y/B/A/C/Z buttons are for Joystick2 as follows in same order Up/Down/Left/Right/Fire.
I attempted to make my connections standard. So anyone who wants to make their own 6 button gamepad for the TI to code for, please take in to account the button assignments.
Together we can establish a new standard in TI gaming and ensure our programs work across the board with any controllers folks my make on their own utilizing this Topic Thread,.

 

THE START BUTTON IS UNUSED AND DOES NOTHING.

 

post-47352-0-40740900-1500227526_thumb.png

Of course, I rate this project as easy for an ametuer. But do ask and learn, I used a heat sink for every solder point to protect the diodes. I don't know it that's unnecessary, but I did it anyway.
Thanks to everyone here for encouragement and help.

Now it's time to start making games that can take advantage of this design and layout. Get creative. Street Fighter? Tanks game where you can move one way and rotate the turret another? Puzzle games where you have to control 2 characters to solve the puzzle ? (Castle of Dr. Creep anyone? - (C64 game) or The Goonies?) RPGs with spell, attack, defend, jump, dodge buttons? What would you like to play on your TI with a 6 button gamepad?

Make it, Code it, Play it. Share it. Do it.



post-47352-0-05449000-1496607342_thumb.png

Edited by Sinphaltimus
  • Like 5
Link to comment
Share on other sites

i think like a Robotron-style game would be pretty wicked!

 

 

When thinking about those kinds of games, (because I have) The 8 directional gamepad fo Joy1 is not easily replicated for Joy2 as the buttons are laid out. It would be really difficult to use the up diagonals without hitting one of the two fire buttons. A caveat to this kind of layout. Perhaps a V2 mod where there are TWO 8 directions pads on one controller, or 2 mini thumbsticks... etc... A modded XBox 360 controller perhaps?

 

EDIT: Something like this perhaps? As long as the contact points have traces to solder to, it shouldn't be that hard. Hrm..... But this is USB so it's probably all digital. I dunno...

 

https://www.newegg.com/Product/Product.aspx?Item=9SIA98C3SU1379&ignorebbr=1&nm_mc=KNC-GoogleMKP-PC&cm_mmc=KNC-GoogleMKP-PC-_-pla-_-PC+Gaming+Accessories+%28Joystick+-+Game+Pad+-+etc.%29-_-9SIA98C3SU1379&gclid=CjwKEAjw387JBRDPtJePvOej8kASJADkV9TL1jIv3aHLAes8KbcU08ohS4ro040SOq2uWndNeEC49hoC6Yvw_wcB&gclsrc=aw.ds

A98Y_1_201605041149237437.jpg?w=660&h=50

Edited by Sinphaltimus
  • Like 1
Link to comment
Share on other sites

If only we had a good way to test for the presence of serial controller and clock a shift register. Could easily implement a SNES sort of thing. You'd need to power it of course, but that's required for doing anything interesting with that port.

Link to comment
Share on other sites

You can use this RXB version of same program:

10 call clear ! RXB version of Gamepad test

20 call joyst(1,x,y,2,b2,b3)

40 call key(1,b1,s,2,b4,s)

100 call hput(1,3,"up/down:"&str$(y),2,3,"left/right:"&str$(x),3,3,"button1:"&str$(b1),4,3,"button2:"&str$(b2))

140 call hput(5,3,"button3:"&str$(b3),6,3,"button4:"&str$(b4))

200 goto 20
  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Thanks for this, you inspired me to do the same mod. I did however do my button assignment a little differently than yours.

 

I did mine as follows:

 

x, y, a, b - are player 2's left, up, down, right.

z - player 1 fire

c - player 2 fire

 

obviously the dpad still is for player 1.

 

Also I did a BASIC joystick test program in the following link. It tests both joystick1 and 2, as well as the fire buttons:

 

http://atariage.com/forums/topic/145666-any-ti-99-4a-basic-programs-you-can-share/?p=3803371

Edited by chue
  • Like 2
Link to comment
Share on other sites

Nice. I was hopeful anyone doing this would keep the button assignments the same in case they wanted to develop and share their programs with others. But if it's just for you then sure, anyway to do it -

This is the program I grabbed from another thread and fixed up a little.

10 call clear

20 call joyst(1,x,y)

30 call joyst(2,b2,b3)

40 call key(1,b1,s)

50 call key(2,b4,s)

100 display at(1,1):"up/down:"&str$(y)

110 display at(2,1):"left/right:"&str$(x)

120 display at(3,1):"button1:"&str$(b1)

130 display at(4,1):"button2:"&str$(b2)

140 display at(5,1):"button3:"&str$(b3)

150 display at(6,1):"button4:"&str$(b4)

200 goto 20

Link to comment
Share on other sites

Thanks for this, you inspired me to do the same mod. I did however do my button assignment a little differently than yours.

 

I did mine as follows:

 

x, y, a, b - are player 2's left, up, down, right.

z - player 1 fire

c - player 2 fire

 

obviously the dpad still is for player 1.

Now I understand why you did it this way - it makes two button games using both fire buttons much easier than trying to switch between X and Z (in Alex Kidd for example.)

 

I'm considering adopting your layout for my second controller mod :)

  • Like 2
Link to comment
Share on other sites

Now I understand why you did it this way - it makes two button games using both fire buttons much easier than trying to switch between X and Z (in Alex Kidd for example.)

 

I'm considering adopting your layout for my second controller mod :)

 

I also prefer the layout of the up, down, left, right buttons for player 2. To me it has a more "natural" feel. But that's probably personal preference.

 

The down side of having both the move and fire buttons so close together is that it is hard to both move and fire at the same time.

 

I think a good solution might be to use an SNES style pad with buttons on the top that could be used as fire. In addition the buttons on the right are already in the up/ down/ left/ right layout. The only snag is that the SNES joystick port is different from the TI port.

post-47499-0-14639100-1501089036.jpg

Edited by chue
Link to comment
Share on other sites

I'm all for adopting Sinphaltimus' key assignments as the 'new standard' for advanced homebrews. How many people really use both joysticks at the same time anyway?

 

Being old school, I never adapted to gamepads, so it would sure be nice to see a 3D printed case developed... well two variants actually. One for you weird lefty joystick users :P and one for us right handed players. :D

  • Like 2
Link to comment
Share on other sites

I'm all for adopting Sinphaltimus' key assignments as the 'new standard' for advanced homebrews.

 

In thinking about it I'm not really sure it matters whether there is a "standard" layout or not. After all fire works no matter which layout it's on. I just use a different fire button than someone else - we each though are using our own preferred fire button. Having said all of that there is no harm in standardizing, I just don't think it's needed.

 

 

How many people really use both joysticks at the same time anyway?

You might if someone came up with a Vanguard or Smash TV type game where you fire in multiple directions. So the d-pad on the left is for moving the player, and the "pad" on the right is for firing in a specific direction (up/down/left/right).

  • Like 3
Link to comment
Share on other sites

 

You might if someone came up with a Vanguard or Smash TV type game where you fire in multiple directions. So the d-pad on the left is for moving the player, and the "pad" on the right is for firing in a specific direction (up/down/left/right).

Berzerk comes to mind.

  • Like 3
Link to comment
Share on other sites

 

In thinking about it I'm not really sure it matters whether there is a "standard" layout or not. After all fire works no matter which layout it's on. I just use a different fire button than someone else - we each though are using our own preferred fire button.

 

Also, the up/down/left/right and fire of Joy 2 are arbitrary. They can be assigned to do anything. (as can with Joy1) That's up to the developer of said program or game. I may code a game that uses secondary fire assigned to the Y button. For someone with a differently wired gamepad that fire function might be the A or C buttons which may make it uncomfortable to play.

 

One thing developers might want to consider (And I am considering it) - Customizable buttons. In the game/program, go to a customize control option and allow users to assign what ever button they want for particular functions. In that case, then yes, standard layout is less important. Maybe have a "Customize Controls" screen pop up on first run of a game session and those controls stays for the duration of the game session. or skip the customization and accept the default assigned by the developer.

  • Like 1
Link to comment
Share on other sites

Berzerk comes to mind.

Berserk or SmashTV definitely come to mind, but so does Karate Champ and others. I think a Karate Champ clone for the TI is completely possible. There are never too many sprites on the screen at once. Perhaps eliminate the audience animation due to overhead.

 

0:36 -

  • Like 2
Link to comment
Share on other sites

  • 1 month later...

So I'd like to support this 6 button gamepad. I can read two joysticks easily, so everything should turn out just fine, but ... how do I set up Classic99, so I can playtest comfortably using a keyboard ?

 

:)

 

 

I don't know. I just now tried setting both joysticks to keyboard then loaded up the Joyst Test program as listed here earlier but some of the KB presses get registered as 2 different button presses. for instance, up arrow on the KB registers as UP and Button 3 press.

 

Perhaps Tursi can elaborate? Maybe no one ever did this before and we uncovered a bug?

 

 

  • Like 1
Link to comment
Share on other sites

Nice. I was hopeful anyone doing this would keep the button assignments the same in case they wanted to develop and share their programs with others. But if it's just for you then sure, anyway to do it -

 

This is the program I grabbed from another thread and fixed up a little.

 

10 call clear

 

20 call joyst(1,x,y)

 

30 call joyst(2,b2,b3)

 

40 call key(1,b1,s)

 

50 call key(2,b4,s)

 

100 display at(1,1):"up/down:"&str$(y)

 

110 display at(2,1):"left/right:"&str$(x)

 

120 display at(3,1):"button1:"&str$(b1)

 

130 display at(4,1):"button2:"&str$(b2)

 

140 display at(5,1):"button3:"&str$(b3)

 

150 display at(6,1):"button4:"&str$(b4)

 

200 goto 20

RXB Version of your XB program

10 call clear

20 call joyst(1,x,y,2,b2,b3)

40 call key(1,b1,s,2,b4,s)

100 display at(1,1):"up/down:"&str$(y)

110 display at(2,1):"left/right:"&str$(x)

120 display at(3,1):"button1:"&str$(b1)

130 display at(4,1):"button2:"&str$(b2)

140 display at(5,1):"button3:"&str$(b3)

150 display at(6,1):"button4:"&str$(b4)

200 goto 20
Link to comment
Share on other sites

 

 

I don't know. I just now tried setting both joysticks to keyboard then loaded up the Joyst Test program as listed here earlier but some of the KB presses get registered as 2 different button presses. for instance, up arrow on the KB registers as UP and Button 3 press.

 

Perhaps Tursi can elaborate? Maybe no one ever did this before and we uncovered a bug?

 

 

 

Not a bug (I think!), but simply not implemented. The joystick support in Classic99 is hard-coded (and actually tightly integrated with the keyboard code so that it can automatically switch the arrow keys between arrow keys and joystick). Afraid the only way to do dual joystick today is to have at least one real PC joystick.

  • Like 2
Link to comment
Share on other sites

  • 1 year later...

Forgive me for asking a stupid question here, but instead of modifying so many joysticks, wouldn't be easier to make a joystick adapter for the TI that utilizes both joystick controller lines, and converts the input? The other end would be a standard USB port, so we could all buy off the shelf controllers. A proper design would work with legacy games and even allow for newer (in the future) games with additional inputs.

Link to comment
Share on other sites

Forgive me for asking a stupid question here, but instead of modifying so many joysticks, wouldn't be easier to make a joystick adapter for the TI that utilizes both joystick controller lines, and converts the input? The other end would be a standard USB port, so we could all buy off the shelf controllers. A proper design would work with legacy games and even allow for newer (in the future) games with additional inputs.

A USB adapter would actually be fairly complex. USB isn't a pretty standard, and requires a significant amount of processing power.

Adding to the fun, the USB gamepad standard doesn't have an official layout.

 

But an adapter to use Super Nintendo or Genesis controllers unmolested wouldn't be near as difficult. Standard Genesis pads are pretty simple, and the four buttons available(A,B,C,Start) are already a good chunk of the TI controller port's capabilities(eight of ten signals). The "6-button" controller is significantly more complex, and actually exceeds the TI controller port's capabilities by two buttons(mode and start are the most logical buttons to ignore).

 

Nintendo pads are a different kind of simple, but still simple. As a bonus, Super Nintendo controllers aren't actually any harder to read than Nintendo pads(you pull 16 bits out of the pad instead of 8). As with the Sega 6-button controllers, the Super Nintendo offers two more buttons than we can easily use.

 

Gotta get power from somewhere else, as the TI joystick port isn't really designed as a power source.

 

 

 

 

Hmmmm... I have an Arduino just gathering dust, and this is well within the device's capabilities. Not making any promises, but I might take a shot at this.

  • Like 3
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...