28 September 2017

SNESPi - 3D Printed Raspberry Pi Mini SNES(s)

Last year I built a mini NES console using a Raspberry Pi, an NFC reader and a 3D-printed case.
An obvious follow-up project would be to make a mini SNES with the Raspberry Pi.



I probably have more childhood fondness for the Super Nintendo than I do the original NES.
Some of my best gaming memories are playing co-op Turtles in Time and Diddy's Kong Quest with my brother.

*Big Apple, 3AM*
I grew-up with the Super Famicom-style European SNES and only learned about the markedly different North American model as an adult much later...

I actually grew to quite like the hideous North American SNES after a while ;)
This fascinated me, there's such a contrast between the two styles. I wanted to make a mini version of both.



Initial concept


I was gonna design a 3D-printed case for a Raspberry Pi, in much the same way as I did with my mini NES.

The NES was easy to design around the Raspberry Pi. They're both 'landscape' so the power and HDMI ports of the Pi would line up with the rear of the NES case.

The SNES is more 'portrait'. It's longer than it is wide, and also quite a bit smaller than the NES.
A Raspberry Pi B wouldn't fit the same way in a 40% size SNES shell like it did in the original Nintendo.

40% scale or nothing
I could change the scale of the case. Something like 50% of a real SNES would probably give me enough room for a Pi 3B, and pretty closely match the scale of Nintendo's NES Classic Edition.

But I'd already made a 40% NES, and I liked the idea of having a matching set of mini Nintendo consoles, so wanted to try keeping the same scale if it was possible.

There is a smaller Raspberry Pi board available... the Raspberry Pi Zero. I used one in my Mini(er) NES, although it does have a few drawbacks compared to the larger Pis.

out-of-stock at a retailer near you
It only has one USB port, uses mini-HDMI instead of a full-size port, and lacks CPU power compared to the 3B.
Performance is pretty decent for NES emulation, but it struggles in some cases with certain SNES games.

I use RetroPie, and the PocketSNES port 'lr-armsnes' works well enough, but the Zero does drop frames in the more demanding games when shaders are enabled. (I love the look of the 'crt-pi' shader).

So using a Pi Zero would be a slight compromise, but I don't mind too much for this project, I'll probably make a 50% mini-SNES for the Pi 3B later on anyway and the extra space means I can be more accurate with the replica.

After playing around with case layouts, I decided to use different Raspberry Pi boards for the two SNES styles.
For the North American Super NES, I'd use a Pi Zero, and for the European version I'd use a Model A+.

I mounted the Pi Zero like that so it'd fit in the very bottom part of the case and I could style the rear to look exactly like the real console.
The CPU power of the Model A+ is the same as Pi Zero. But it's rumoured a Model 3A will release sometime this year, using the same system-on-a-chip (SoC) as the Pi 3B. So that'd be an easy upgrade.

But I don't actually own a Model A+. I did have a left-over Model 2B from the mini NES project.

Since the A+ is more-or-less a Model B with the LAN/USB ports cut off, I figured I could 'DIY' my own Model A+.
what could go wrong?
I cut the circuit board with a rotary-tool along a line that wouldn't sever anything important. The cutting disc got away from me though, and made a really nasty looking gouge, I should have been more patient with it :/

what a clumsy tw*t
So it took a bit of extra sanding to 'dress the wound' and make sure there were no shorts, but luckily my slip didn't kill the board and it booted and ran just fine, the only casualty being the USB/LAN chip not working.

I picked up a couple of cheap 4-port hubs to extend the USB out to the front, I'd need one for the Pi Zero anyway.

ahh... much better
I didn't risk assaulting a 3B with the Dremel, but you could probably chop it up in the same way.
The 2B has enough power for this project and I can easily add WiFi/Bluetooth with an internal dongle.


Design


I modelled my mini NES in Autodesk 123D; but for the SNES, I wanted to try out their Fusion 360 software.

Initially it's a bit daunting for a beginner like me, but after a while, I became more comfortable with it. There are loads of improved tools and features that make almost everything easier.

At the time, I was still learning how to properly use Fusion so the designs were a bit messy by the end.

not messy maybe, just a bit hobbled together, could do better
NoĆ© from Adafruit puts out some great videos about designing with Fusion 360 and there are plenty of others too, plus loads of resources on the Autodesk website.

