Worklog Super NOTendo

Joined
Jun 2, 2020
Messages
28
Likes
17
This is such a cool project! I know that the SNES board is fried and that there isn't much use for it otherwise, but wouldn't it be possible to just use a cartridge connecter with a mounting bracket? Or does keeping the SNES motherboard make mounting exterior ports easier?
 

fibbef

Wizardry V Completer
.
Joined
Nov 10, 2016
Messages
594
Likes
1,575
Portables
3
Gonna hit you with a big shrug there, mate. Mounting a cart slot while yeeting the mobo would certainly provide a lot more internal space, but really all I need is room for the arduino (which there is plenty of space) plus routing wires (again, no challenge). The way I look at it, this way everything is already nicely lined up and I can just use all the original parts; power switch, eject lever, etc.
 

fibbef

Wizardry V Completer
.
Joined
Nov 10, 2016
Messages
594
Likes
1,575
Portables
3
For a hardware project, I ended up doing way more software troubleshooting than I expected. But I'm not a programmer, so I should have expected more. For a rundown of my foibles, read on. If that kind of stuff doesn't interest you, skip down to the pictures.

I had to rework cheese's code because he had written it to light up an LED when a button is pressed, as opposed to trigger a button press. Buttons, as I'm sure most of you are aware, work by bridging two points, typically a high point to ground. This meant that instead of taking a pin that defaults to LOW and temporarily writing HIGH, I had to do the reverse. Even after flipping the logic, the pins seemed to be writing low pretty much constantly (which I figured by testing continuity to ground with my meter). I may have fixed this by switching every pin's mode to input when not writing low, then switching back to output if that button is being pressed on the controller. I also found out after way too much testing that the data line on my controller 1 port was loose, so the whole input/output switching might not be necessary.


This cartridge is complete! The board in question is the blue Intellivision PNP that is shown briefly in the gif in my first post. I never realized before that the Intellivision has some real bangers. After getting the code fixed, I sat down and played a little bit of Astrosmash and Night Stalker.


When I was working out the kinks with the arduino code, I had Astrosmash running for a few minutes and over time, the screen started flickering then grew glitchy to the point where there was nothing but fuzz on the screen. I was worried that something like this might happen when playing a game off of 5v when the hardware takes 6v from AA batteries. Then again, it may have been a side effect of unworking code. I'll have to plug it back in and play for even longer.

To do:
  • Wire up the power switch to the console. Right now it powers on when I plug in the AC adapter.
  • Finish the arduino code to account for a second controller. I had commented out all of my P2 code while I focused on narrowing down the issues I had with one controller.
  • Reinsert the eject lever into the console and close it up.
  • Build more game cartridges!
Edit: I'm still working out a few kinks with the controls. While Astrosmash and Night Stalker work fine, there are some games that I can't get past the title screen and the game Shark Shark (for real, that's what it's called) keeps pausing/unpausing on its own. It's kind of a nice slo-mo effect, but not desirable. I'm hoping the problem is on the PNP's board because if it's an issue with the controller code, I'm about at my wit's end.
 
Last edited:

fibbef

Wizardry V Completer
.
Joined
Nov 10, 2016
Messages
594
Likes
1,575
Portables
3
Great news! I figured out the control issues mentioned in the edit of my previous post. Turns out I wired Start and Select to pins 24 and 25 of the cartridge, when my notes say to connect them to 11 and 12. :facepalm: I have no idea how I made this mistake because 24 and 25 are reserved for controller 2 inputs. And not even the same buttons! After correcting this mistake I played a bit more Intellivision and ALL games are now working correctly.


With that, I thought it time to start rebuilding the console. I found the eject lever and the metal arm that gives it rigidity, but the tension spring was nowhere to be found. My guess is some idiot (now who could that be?) probably threw it away. So rather than digging through all of my parts bins for a small spring that may at this point be in a landfill, I opted to make one out of a clothespin spring. FYI, those springs are not easy to bend. I got the shape "good enough" and put everything in place. The action on the eject lever feels pretty good.


