Jump to content
IGNORED

Adapter to Use Atari Joysticks on Intellivision


Recommended Posts

Maybe some DPST microswitches for the buttons? Does such an animal exist?

 

Edit: I don't know about DPST, but a quick ebay search for "DPDT microswitch" showed a few that might work with standard arcade buttons...

Edited by JohnPCAE
Link to comment
Share on other sites

Maybe some DPST microswitches for the buttons? Does such an animal exist?

 

I've been searching for these. I even tried to hack an existing button with dremel, but no luck.

 

I think I'll add a switch to convert from 8 way to 4 way, i.e. cut power to 7400 (4 angle directions) but leave power on for 74266 (fire buttons).

Link to comment
Share on other sites

Led now turns on in 8 way mode, use switch to turn off (led out) and controller is in 4 way mode (no pin 9). This is still not as good as having 4 way gate, which forces only u,d,l,r. I have 3d printed gate for this controller that does that. NGX controller is ok, but older Neo Geo joystick is much better, less binding / rubbing. This after adding fresh grease. Going to swap around parts to see exactly what part causes this. Some parts can still be purchased from Seimitsu as they are used by other controllers.

Link to comment
Share on other sites

as you know stock controller did not have power source. But to use off the shelf parts arcade types parts that are SPST forces the issue.

 

keypad and buttons can be DPST from what I can see

 

directions I think need to have a little more electronics unless you have 16 switches. I'm using the 7400 Jay Tilton method, but I'm sure there are others.

Link to comment
Share on other sites

I used some logic gates to create seperate buttons 1,2,3. The 2 light bulbs turn off when a single buttons is pressed. It matches the 2nd URL below. What is not shown is the diodes going to pin 6,7,8. Diode anode sides goes towards the pins. I might need to adjust the inputs with a not gate, or a pullup or pulldown, but the logic is working fine.

 

http://www.flickr.com/photos/20625046@N08/8700840017/in/photostream

 

http://web.archive.org/web/20060317144849/http://users.erols.com/tiltonj/games/tech/intvcont.html

Link to comment
Share on other sites

I bought Arduino Uno the other week to use with matrix keypad. There are enough inputs and outputs if I use resistor ladder for joystick. Buttons 1-3 will be digital control. So far keypad and joystick inputs are working fine. Adding buttons now.

Edited by grips03
Link to comment
Share on other sites