All the cloud-based stuff Autodesk use is maybe a bit concerning, but overall I really liked using Fusion 360.

After finishing the cases, I went back and made a mini controller. This time I paid more attention to properly dimension the sketches/objects, and used parameters and equations for everything.

This made the design really flexible and much easier to tweak the fit and tolerances for printing. I'd like to re-make the SNES cases themselves with parameters in mind from the beginning, even if just for the practise.

I might make a separate post about the mini controller. I was thinking of building a ~60% scale Bluetooth version that would be much more useful than the teeny-tiny 40% USB models I made for fun in this project.

NFC Cartridges

My favourite part of the mini-NES were the cartridges. I definitely wanted to make them for the SNES too.

Because of the way NFC tags work, they should be parallel to the reader for best reliability. This lends itself well to the NES design; the cartridges lay flat and there's plenty of room to mount the reader underneath.

loads of room

The cart mechanism of a SNES is very different, the cartridges stick up at 90° and fitting an NFC reader sitting upright inside the case, wouldn't be possible.

After some unsuccessful experiments playing with the angles of the tags, I researched the NFC chip datasheet and eventually had a go at making my own antenna to sit perpendicular to the breakout board.

This way, the antenna would be parallel to the tag inside the cart, and the NFC board could lie flat underneath.

I also chopped the NFC board down, to give me a bit more clearance inside the case

Cartridge mechanism

Just like the iconic front-loading cart slot of the NES, the Super Nintendo had it's own unique cartridge feature.

The eject button.

I remember absolutely *smashing* that eject button down to make the game carts jump out of the console.

the wonderful thing about tiggers...
Interestingly... (well, a tiny bit at least) the Euro and US SNES have slightly different styles of eject button.

On the Euro SNES it pushes straight down, and two little prongs poke up underneath the cartridge to pop it out.

The eject button on the North American SNES is a different shape, it's longer and seems to rotate away from you as you press down, it has the same little prongs to eject the cartridge though.

same-same, but different
If you've read my mini NES write-up, you might recall I couldn't open the case to have a look at the cart mechanism because I didn't have a long enough screwdriver.

Well the screws on the SNES aren't too deep, but they do need a special bit to open. A bit that I don't have.

So I googled some tear-down photos to find out how the eject-mech worked. Presumably some kind of lever.

hmm... looks simple enough
I'm no engineer, but I did learn about levers in primary school. Fulcrum, load, force... all that kind of stuff.

Both machines use a first-class lever to eject carts. On the North American SNES, the actual eject button is part of the lever, and on the Euro machine, the button pushes down on the lever hidden from view inside.

sort-of
To make the Euro mechanism; first, I worked out how far the eject button pushed down, and used that measurement to scale some arms to poke the cartridge up from underneath.

Then I modelled a platform to sit above the Raspberry Pi. This holds a compression spring to keep the eject button in the 'up' position when there's no cartridge inserted.

The axle that the lever pivots on, is two pieces of 1mm diameter steel rod and the spring is from a ballpoint pen.


The actual eject button, is held captive by a sleeve in the top of the case, and presses down on the bar below.

I took more cues from the real console for my mini US mechanism. You can see how the eject button makes-up part of the lever itself and the axle pivots are located just like on the original machine.


The way I biased it to return the eject button is a bit different though. A pair of compression springs are braced against the top of the case and they apply a force to the load-side of the lever to counter the eject button.

You can see the guide pegs for the springs in the gif, and just about make them out inside the case below.
These springs push the eject button so it stays in the correct position at the top of it's throw when idle.

it's a bit dark, but hopefully you can see what I mean

Dust cover.

To keep dust and dirt out of the edge connector, the SNES had a flap/cover to protect the cartridge slot.

Of course I want to make this for my mini SNES too. The problem I had, was how to spring-load it.

Nintendo used torsion springs (like a mousetrap or clothespin) in the SNES cart-slot cover as they also did with the eject lever, but they're not easily available in the elfin sizes I needed for my mini SNESs.

IFIXIT have all the bits
For the eject system, I could use compression springs instead, but the dust cover was more difficult to adapt to an alternative.

