Jump to content

Photo

Adapter to Use Atari Joysticks on Intellivision

intellivision

125 replies to this topic

#51 JohnPCAE OFFLINE  

JohnPCAE

    Moonsweeper

  • 477 posts

Posted Sun Apr 28, 2013 10:07 PM

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, Sun Apr 28, 2013 10:13 PM.


#52 grips03 OFFLINE  

grips03

    River Patroller

  • 3,752 posts
  • Location:New England

Posted Sun Apr 28, 2013 10:13 PM

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

#53 grips03 OFFLINE  

grips03

    River Patroller

  • 3,752 posts
  • Location:New England

Posted Mon Apr 29, 2013 1:19 AM

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.

#54 JohnPCAE OFFLINE  

JohnPCAE

    Moonsweeper

  • 477 posts

Posted Mon Apr 29, 2013 4:47 PM

If you use DPDT microswitches everywhere, do you even need a power source?

#55 grips03 OFFLINE  

grips03

    River Patroller

  • 3,752 posts
  • Location:New England

Posted Mon Apr 29, 2013 7:49 PM

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.

#56 grips03 OFFLINE  

grips03

    River Patroller

  • 3,752 posts
  • Location:New England

Posted Thu May 2, 2013 6:36 AM

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.co.../in/photostream

http://web.archive.o...h/intvcont.html

#57 grips03 OFFLINE  

grips03

    River Patroller

  • 3,752 posts
  • Location:New England

Posted Thu May 2, 2013 8:14 PM

better version (less parts)
http://www.flickr.co.../in/photostream

#58 grips03 OFFLINE  

grips03

    River Patroller

  • 3,752 posts
  • Location:New England

Posted Sat May 4, 2013 2:46 PM

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, Sat May 4, 2013 2:47 PM.


#59 grips03 OFFLINE  

grips03

    River Patroller

  • 3,752 posts
  • Location:New England

Posted Sun May 5, 2013 1:44 AM

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.

#60 pimpmaul69 OFFLINE  

pimpmaul69

    River Patroller

  • 4,856 posts
  • INTV Brotherhood Technician
  • Location:Colorado

Posted Sun May 5, 2013 9:54 AM

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

#61 grips03 OFFLINE  

grips03

    River Patroller

  • 3,752 posts
  • Location:New England

Posted Sun May 5, 2013 2:59 PM

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.

#62 pimpmaul69 OFFLINE  

pimpmaul69

    River Patroller

  • 4,856 posts
  • INTV Brotherhood Technician
  • Location:Colorado

Posted Sun May 5, 2013 3:04 PM

outta curiosity? why does the side buttons or keypad need to be on anything other than directly wiring up? isnt the directional pad the only thing that needs modification???

#63 grips03 OFFLINE  

grips03

    River Patroller

  • 3,752 posts
  • Location:New England

Posted Sun May 5, 2013 3:34 PM

using arcade buttons, SPST hence other components are needed.

#64 pimpmaul69 OFFLINE  

pimpmaul69

    River Patroller

  • 4,856 posts
  • INTV Brotherhood Technician
  • Location:Colorado

Posted Sun May 5, 2013 4:02 PM

nm

Edited by pimpmaul69, Sun May 5, 2013 4:03 PM.


#65 grips03 OFFLINE  

grips03

    River Patroller

  • 3,752 posts
  • Location:New England

Posted Mon May 6, 2013 11:53 AM

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, Mon May 6, 2013 11:58 AM.


#66 boxpressed OFFLINE  

boxpressed

    River Patroller

  • Topic Starter
  • 2,855 posts
  • Location:Wisconsin

Posted Mon May 6, 2013 1:50 PM

Sorry if I missed this info somewhere along the way, but is this how the buttons are mapped?

Button 1: left action button
Button 2: right action button
Button 3: disc

#67 pimpmaul69 OFFLINE  

pimpmaul69

    River Patroller

  • 4,856 posts
  • INTV Brotherhood Technician
  • Location:Colorado

Posted Mon May 6, 2013 2:29 PM

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.

#68 grips03 OFFLINE  

grips03

    River Patroller

  • 3,752 posts
  • Location:New England

Posted Tue May 7, 2013 11:09 PM

Here is schematic for button 1-3 control.

http://www.flickr.co.../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.

#69 grips03 OFFLINE  

grips03

    River Patroller

  • 3,752 posts
  • Location:New England

Posted Wed May 8, 2013 8:28 AM

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, Wed May 8, 2013 8:32 AM.


#70 mdoerty OFFLINE  

mdoerty

    Moonsweeper

  • 279 posts
  • Location:Westover, WV

Posted Wed May 8, 2013 8:30 AM

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!

#71 mdoerty OFFLINE  

mdoerty

    Moonsweeper

  • 279 posts
  • Location:Westover, WV

Posted Wed May 8, 2013 8:37 AM

Wico made controllers for Intellivision and Collecovision.
The Command Controllers were the same except for internal wiring.

#72 grips03 OFFLINE  

grips03

    River Patroller

  • 3,752 posts
  • Location:New England

Posted Wed May 8, 2013 8:48 AM

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.

#73 grips03 OFFLINE  

grips03

    River Patroller

  • 3,752 posts
  • Location:New England

Posted Wed May 8, 2013 8:52 AM

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.

#74 grips03 OFFLINE  

grips03

    River Patroller

  • 3,752 posts
  • Location:New England

Posted Thu May 9, 2013 11:44 AM

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);
}

}

#75 GroovyBee OFFLINE  

GroovyBee

    Games Developer

  • 9,821 posts
  • Busy bee!
  • Location:England

Posted Thu May 9, 2013 11:55 AM

You might be better off using getState() instead of introducing a delay of your own. That way its down to the player to hold the key down long enough and not rely on a device with a "magic number" they can't change.





Also tagged with one or more of these keywords: intellivision

0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users