Jump to content

Photo

6 Button Gamepad for the TI-99/4a

gamepad 6 button joystick adaptor

22 replies to this topic

#1 Sinphaltimus ONLINE  

Sinphaltimus

    Stargunner

  • 1,957 posts
  • Distracted at the Keyboard
  • Location:Poconos, PA

Posted Sun Jun 4, 2017 2:17 PM

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.c...0?ie=UTF8&psc=1
      Diode source - https://www.amazon.c...0?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/...r-ti/?p=2058171
 
      Already fixed and slightly customized code. Note: I think it's inefficient for game controller code but works for testing.

Spoiler

                                         My Test Results.
         Attached File  Test results.png   6.92KB   7 downloads
 
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.

 

Attached File  6-Button-JoyPad-Keys.png   257.24KB   3 downloads

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.



Attached File  6-Button-JoyPad.png   3.89MB   8 downloads


Edited by Sinphaltimus, Sun Jul 23, 2017 4:59 PM.


#2 digdugnate OFFLINE  

digdugnate

    Dragonstomper

  • 542 posts
  • Location:SW Missouri

Posted Sun Jun 4, 2017 2:27 PM

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



#3 Sinphaltimus ONLINE  

Sinphaltimus

    Stargunner

  • Topic Starter
  • 1,957 posts
  • Distracted at the Keyboard
  • Location:Poconos, PA

Posted Sun Jun 4, 2017 2:39 PM

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.c...cB&gclsrc=aw.ds

A98Y_1_201605041149237437.jpg?w=660&h=50


Edited by Sinphaltimus, Sun Jun 4, 2017 2:50 PM.


#4 iKarith OFFLINE  

iKarith

    Moonsweeper

  • 271 posts
  • Location:Portland OR

Posted Sun Jun 4, 2017 9:10 PM

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.



#5 RXB OFFLINE  

RXB

    River Patroller

  • 2,764 posts
  • Location:Vancouver, Washington, USA

Posted Sun Jun 4, 2017 9:38 PM

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


#6 Sinphaltimus ONLINE  

Sinphaltimus

    Stargunner

  • Topic Starter
  • 1,957 posts
  • Distracted at the Keyboard
  • Location:Poconos, PA

Posted Mon Jun 5, 2017 8:24 AM

I think I'm going to use RXB for my first 6 button game pad game. Pretty much sold on that idea.
  • RXB likes this

#7 Sinphaltimus ONLINE  

Sinphaltimus

    Stargunner

  • Topic Starter
  • 1,957 posts
  • Distracted at the Keyboard
  • Location:Poconos, PA

Posted Sun Jul 16, 2017 11:53 AM

Edited original post to include this:

 

Attached File  6-Button-JoyPad-Keys.png   257.24KB   2 downloads



#8 chue ONLINE  

chue

    Chopper Commander

  • 134 posts

Posted Sun Jul 16, 2017 12:22 PM

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/...hare/?p=3803371


Edited by chue, Sun Jul 16, 2017 12:30 PM.


#9 Sinphaltimus ONLINE  

Sinphaltimus

    Stargunner

  • Topic Starter
  • 1,957 posts
  • Distracted at the Keyboard
  • Location:Poconos, PA

Posted Sun Jul 16, 2017 3:39 PM

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



#10 PeteE ONLINE  

PeteE

    Star Raider

  • 83 posts
  • Location:Beaverton, OR

Posted Sun Jul 23, 2017 4:03 PM

I just finished modding a controller following your instructions.  Works great!  Thanks Sinphaltimus.



#11 Sinphaltimus ONLINE  

Sinphaltimus

    Stargunner

  • Topic Starter
  • 1,957 posts
  • Distracted at the Keyboard
  • Location:Poconos, PA

Posted Sun Jul 23, 2017 4:48 PM

Awesome! Thanks for letting me know. :)



#12 PeteE ONLINE  

PeteE

    Star Raider

  • 83 posts
  • Location:Beaverton, OR

Posted Wed Jul 26, 2017 10:47 AM

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 :)



#13 chue ONLINE  

chue

    Chopper Commander

  • 134 posts

Posted Wed Jul 26, 2017 11:12 AM

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.

Attached Files


Edited by chue, Wed Jul 26, 2017 11:18 AM.


#14 --- Ω --- OFFLINE  

--- Ω ---

    TI-Runner

  • 10,472 posts

Posted Thu Jul 27, 2017 8:21 AM

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



#15 chue ONLINE  

chue

    Chopper Commander

  • 134 posts

Posted Thu Jul 27, 2017 10:46 AM

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).



#16 Airshack OFFLINE  

Airshack

    Dragonstomper

  • 530 posts
  • Location:Phoenix, AZ

Posted Thu Jul 27, 2017 10:41 PM

 
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.

#17 Sinphaltimus ONLINE  

Sinphaltimus

    Stargunner

  • Topic Starter
  • 1,957 posts
  • Distracted at the Keyboard
  • Location:Poconos, PA

Posted Fri Jul 28, 2017 4:37 AM

 

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.



#18 Sinphaltimus ONLINE  

Sinphaltimus

    Stargunner

  • Topic Starter
  • 1,957 posts
  • Distracted at the Keyboard
  • Location:Poconos, PA

Posted Fri Jul 28, 2017 4:41 AM

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 - 



#19 Airshack OFFLINE  

Airshack

    Dragonstomper

  • 530 posts
  • Location:Phoenix, AZ

Posted Fri Jul 28, 2017 6:03 AM

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 - https://youtu.be/LCsAI4bHuw0


Robotron 2084 too!

#20 sometimes99er OFFLINE  

sometimes99er

    River Patroller

  • 3,922 posts
  • Location:Denmark

Posted Tue Sep 12, 2017 1:43 AM

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 ?

:)

#21 Sinphaltimus ONLINE  

Sinphaltimus

    Stargunner

  • Topic Starter
  • 1,957 posts
  • Distracted at the Keyboard
  • Location:Poconos, PA

Posted Tue Sep 12, 2017 5:10 AM

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?

 



#22 RXB OFFLINE  

RXB

    River Patroller

  • 2,764 posts
  • Location:Vancouver, Washington, USA

Posted Tue Sep 12, 2017 10:24 AM

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


#23 Tursi OFFLINE  

Tursi

    River Patroller

  • 4,776 posts
  • HarmlessLion
  • Location:BUR

Posted Wed Sep 13, 2017 4:01 PM

 

 

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.







Also tagged with one or more of these keywords: gamepad, 6 button, joystick, adaptor

0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users