I looked into purchasing small torsion springs from industrial suppliers, but they were kinda expensive...
$1+ each in 1000 unit quantities and 5-10x that in smaller lots ⊙_☉

I did have a bunch of N64 parts from old projects, and thought I could use the springs from it's cart-slot cover.

a bit big, but they'll do
These were definitely a lot larger than I'd need for my mini SNES, but would work just fine.
I used the N64 spring in my North American design and in the first test print of the Euro SNES.

you can see the rough finish on the inside of the case here, I talk about that later on
In my final Euro SNES case, I used a much smaller spring from the memory card slot of an OG PlayStation.
(I picked up a cheap broken unit to measure-up for a possible future project ;)

that tiny little spring in there is surprisingly difficult to get hold of

Cartridges

The design of the cartridges are also quite different, styled to match their respective consoles.

The North American carts are brutish and boxy and the Euro/Japanese carts are a tiny bit smaller and curvier.

ignore the random US cart
There are actually two styles of US cart. One has a notch to lock the game inside the console while the power's switched on (like the EU/JP carts have); the other has that section cut away so the lock doesn't engage.

I was kindly donated these US carts along with a console by a YouTube viewer... thanks!
I read the notch-type was an earlier version and later games use the other design, but I couldn't find an official definitive reason why they were changed... interesting.

Anyway... I made my mini-carts to the same 40% scale as the rest of the case, staying as true to the real proportions as possible. I printed each of them in two halves, and made little NFC tag sandwiches.

I might have gone overboard making mini-carts, but it's just so much fun :)
For labels, the graphics are printed on thick paper and laminated with clear tape to give the right glossy look.

I also made a pair of Super Game Boys. I didn't have the real-life examples to work from, but it was easy enough to stretch-out my regular cartridge models to match photos of the real units.

I was really happy with how these turned out
Of course, I had to make some mini Game Boy carts to go with them. These came out really well, but to capture all the detail I needed to use a smaller-than-normal 0.25mm nozzle on my printer.

...so cute
They took a very long time to print considering their size (an hour each!). But printing nice and slowly, something like 20mm/s seems to get the best quality out of my printer.


Printing


Both SNES models are quite a bit more challenging to print than the relatively simple flat-sided NES.

The Super NES is more complex; on both versions, the top of the case has a curve and there's an overhang on the bottom, a 'lip' that'd be awkward to print.

you can see the lip here from inside the case, it needed lots of support material from below
I printed the bottom case halves against the bed. This meant using lots of support material around the lip that left a rough finish. It doesn't affect the appearance much though, you don't see underneath the case normally.

ignore the streaks on the bottom, must have been some darker material still left in the nozzle :/
The SNES has a gentle curve on the top of the case, this wouldn't print well if it was flat against the bed so I'd have to print it upright and use support material, although this time it'll be totally hidden inside.

I printed the NA SNES top shell as one large piece and it used quite a lot of support material and looked quite rough inside, but it was the best compromise I could come up with to print the awkward geometry.
You can see how the layers stack on top of the case, it's a problem when you print curved parts in this orientation, you get a 'staircase' appearance

The NA SNES didn't look too bad when I printed it, but I had trouble with the top piece of the Euro SNES.

I tried sanding a few parts to smooth out the lines, but I'd always end up with discoloured patches, bits of white that didn't seem to clean off even with hot air, they are really distracting and ruined the finish of the piece.

...sanding sucks
Maybe I didn't sand for long enough, but I gave it a good attempt. I used 200, 400, 800, 1200 and 2500 wet grits and tried PLA and ABS prints, but I couldn't get a result I was happy with.

In the end, I cut the model slightly differently and printed just the very top piece at a 50 micron layer height with a 0.25mm nozzle.

It took over 4 hours(!) and still has noticeable layer lines, but came out really sharp and clean and much better than any of my sanding attempts.

it doesn't photograph well, but this is much better than the other one
Photos and video can sometimes be quite flattering to 3D prints but in-person ALL the flaws become quite obvious, so it was worth spending the extra time fiddling until I was really satisfied with the print.

Decals

I used a couple of techniques to apply the graphics to the case. I wrote about using 'toner-transfer' in a previous post, and while that works well with ABS prints, I got mixed results with PLA parts.

