RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    My SNES Build

    Scheduled Pinned Locked Moved Projects and Themes
    snesprojectbuildsuper nintendo
    53 Posts 15 Posters 29.7k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      jackal123uk
      last edited by

      Been meaning to chronicle my build for a while now; both to help others out and to ask for help on the next phase. I've gone through a few different iterations, this might be a bit lengthy so bear with it.

      Like many others I started out with the idea of keeping the SNES as original as possible, reusing the original ports and having power/reset buttons functional. For the most part the it's very similar to other builds; connecting the controller daughter board via GPIO (below is my prototyping set-up).

      0_1473271227588_IMG_0278.jpg

      Those eagle eyed amongst you will notice the Mausberry shut-off circuit to make the power button functional. That and trying to retain the eject mechanism uses up a fair amount of room.

      Version 1

      I'm not a fan of the mess of wires so I had a custom PCB made up (I used oshpark.com for the fabrication - some might recognise the distinctive purple) to go from the fpc connector to a header for a ribbon cable to the GPIO.

      0_1473272071003_IMG_0865.jpg

      The board could also be used in a HAT type arrangement but there isn't enough head room in the front of the SNES for that to work.

      0_1473272176166_pcb_v1_1.JPG

      [incidentally; I've been desoldering the fpc connector from dead SNES boards - does anyone know if this is a standard size available, I've bought a few but none were right.]

      Version 2

      With everything working as it should (aside from the reset switch - more on that later) I set about changing the design to make it a little easier on the eye. For this I switched to the Pi0 and had a redesigned PCB made up.

      0_1473272817705_IMG_1697.JPG

      The two pins in the foreground are for the Mausberry shut down circuit. You can probably just make out a further two terminals at the back for the reset switch - since I haven't quite figured out how to get it to function it's not directly mapped to any GPIO pins.

      Here it is fitted; perfectly lining up with the original mounting holes and the low profile doesn't interfere with the eject mechanism.
      0_1473275748877_snes4 original copy.jpg

      Here's a wider shot; note I'm reusing the original power connector - using a usb-barrel jack cable:
      0_1473276119660_thumbnail_IMG_1131.jpg

      Version 3??

      That's as far as I've got but I'm a bit of a perfectionist and still think all the wires are a bit messy. Here's what I'm planning for the next step but I'm a little stuck - any advice would be appreciated:

      • Get the reset switch working - I've seen some example of using it to quit the rom and return to the menu but I want it to reset just like the original SNES.

      • New PCB - expend to use the full width of the SNES and incorporate the shutdown circuit on the board and powering over GPIO (less wires). Just need to find a circuit I can make myself.

      • USB hub - using the Pi0 means it's a little light on USB ports and being mounted as it is means makes accessibility an issue . Either put it on the newly expanded PCB or put in a cartridge and interface via the cartridge slot. In any case, I'm having trouble finding a decent instruction for a diy hub that's at my skill level.

      My SNES Build
      My GameCube Build

      obsidianspiderO 1 Reply Last reply Reply Quote 1
      • obsidianspiderO
        obsidianspider @jackal123uk
        last edited by

        @jackal123uk Very nicely done. I've pretty much given up on the eject mechanism for my build. The Pi 2 (soon to be Pi 3) in mine just won't fit with it in place.

        As far as the Reset button, look at the code they used to exit the ROM and see what keystrokes the button press is sending. If it's sending Select +Start, which is the RetroArch exit, then you should be able to tweak it to send Select+B to do a game reset.

        I'll be curious to see how you incorporate the hub into your build. I thought about one for mine, but I only want to run one power cable and most hubs I've seen can't put out anywhere near enough power to not have a Pi choke.

        📷 @obsidianspider

        J 1 Reply Last reply Reply Quote 0
        • Morph-XM
          Morph-X
          last edited by

          This looks very promising! Afterwards i think i could've kept the eject mechanism in place as well, but at first glance i got rid of it thinking the Pi would not fit. Hmmm...

          So i take it you reused the original reset switch of the SNES?

          1 Reply Last reply Reply Quote 0
          • J
            jackal123uk @obsidianspider
            last edited by

            @obsidianspider Thanks for the heads up; I'll be sure to post the full code if I get it to work.

            Yeah, still got to figure out the hub but using the Pi0 gives a slight advantage in that respect and doing it myself leaves some room for tweaking.

            @Morph-X Yeah, the original reset switch desoldered from a dead board - I've gone through 4 broken SNES consoles from eBay just trying to find a decent shell without too much yellowing so I've plenty of spares!

            My SNES Build
            My GameCube Build

            1 Reply Last reply Reply Quote 1
            • J
              jackal123uk
              last edited by

              OK; so after about a couple of days of playing around I'm stumped with the reset switch.

              Although to be fair I'm not totally stumped, I've got a switch connected to GPIO and it correctly runs a script. I've tried it with a shutdown and a reboot script and all is well, however, this isn't what I want - need it to reset a rom so to be almost indistinguishable from the original SNE function.

              I haven't tried it yet but I'm sure I could write a script that would emulate a key board input, but (as I understand it) this means I'd have to update the hotkeys in SNESpad.cfg and then I'd loose the ability to use hotkeys from the controller - again, not what I want.

              Anyone know how to emulate a gamepad input from a script? This may seem like a lot of effort for very little gain (actually it is!) since the functionality already exists from the controller but that's my perfectionist streak coming out. I'm might switch to solving the hub problem and comes back to this later.

              My SNES Build
              My GameCube Build

              edmaul69E 1 Reply Last reply Reply Quote 0
              • Morph-XM
                Morph-X
                last edited by

                I understand why you'd want it that way. It's a nice feature to have with the RESET button, even though in reality you would use your controller to reset a rom, not stand up and walk towards your console to hit that button. But yeah, if you made your mind up, then that's what you want.

                I wouldn't know how to do it, sorry.

                1 Reply Last reply Reply Quote 0
                • edmaul69E
                  edmaul69 @jackal123uk
                  last edited by edmaul69

                  @jackal123uk so if in retroarch you set a hotkey and a reset key to the keyboard, couldnt you just program the reset button to simulate pressing those 2 keys? you have to have a hotkey on the keyboard since you have one on your controller but that would work for 99% of the emulators on the pi

                  1 Reply Last reply Reply Quote 0
                  • mikeM
                    mike
                    last edited by mike

                    If you want a GPIO reset button to act like Select+B does in RetroArch, then have a look at the network commands.

                    I did this in my NES build and used the python socket module to send 'RESET' to 127.0.0.1, port 55355 when I pressed my reset button. (the script posted on my blog doesn't directly poll a switch, it listens for a message over serial, but the concept's the same)

                    def retroarch_command(message):
                        sock = socket.socket(socket.AF_INET,
                                             socket.SOCK_DGRAM)
                        sock.sendto(message, ("127.0.0.1", 55355))
                    

                    then on a button press:

                    retroarch_command("RESET")
                    

                    You have to enable network commands in the RetroArch settings and make sure the port it's listening to (default:55355) matches what you have in your script, but it's pretty straightforward and works exactly like an original reset button would.

                    1 Reply Last reply Reply Quote 1
                    • J
                      jackal123uk
                      last edited by

                      @edmaul69 You're right - if I understand you correctly - I could set input_enable_hotkey_btn and input_reset_btnto 2 keys (or even the same key) and have a script send those keys but then I'd lose the ability to use hotkeys on the controller.

                      @mike Thanks for the pointer, I'd probably never have thought to implement it this way. I'm gonna try to clear a couple of hours tomorrow to play around with this.

                      My SNES Build
                      My GameCube Build

                      edmaul69E 1 Reply Last reply Reply Quote 0
                      • edmaul69E
                        edmaul69 @jackal123uk
                        last edited by

                        @jackal123uk set them as keyboard keys not buttons (same command minus "_btn")

                        1 Reply Last reply Reply Quote 0
                        • J
                          jackal123uk
                          last edited by

                          @mike Works like a charm - thanks again for the heads up! For anyone else interested in this method here's exactly how I did it.

                          import RPi.GPIO as GPIO
                          import time
                          import socket
                          
                          
                          GPIO.setmode(GPIO.BCM)
                          GPIO.setup(17, GPIO.IN, pull_up_down = GPIO.PUD_UP)
                          
                          
                          def Int_reset(channel):
                              sock = socket.socket(socket.AF_INET,
                                                   socket.SOCK_DGRAM)
                              sock.sendto("RESET", ("127.0.0.1", 55355))
                           
                          GPIO.add_event_detect(17, GPIO.FALLING, callback = Int_reset, bouncetime = 2000)   
                          
                          while 1:
                          
                              time.sleep(1)
                          

                          My SNES Build
                          My GameCube Build

                          1 Reply Last reply Reply Quote 1
                          • J
                            jackal123uk
                            last edited by

                            The last outward facing blemish on my build is the backplate; I've completely reused the power jack and the HDMI connector fits nicely into the multi-out but the hole for the RF-out is a tad unsightly. I've had a blank black plate 3D printed with the intention of cutting the holes to suit but the finish was no where near good enough (although you can't see it in the photos.

                            0_1473712918075_IMG_1908 copy.JPG 0_1473712932996_IMG_1909 copy.JPG
                            I can upload the 3D file somewhere if anyone is interested in doing something similar.

                            My SNES Build
                            My GameCube Build

                            obsidianspiderO F E 3 Replies Last reply Reply Quote 0
                            • J
                              jackal123uk
                              last edited by

                              I'm turning my attention to the next version of my pcb, I've decided to go easy on myself for now and leave the USB hub contained in a cartridge although this means I've now to mount the 62 pin cartridge connector onto the pcb. Below are my measurements of the original board - I know the position of the reset switch and the mounting holes to the right are correct as I used these on the last version of my board. Anyone know if there's a more official version of this type of drawing or something that's at least been verified?

                              0_1474142364458_SNES Mainboard Dimensions.png

                              My SNES Build
                              My GameCube Build

                              A 1 Reply Last reply Reply Quote 0
                              • obsidianspiderO
                                obsidianspider @jackal123uk
                                last edited by

                                @jackal123uk said in My SNES Build:

                                I can upload the 3D file somewhere if anyone is interested in doing something similar.

                                Can you upload that STL file? A friend of mine offered to help me with making a 3D print of the back panel tomorrow, but if you already modeled it that will be a huge help. I want to adapt it to add in keystone jacks.

                                📷 @obsidianspider

                                J 1 Reply Last reply Reply Quote 0
                                • J
                                  jackal123uk @obsidianspider
                                  last edited by

                                  @obsidianspider of course, here you go, shouldn't be too hard to add the keystone jacks.

                                  https://dl.dropboxusercontent.com/u/9389059/SNES backplate.stl

                                  Also, not sure if there's any differences between the regions but at least it's a decent starting point.

                                  My SNES Build
                                  My GameCube Build

                                  obsidianspiderO 1 Reply Last reply Reply Quote 0
                                  • obsidianspiderO
                                    obsidianspider @jackal123uk
                                    last edited by

                                    @jackal123uk said in My SNES Build:

                                    @obsidianspider of course, here you go, shouldn't be too hard to add the keystone jacks.

                                    https://dl.dropboxusercontent.com/u/9389059/SNES backplate.stl

                                    Also, not sure if there's any differences between the regions but at least it's a decent starting point.

                                    Thanks!

                                    📷 @obsidianspider

                                    1 Reply Last reply Reply Quote 0
                                    • J
                                      jackal123uk
                                      last edited by

                                      OK so my day job's been getting in the way on this project for a while but I've just gotten back to it this weekend and trying to get USB hub to work over the cartridge slot. I've soldered directed to the pads for the USB data connections.

                                      0_1476568773572_IMG_2020 copy.JPG

                                      All in all I think the finished article looks good...

                                      0_1476568859799_IMG_2016_.JPG

                                      0_1476568872562_IMG_2018 copy.JPG

                                      Only problem being the hub doesn't seem to want to work. I've tried crossing over the data pins in case I'd messed up there but nothing. Does anyone have any experience with doing something like this with a pi zero?

                                      My SNES Build
                                      My GameCube Build

                                      1 Reply Last reply Reply Quote 0
                                      • monstermadeofmanM
                                        monstermadeofman
                                        last edited by

                                        Are you supplying it with its own power? or power from the pi? I've heard pi zero are quit temperamental with power to USB hubs.

                                        Not all those who wander are lost

                                        edmaul69E J 2 Replies Last reply Reply Quote 0
                                        • edmaul69E
                                          edmaul69 @monstermadeofman
                                          last edited by

                                          @monstermadeofman did you test the original wires before wiring this?? Red isnt always on 5v and green isnt always data, etc., etc....

                                          1 Reply Last reply Reply Quote 0
                                          • J
                                            jackal123uk @monstermadeofman
                                            last edited by

                                            @monstermadeofman no, not supplied through the pi zero, both the hub and the pi zero are fed from a common rail though. The pi runs fine but I'll try giving the hub a completely separate supply in case there are some problems there.

                                            @edmaul69 the 5v and GND are certainly right, wasn't 100% on the data, hence swapping round to check.

                                            My SNES Build
                                            My GameCube Build

                                            J 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

                                            Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.