JohnPCAE Posted April 29, 2013 Share Posted April 29, 2013 (edited) 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 April 29, 2013 by JohnPCAE Quote Link to comment Share on other sites More sharing options...
+grips03 Posted April 29, 2013 Share Posted April 29, 2013 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). Quote Link to comment Share on other sites More sharing options...
+grips03 Posted April 29, 2013 Share Posted April 29, 2013 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. Quote Link to comment Share on other sites More sharing options...
JohnPCAE Posted April 29, 2013 Share Posted April 29, 2013 If you use DPDT microswitches everywhere, do you even need a power source? Quote Link to comment Share on other sites More sharing options...
+grips03 Posted April 30, 2013 Share Posted April 30, 2013 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. Quote Link to comment Share on other sites More sharing options...
+grips03 Posted May 2, 2013 Share Posted May 2, 2013 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 Quote Link to comment Share on other sites More sharing options...
+grips03 Posted May 3, 2013 Share Posted May 3, 2013 better version (less parts) http://www.flickr.com/photos/20625046@N08/8702709455/in/photostream Quote Link to comment Share on other sites More sharing options...
+grips03 Posted May 4, 2013 Share Posted May 4, 2013 (edited) 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 May 4, 2013 by grips03 Quote Link to comment Share on other sites More sharing options...
+grips03 Posted May 5, 2013 Share Posted May 5, 2013 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. Quote Link to comment Share on other sites More sharing options...
pimpmaul69 Posted May 5, 2013 Share Posted May 5, 2013 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 Quote Link to comment Share on other sites More sharing options...
+grips03 Posted May 5, 2013 Share Posted May 5, 2013 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. Quote Link to comment Share on other sites More sharing options...
pimpmaul69 Posted May 5, 2013 Share Posted May 5, 2013 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??? Quote Link to comment Share on other sites More sharing options...
+grips03 Posted May 5, 2013 Share Posted May 5, 2013 using arcade buttons, SPST hence other components are needed. Quote Link to comment Share on other sites More sharing options...
pimpmaul69 Posted May 5, 2013 Share Posted May 5, 2013 (edited) nm Edited May 5, 2013 by pimpmaul69 Quote Link to comment Share on other sites More sharing options...
+grips03 Posted May 6, 2013 Share Posted May 6, 2013 (edited) 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 May 6, 2013 by grips03 Quote Link to comment Share on other sites More sharing options...
boxpressed Posted May 6, 2013 Author Share Posted May 6, 2013 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 Quote Link to comment Share on other sites More sharing options...
pimpmaul69 Posted May 6, 2013 Share Posted May 6, 2013 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. Quote Link to comment Share on other sites More sharing options...
+grips03 Posted May 8, 2013 Share Posted May 8, 2013 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. Quote Link to comment Share on other sites More sharing options...
+grips03 Posted May 8, 2013 Share Posted May 8, 2013 (edited) 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 May 8, 2013 by grips03 Quote Link to comment Share on other sites More sharing options...
mdoerty Posted May 8, 2013 Share Posted May 8, 2013 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! Quote Link to comment Share on other sites More sharing options...
mdoerty Posted May 8, 2013 Share Posted May 8, 2013 Wico made controllers for Intellivision and Collecovision. The Command Controllers were the same except for internal wiring. Quote Link to comment Share on other sites More sharing options...
+grips03 Posted May 8, 2013 Share Posted May 8, 2013 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. Quote Link to comment Share on other sites More sharing options...
+grips03 Posted May 8, 2013 Share Posted May 8, 2013 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. Quote Link to comment Share on other sites More sharing options...
+grips03 Posted May 9, 2013 Share Posted May 9, 2013 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); } } Quote Link to comment Share on other sites More sharing options...
GroovyBee Posted May 9, 2013 Share Posted May 9, 2013 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.