I got everything working with Arduino and checked via print to serial, but very little works on a real Intv :(

 

I'm using D2K as test cart. Sometimes Mario jumps to the side, but mostly he jumps straight up. Movement and buttons worked great with TTL parts, but I did not have keypad working at that time. I think I know how to fix.

Link to comment
Share on other sites

I got everything working with Arduino and checked via print to serial, but very little works on a real Intv :(

 

I'm using D2K as test cart. Sometimes Mario jumps to the side, but mostly he jumps straight up. Movement and buttons worked great with TTL parts, but I did not have keypad working at that time. I think I know how to fix.

the funky jumping is on the keypad buttons. d2k is horrible to use to test buttons imo
Link to comment
Share on other sites

In order to reduce the number of inputs required I used a resistor ladder and analog read on Arduino. On a breadboard with leds all is great, with a real Intv 2 it fails. I've tried a single ladder for button 1-3 and controller. Two different ladders, first analog read seems to block input on the second analog read. I've removed the keypad code and still get similar results.

 

At this pointI'm going to switch back to a TTL solution for buttons 1-3 and the controller. I'm thinking about using DPST switches for the keypad.

Link to comment
Share on other sites

I replaced the NeoGeoX microswitches and some internal components (rec spring, bearing from Seimitsu LS-56), LB-30 ball top, re greased and it now feels like the original Neo Geo AES controler. This is much better.

 

I'm a couple of days away from ordering beta PCB, and need to start selecting button (24mm screw in) and balltop (30mm) colors.

 

http://www.akihabara...96e7f71c5a655f0

 

http://www.akihabara...96e7f71c5a655f0

 

Let me know what you want to see and I'll take some pics. I was thinking to make button 1-3 the same color. Should I make button 4, map to button 1?

 

Also how many people will want the 4 way gate? I need to have those 3d printed.

Edited by grips03
Link to comment
Share on other sites

I replaced the NeoGeoX microswitches and some internal components (rec spring, bearing from Seimitsu LS-56), LB-30 ball top, re greased and it now feels like the original Neo Geo AES controler. This is much better.

 

I'm a couple of days away from ordering beta PCB, and need to start selecting button (24mm screw in) and balltop (30mm) colors.

 

http://www.akihabara...96e7f71c5a655f0

 

http://www.akihabara...96e7f71c5a655f0

 

Let me know what you want to see and I'll take some pics. I was thinking to make button 1-3 the same color. Should I make button 4, map to button 1?

 

Also how many people will want the 4 way gate? I need to have those 3d printed.

yes make it button 1/top. Makes sense for games that use bottom buttons as same function so if button 1 might function better on the right for some games making button 3 your index finger button and button one your middle finger.
Link to comment
Share on other sites

Here is schematic for button 1-3 control.

 

http://www.flickr.com/photos/20625046@N08/8718736787/in/photostream

 

Tested to Intv 2 and it works fine. As you know I'm using 7400 for 8 way joystick control (Jay Tilton method). Adding Atmega328 for keyboard control. I was planning to use diode to integrate these two circuits.

 

For the keyboard control I was just going to send a low pulse for X amount of time, but perhaps some games require one to hold the keypad button down, example move guy on screen.

Link to comment
Share on other sites

Looks like Arduino does have controls for keypad duration. So I'll try that first as it would then exactly match what Intv does.

 

char getKey()

 

Returns the key that is pressed, if any. This function is non-blocking.

KeyState getState()

 

Returns the current state of any of the keys.

The four states are IDLE, PRESSED, RELEASED and HOLD.

 

addEventListener(keypadEvent)

 

Trigger an event if the keypad is used. You can load an example in the Arduino IDE.

[see File -> Examples -> Keypad -> Examples -> EventSerialKeypad] or see the KeypadEvent Example code.

 

For Now

 

Here's the list of multi-keypress functions and the keylist definition. I will complete their descriptions this weekend.

  • Key key
    [list_MAX]
  • bool getKeys()
  • bool isPressed(char keyChar)
  • int findInList(char keyChar)

Edited by grips03
Link to comment
Share on other sites

do you guys like this type of layout?

 

http://www.flickr.co...N08/8618866891/

 

I could leave with SNK buttons, or replace with Seimitsu 24mm screw (as shown)

 

for INTV mode what would I map to button D, select and start?

For Colecovision mode I use button D = CV button 4, and select = Keypad 1 and start = Keypad *

 

Are these for sale. They would be way cool!

Link to comment
Share on other sites

Are these for sale. They would be way cool!

 

Yes, will be for sale in a couple of months (I hope). At first the plan was to have Coleco and Intv in same controller, but this is not possible, so controller will be Intv 2 only. It will also require power from console or external +5v power brick as I'm using active ICs to adapt arcade buttons and controller to Intv.

 

At first I thought all would be kind of pricey, then I thought I could do it for less, but in reallity it will be kind of pricey even at a loss to me. I just want to make sure its very very good.

 

8 way gate model with 2.1mm power jack on the controller and +5v power brick

8 way gate model with 2.1mm power cord. Needs to plug into +5v 2.1mm power jack that has been added to Intv 2

4 way gate option - add $20 (requires one to disassemble to install , or can be pre-installed) <-- best for games like DKA, D2k, Pac-Man, etc.

Link to comment
Share on other sites

Wico made controllers for Intellivision and Collecovision.

The Command Controllers were the same except for internal wiring.

 

Perhaps they didn't support all the functions.

I've made my own Colecovision PCB that works like Super Action Controller with 4 buttons and keypad. Its 100% passive like original, its very different than what I need to do for the Intv.

Link to comment
Share on other sites

first pass, using 150ms. Lower than 150ms baseball keypad would sometimes not recognize keypad button press.

 

Diode integration to joystick and button PCB from Arduino uno is working fine.

 

Going to work on timing the button press now.

 

 

 

/*

Intv2 controller keypad

*/

 

#include <Keypad.h>

 

const byte ROWS = 4; //four rows

const byte COLS = 3; //three columns

char keys[ROWS][COLS] = {

{'1','2','3'},

{'4','5','6'},

{'7','8','9'},

{'*','0','#'}

};

byte rowPins[ROWS] = {2, A5, A4, A3}; //connect to the row pinouts of the keypad

byte colPins[COLS] = {A2, A1, A0}; //connect to the column pinouts of the keypad

 

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

 

int Out1=3;

int Out2=4;

int Out3=5;

int Out4=6;

int Out6=7;

int Out7=8;

int Out8=9;

 

 

 

void setup() {

//start serial communication

Serial.begin(9600);

 

pinMode(Out1, OUTPUT);

pinMode(Out2, OUTPUT);

pinMode(Out3, OUTPUT);

pinMode(Out4, OUTPUT);

pinMode(Out6, OUTPUT);

pinMode(Out7, OUTPUT);

pinMode(Out8, OUTPUT);

 

digitalWrite(Out1, HIGH);

digitalWrite(Out2, HIGH);

digitalWrite(Out3, HIGH);

digitalWrite(Out4, HIGH);

digitalWrite(Out6, HIGH);

digitalWrite(Out7, HIGH);

digitalWrite(Out8, HIGH);

}

 

void loop() {

 

char key = keypad.getKey();

 

if (key == '1'){

Serial.println(key);

digitalWrite(Out4, LOW);

digitalWrite(Out6, LOW);

delay(150);

digitalWrite(Out4, HIGH);

digitalWrite(Out6, HIGH);

 

}

else if (key == '2'){

Serial.println(key);

digitalWrite(Out4, LOW);

digitalWrite(Out7, LOW);

delay(150);

digitalWrite(Out4, HIGH);

digitalWrite(Out7, HIGH);

}

else if (key == '3'){

Serial.println(key);

digitalWrite(Out4, LOW);

digitalWrite(Out8, LOW);

delay(150);

digitalWrite(Out4, HIGH);

digitalWrite(Out8, HIGH);

}

else if (key == '4'){

Serial.println(key);

digitalWrite(Out3, LOW);

digitalWrite(Out6, LOW);

delay(150);

digitalWrite(Out3, HIGH);

digitalWrite(Out6, HIGH);

}

else if (key == '5'){

Serial.println(key);

digitalWrite(Out3, LOW);

digitalWrite(Out7, LOW);

delay(150);

digitalWrite(Out3, HIGH);

digitalWrite(Out7, HIGH);

}

else if (key == '6'){

Serial.println(key);

digitalWrite(Out3, LOW);

digitalWrite(Out8, LOW);

delay(150);

digitalWrite(Out3, HIGH);

digitalWrite(Out8, HIGH);

 

}

else if (key == '7'){

Serial.println(key);

digitalWrite(Out2, LOW);

digitalWrite(Out6, LOW);

delay(150);

digitalWrite(Out2, HIGH);

digitalWrite(Out6, HIGH);

}

else if (key == '8'){

Serial.println(key);

digitalWrite(Out2, LOW);

digitalWrite(Out7, LOW);

delay(150);

digitalWrite(Out2, HIGH);

digitalWrite(Out7, HIGH);

}

else if (key == '9'){

Serial.println(key);

digitalWrite(Out2, LOW);

digitalWrite(Out8, LOW);

delay(150);

digitalWrite(Out2, HIGH);

digitalWrite(Out8, HIGH);

}

else if (key == '*'){

Serial.println(key);

digitalWrite(Out1, LOW);

digitalWrite(Out6, LOW);

delay(150);

digitalWrite(Out1, HIGH);

digitalWrite(Out6, HIGH);

}

else if (key == '0'){

Serial.println(key);

digitalWrite(Out1, LOW);

digitalWrite(Out7, LOW);

delay(150);

digitalWrite(Out1, HIGH);

digitalWrite(Out7, HIGH);

}

else if (key == '#'){

Serial.println(key);

digitalWrite(Out1, LOW);

digitalWrite(Out8, LOW);

delay(150);

digitalWrite(Out1, HIGH);

digitalWrite(Out8, HIGH);

}

 

}

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