NES Controller / GameBoy Button Translation

Yup. The chip was from a controller with a broken pcb, so I had to remove that to test. This should work with a SNES controller too right?

Yep, SNES controller would work, just wouldn’t clock out all of the extra buttons, without tweaking the code some more.

Tried taking a closer look at that photo, few things:

  • doesn’t look like 5V is connected to the VCC pin of the Pro Micro (guessing that you have USB connected for power when testing?)
  • can’t tell if the two orange leads going into Pro Micro pins 4 & 5 are going to the same pin?
  • can’t tell if pull-up resistors on shift register pins 1 & 4 are plugged into pin 1 & 4?
  • not sure it will change anything, but try grounding shift register pin 11 (schematics show it grounded):

(from https://gamesx.com/wiki/doku.php?id=controls:nes_snes_controller)

Blockquote uXe* doesn’t look like 5V is connected to the VCC pin of the Pro Micro (guessing that you have USB connected for power when testing?) YES* can’t tell if the two orange leads going into Pro Micro pins 4 & 5 are going to the same pin?NO* can’t tell if pull-up resistors on shift register pins 1 & 4 are plugged into pin 1 & 4? YES* not sure it will change anything, but try grounding shift register pin 11 (schematics show it grounded): Tried, no differences.

I am attempting to use a SNES controller, still having issues. Can you post a picture of how you wired on the gameboy side? Idk if it will help, but it can’t hurt. I also notice the pro micro being powered on is cause 5v interference with the gameboy, constantly keeping it on after you turn it off, sometimes freezing it.

Have added a couple of lines to the code just to test that at least the (S)NES side of it works… open the Arduino IDE serial monitor and you should see eight ones (11111111) being printed repeatedly, and when you press a button the corresponding 1 should change to a 0.

Worth verifying that much works for you at least?

Later, you could power the Pro Micro’s VCC pin from the GameBoy’s 5V to avoid the issue you mention… I don’t have anything soldered directly to the GameBoy to show, am using a little breakout board for the ribbon cable instead.

Yup that works, Goes to zeros on button presses.

OMG. Figured it out. I was touching the wrong side of the resistor to ground…

I was just shorting the system. I feel a bit restless about not realizing that… Anyways, thanks so much for your help! It’s working great now. :sweat_smile:

1 Like

Ha! Murphy’s Law in action there! :smile:

Glad that it’s working - you can comment out / delete that Serial.println now then, they tend to slow things down…

Perfect, so is it exactly the same as the last code revision? Because I saved that in a separate folder in case it worked.

I’m going to redesign my 3D casing to house the pro micro and NES port. :grimacing:

Yep!

Nice! :+1: :joystick:

1 Like

I’ve spent the good part of a day measuring the DMG pcb and designing in Fusion360.

This is the design I’ve come up with so far. Pretty similar to a gameboy casing. :wink:

I’ll work on the lid after checking this next test print.

2 Likes

All done! I call it the Gamebox. I even made a mini NES controller that uses DMG buttons to match!

More info on Element14

3 Likes

I hope TTC LLC isn’t watching.

Probably if you do something like that, they will see the smoke signals. :thinking:

…not sure there is anything here they would object to? Playing a physical copy of “that which must not be named” on a physical GameBoy, and taking a photo of it - where’s the problem? :face_with_raised_eyebrow:

If the issue is hypothetically around using a ROM on a GameBoy flash cart, then a couple of dollars on eBay will buy you the right to play Tetris in your own home:

https://www.ebay.com/b/Tetris-Nintendo-Game-Boy-Video-Games/139973/bn_7205562?rt=nc&_sop=15

EDIT: Also - https://www.nintendo.co.jp/networkservice_guideline/en/

1 Like

I’m a simple man. I see trip world and I press like.

2 Likes

Oh right, I didn’t realise it was a physical copy.

Disregard my earlier comment.

Hello

Super Project !

can someone help me to change the adruino code to read the DMG button presses ?

thank you

Sure - what are you trying to do though? Read the buttons while the GameBoy is running? or use the front board independently of the main board?

Reading the GameBoy buttons is just a matter of taking an input from P10, P11, P12, P13 in the diagram above. Which four buttons are being represented on these pins depends on the state of P14 & P15.

1 Like

Thx for the info, i would like to read the start & select button when de Gameboy is running.

with as less wires as possible running to the arduino (the arduino is running off de DMG GND & 5V)

To read start and select you would need three gpio wires (P12, P13 and P15). Your software would wait till the gameboy polls P15 and then you would read the states of P12 and P13 to know if either start or select was pressed.

…and here is how those pins in the above diagram correspond to the pins on the GameBoy’s ribbon cable connector:

P11 = 4
P14 = 5
P13 = 6
P12 = 7
P10 = 8
P15 = 9

…and a couple of images from @nobble that may help you identify those pin numbers on the ribbon connector:


1 Like