The eject lever is in place, the power switch is wired up, and the Intellivision cartridge is DONE (pending a new pretty label). I still need to complete the arduino code, but this is probably the last picture inside the console before I close it up. Then it's on to making more cartridges.

Edit: I updated the code to account for player 2 and tested. Intellivision still works perfectly, so I need to build a cartridge out of a 2-player PNP to fully test. For now, I'm closing up the console.
 
Last edited:

fibbef

Wizardry V Completer
.
Joined
Nov 10, 2016
Messages
594
Likes
1,575
Portables
3
Man, I hate being dumb. I spent days trying to figure out what I was pretty sure was a programming error. Then it turned out that the clock pin on the second controller port had a loose connection, causing all buttons to be pressed at once. On the plus side, the arduino code is just a little bit cleaner. I'm glad I powered through before asking for help. "PLEASE LOOK AT MY CODE!!! Durr, loose wire, my bad."



Feeling pretty good about this project now. Console is 100% done (barring any unforeseen issues) and 3 cartridges are complete, sans bright shiny new labels. Once I have completed an arbitrary number of cartridges to really show off this project, I'll post in the completed projects section. Also, that sheet of paper keeps showing up in my pictures because without it I'd be screwed. It maps out all of my arduino pins being used as well as the cartridge pinout for A/V and controller buttons. Without it, I'd have to crack open one of the finished cartridges and back trace my work.

I also changed the name of this project, seeing as how this looks and (kind of) acts like a SNES. I'm still reserving the name Toggle for a future project which will be slightly more Switch-related.
 

fibbef

Wizardry V Completer
.
Joined
Nov 10, 2016
Messages
594
Likes
1,575
Portables
3


Hello everyone! I'm reaching out asking for help on this project. The solution may be simple, but so far it eludes me.

So far in order to trigger a button press, the arduino outputs "low" on a pin, effectively bringing it to ground. It works great for most games. The problem I have is that I've encountered some PNPs where button presses are triggered by connecting the button to VCC. So if I'm getting this right, I would have to do the exact opposite of what I'm doing now (which would be to default to low and output "high" when the button is pressed). Does anyone know how I can accomplish this, either through software or a hardware solution?
 
Joined
Jun 2, 2020
Messages
28
Likes
17
Do these PNPs have any extra space in the cartridge shell? If there's enough room, passing all the controller inputs through NOT gates (or some other cart-side circuitry) might work
 

fibbef

Wizardry V Completer
.
Joined
Nov 10, 2016
Messages
594
Likes
1,575
Portables
3
Thanks for the response, CorruptedBit. Yes, most of the cartridges have a bit of wiggle room inside the shell, so after reading your advice, I gave a real half-assed (I mean, let's not mince words here) attempt at making a NOT gate out of a transistor and a couple of resistors. Unfortunately, I don't know if my components were any good as 99% of my parts are salvaged from dead electronics and I doubt I was even making the gate correctly. So rather than continue stumbling around in the dark, I attempted a software solution.

As previously stated, these select few PNPs needed a HIGH signal to trigger a button press. Therefore, I made a quick revision of the arduino code to write high instead of low. Lo and behold, it worked! At least for the one button I had wired up at the time. I wired up the cardinal directions and... it still worked!

My final solution was to have a way to switch back and forth between button modes (mode 0 being writing low for button presses and mode 1 writing high). I figured the easiest way to do this was to use a variable to store the current mode (default to 0) and switch modes if it at any time detects a specific button combination. In order for the combo to not be pressed accidentally during gameplay, I chose the combination L+Select+Down for mode 1. I figured some 3DS softmodders might appreciate that. L+Sel+Up goes back to mode 0.

With that, the console is closed back up (I've considered installing a mini or micro USB port in the back for easy code updates) and for those curious, I have 12 cartridges fully completed.
 
Top