So I also used waterslide decal paper for some of the logos. You can get this paper for laser or inkjet printers.
(if you're using an inkjet printer you also need some clear lacquer to seal the ink).

always print multiple copies of your logos, you'll mess up a few times so why not fill the page?
The paper comes with a clear or white backing. The clear paper shows the colour of the object as the 'white' in the image, so it's best for dark graphics on lighter models.

White-backed paper needs to be cut-out carefully so the white doesn't show around the edges. For images with transparency, you need to match the background colour to your object, but it's difficult to get exactly right.

tweezers help here, it can be tricky to get the decal in exactly the right place
So I use the clear laser printer paper for my SNES graphics. I apply them after soaking with decal softener and use tweezers to place the logo and a soft paintbrush to smooth it down and absorb the excess liquid.

The decal liquid seems to work better than plain water, I picked some up locally at a hobby shop and it really helped with adhesion and blending the logo onto the model so the outline doesn't stand-out as much.

smooth the logo down with a soft brush and carefully wipe up the excess liquid with a paper towel if necessary
After it's all dry, I give it a light rub with an ultra-fine sanding sponge (3000 grit) to remove some of the shiny decal-fix residue, dull the overall finish of the decal and help hide the edges that last little bit.

the decal-fix liquid worked nicely, the logo's blended in really well with the case (ignore the nick on the edge... that adds character ;)
It can sometimes take a few tries to get a decent application, but it's worth getting it right because it can really make a difference to the overall look of the model.

in this 100% crop, you can even see the dithering pattern the laser printer used to make that shade of grey... neat

Electronics


The electronics for my SNESs are quite similar to each other. They both have a USB hub wired to two front ports and an internal Bluetooth adapter (I'm using Raspberry Pis without built-in BT/Wifi)

Because of the more cramped case compared to the NES, the Super Nintendos are a bit of a rat's nest inside.
I might go back and clean it up to make more accommodations for the electronics if I re-visit the design later.

a bit messy, but there's really not a lot of room inside the case
The US SNES has it's mini HDMI extended to a full-size port at the rear. The wiring's even messier though, and the switches are just glued in-place, but again I'll probably address this in future revisions.

even worse here, wires everywhere!
Both have the same Arduino-based controller for the NFC and switches, running the same code as my NES did. But instead of switching the 5V supply, it holds the Pi's reset pin low to turn it 'on/off' like my Mini(er) NES.


Software


The software I use on the Raspberry Pi is RetroPie. I set things up exactly the same way as in my mini NES.



RetroPie is great and makes setting up all the emulators quite easy. It's not plug-and-play by any means, but there's loads of info/guides around, and the community has always been very helpful.


Finished pics











Final Thoughts


There's something timeless about the SNES' 16-bit graphics, and it's nice to play the games I remember from growing-up, and all those great titles that I missed-out on back-in-the-day.

I have a vague memory, tossing-up whether to get Killer Instinct or Yoshi's Island for a birthday one year.

I went for Killer Instinct because of the cool cart and soundtrack CD, but didn't properly play Yoshi's Island until I discovered RetroPie and I'm glad I did. (I swerved the GBA port too for some reason.)

I really like the 'crt-pi' shader effect, these screens are from the Raspberry Pi and they look great
This was a nice project and I've now got some company for my mini NES. I suppose the obvious next one would be an N64, but I'm not sure Raspberry Pi-based emulation is quite up to the task yet.

I learned a lot about Fusion 360 and would definitely like to revisit the SNES with a more rounded idea of how the software works.

I'll probably make a new version to hold a full-size Raspberry Pi, tidy up the wiring, and look-into matching the scale to Nintendo's NES Classic Edition.

But I'd also like to make some other consoles, maybe a PlayStation or Mega Drive/Genesis?



Addendum:


Here are the graphics I made for the decals, transparent .pngs so you can chop them up in your image editor:

European SNES DecalsNorth American SNES Decals

3D print files for the cartridges...



50 comments:

  1. WOW this build is AMAZING!!!!
    I loved your nes build. But the Snes hits home for me.
    I was wondering like the nes build. Are you planning to release the snes plans also?

    ReplyDelete
  2. Wow, I'm speechless! The cartridge popping is a great touch. Please make a PlayStation 1! I've only seen one other PS1 mini make but it was printed in SLA due to the FLA prints weren't able to retain the consoles detail (i.e: the vent grills on both sides, etc).

    ReplyDelete
  3. what colors did you use for the SNES prints?

    ReplyDelete
    Replies
    1. It was a random eBay grey ABS for the main bodies. The seller I bought it from closed their store though :(

      I did use this Hatchbox Grey PLA: http://amzn.to/2wYKjT6 for the European carts and the controllers.
      It's slightly lighter/cooler than the ABS but it's a good match for SNES grey and it printed really smoothly for a PLA.
      (I only got one roll shipped over otherwise I might have used it for the main shells too)

      That's a good point though, I'll go back and add some more detail about the filaments I used.

      Thanks!

      Delete
    2. I really like to know the exact filaments you used for the PAL SNES. I did my own SNES mini case for the Raspberry Pi 3 and I'm not able to find filaments that match the SNES color. Your colors are almost identical.

      https://www.thingiverse.com/thing:2492366

      This is the case I made. I wanted to use my original SNES controller so I incorporated a SNES controller port. Are you planning on releasing more info on the NFC circuit you used? I find this very interesting and would like to include that in my design as well.

      Thanks!

      Delete
    3. I printed these a while ago, so I'll have a dig through my filament bin and get some links to where I bought the material from.

      I'll also try to make a follow-up post about the NFC mods I did for the SNES project. Thanks

      Delete
    4. Thanks! It's very much appreciated. Your design looks really awesome. And thank you for answering the questions here.

      Another quick question. How did you make the white decals for the reset, eject and power button?

      Delete
    5. No problem :) The white decals are waterslide transfers that I had done by a local print shop on an OKI Pro7411WT.

      Delete
    6. Thanks! I figured it wasn't done with a normal printer.

      Delete
  4. Hello Daftmike! I like the controllers so I find it weird that people didn't like them. Are you planning to sell some kits or are you going to open-source them?

    ReplyDelete
    Replies
    1. Hi Erik, I won't be making any kits this time. I handled the last ones so spectacularly badly I don't want anyone to think I was covering up that fact or not owning up to it by doing more kits right now.

      I'd still like to share as much as I can though, if enough people do actually like the mini controllers then a little side project on them could be quite nice I think.

      There's already working code on the Mini NES post if you were inclined to have a go yourself, but I do like the idea of shooting a specific controller guide video.

      Delete
  5. Also, could you have gone with A+ rather than chopping the B+? I think they have same footprint when you chop the B+..

    ReplyDelete
    Replies
    1. Hi Erik (again;)
      Yes, exactly they're basically the same after the chop, but I didn't have an A+, did have a beaten-up Pi2 and wanted the higher performance of the BCM2836, so I let the dremel solve my problems :)

      Delete
    2. Haha! I'm so lazy! I think I skipped that part on your blog. I see it now!

      Delete
  6. Will you be releasing the stl files for print? Specifically the cartridges, I want then four decoration purposes. They're awesome

    ReplyDelete
    Replies
    1. So pumped, I can't even spell check!

      Delete
    2. Yes I will, I'll link them on this page somewhere in hte next couple of days.

      Delete
    3. Hahaha thank you. I really appreciate it and I see the spelling bug is contagious :p

      Delete
  7. What 3D printer do you own? The print quality is superb.

    ReplyDelete
    Replies
    1. Thanks, I have a CTC Bizer, it's a MakerBot Replicator clone and pretty temperamental tbh but I've finally got it printing nicely.

      The grey ABS hides a lot of sins, it prints to a dull matte finish that really helps the appearance, I wish I bought more of it :(

      Delete
  8. Are you aware of the work done by the "Mini NES and SNES builders" group on Facebook? They collectively continued your NFC NES build with custom PCBs and scripts to manage the NFC, fan and PWR/Reset buttons. As well as a web manager called Pi Control.

    https://youtu.be/1OdlZUs-EeE

    https://m.facebook.com/groups/487747744744837?view=permalink&id=507604452759166

    https://m.facebook.com/groups/487747744744837?view=permalink&id=511455619040716

    ReplyDelete
    Replies
    1. I've not seen this before, it looks great. That Pi Control software especially is excellent.
      I don't use facebook, do you have to be a member of the group?

      Delete
    2. Hey daftmike! I'm a member of that group. It's very easy to get in as it is not a private group but a public one. I think Dustin Westaby who created the group last year was reaching to you for your blessing and be part of the group. It has grown not only in member count but in a lot more ways than I can state here. You should definitely check it out! We were celebrating your return there.

      Delete
    3. ok thanks Erik, I'll see if I can join up at some point

      Delete
  9. Hey Mike, do you have any plans to finish selling your Mini NES orders for those that have already bought one?

    ReplyDelete
    Replies
    1. Yes, please contact me using the form or the email link in the sidebar. Thanks.

      Delete
    2. would be nice if you would actually reply to your emails. i never got my order.

      Delete
  10. Hey, could you fit an UDOO X86 Advanced in either this or your NESPI case? If so, would all of your electronics be compatible with it?

    ReplyDelete
    Replies
    1. No, sorry. it's not compatible with the UDOO at all.

      It wouldn't be loads of work to make an UDOO version, but at 4x the price of a Pi3 I won't be rushing out to pick one up tbh.

      Delete
  11. Also, will you be making more NESPI cases or was that the last run? I don't have a 3D printer nor know anyone who has one.

    ReplyDelete
    Replies
    1. Sorry again, I don't have any plans for that right now.

      Delete
  12. Great job. Are you going to sell snes kits? How can I find information about that?

    ReplyDelete
    Replies
    1. Thanks. I don't have plans for kits at the moment. If anything changes though I'd post something on the main page.

      Delete
  13. Best SNES build i have seen ! I am getting a 3d printer in a month or so. This will be my first project ! Thanks for this

    ReplyDelete
  14. Did you smooth your prints via acetone or did you leave the prints without smoothing ?

    ReplyDelete
    Replies
    1. I didn't smooth any of the prints with acetone, I used a 3000 grit sanding sponge to rub down the main case parts. I didn't remove any material or sand the surface really, more just to clean up any strings etc.

      I did sand down the buttons on the Euro SNES though, you can tell in some of the close-ups.

      Delete
  15. Can you give me detail of how you made the antenna for the pn532 board? I really need to slim down the board for a project and that would be a great help.

    ReplyDelete
    Replies
    1. Yes, I'll go back and add some detail on the antenna mod when I get the chance.

      Delete
  16. Very nice work here, might be tempted to follow in your steps. ;)

    That said, if you really want all possible look for the SNES, you need to do 1 more: The SNES Jr (or Super Famicom Jr in Japan).
    You can see pictures of it there:
    - http://retrorgb.com/images/SNESMiniConsole.jpg
    - https://commons.wikimedia.org/wiki/Category:Super_Famicom_Jr._(SHVC-101)

    Good luck in making a new Mini SNES out of it, man. ^^'


    And about your next project, I'm all for a SEGA MegaDrive/Genesis!

    ReplyDelete
    Replies
    1. I've never seen one of those SNESs irl. Maybe if I can get hold of one I'll do another mini, complete the SNES set ;)

      I have picked up an old MegaDrive and a Playstation though as potential next projects...

      Delete
  17. Hi Daftmike,
    How did you make the nfc antenna? and how did you make the snes cartridge so that they load the game?
    btw do you have the links for the usb hub and stuff

    Kind Regards,
    Ruben

    ReplyDelete
    Replies
    1. I'll add some more information about the NFC antenna when I get the chance.
      The cartridges work in the same way as my NESPi project.
      I'll add some links to parts I used at the end of this article too.

      Delete
    2. What do i do with cart-pin.stl? its just a cilinder.

      Kind Regards,
      Ruben

      Delete
    3. If you print the cartridges flat as two halves then the pins will help to align things when you glue them together.

      Delete
  18. hoping the stl for the console and the controllers will also be released. Really great models.

    ReplyDelete
  19. great job, these look amazing! Can't wait to print out the EU version, hope the files are released soon!

    ReplyDelete
    Replies
    1. good luck with waiting for this guy

      Delete
  20. Hey Daftmike,

    how did you design your antenna for the NFC circuit? Did you etch a PCB for that?

    Thanks!

    ReplyDelete
  21. amazing man , your work is perfect , and yes the catridge was the better I thought

    ReplyDelete