N64 Stick Converter PCB v3 / firmware v3.5 - PCBs available again (August 2017)

Started by micro, March 13, 2015, 08:57:38 AM

Previous topic - Next topic


Is there any way to rewrite the code so that the maximum range reaches 100?


 Hi micro, please, can you tell me why you do not ship to Brazil?
Please, here we need this improvement too :(
Please allow us braziliens to order and enjoy this
great solution.


Ordered mine!  Do the new ones come with the latest firmware, or will I have to flash them myself?


So I've assembled four of the sticks myself. Ordered straight off the list and flashed with an aliexpress USBasp programmer as recommended. My issue is this. The stick calibrates successfully and seems great for the first 30sec-1min of gameplay. Over time however, the neutral zone (0,0) slowly drifts left. In other words, the neutral position gradually changes from 0,0 to -10,0 -20,0 -30,0 etc. This means that after a minute or two of gameplay it becomes impossible to turn right, pushing the joystick right accomplishes less and less. I'm at a loss for what to do here. My soldering work looks decent IMO across all four boards. Any ideas, help, thoughts about what could be the issue? I have an everdrive so I have verified my feelings in games with the actual joystick numbers from the joystick test rom. Let me know. Thanks all.


I may have missed it, but what is the new way to invert Y for the stick?


@micro: Any plans on releasing the source code for version 3.5?
I wanna try to patch it so that it works with the stock SIMPLE JET V2.0 C PCB and an ATTINY261a as per @blecky http://freneticrapport.blogspot.ca/2015/03/n64-gc-replacement-stick-controller-ic.html



Hi all  :). Been using four of these (V3) (and loving it) over the past two or so years and after unshelving my controllers recently one of them the analog stopped working  :(, any idea on how to troubleshoot this? Tried recalibrating but I'm suspecting it might be either an issue on the IC on the PCB or with the N64 controller board itself.

I'm in Brazil so I can't get a replacement (I'd suggest offering only EMS to Brazil if shipping is the issue).

I have amateurish knowledge on electronics but I suppose I could check the VCC on the PCB for the nominal values on the datasheet with the controller turned on to see if the IC still lives? Any ideas on how to check if the ATTiny24A is the issue, I find it hard for the potentiometer to be the issue. I'll also try replacing the controller PCB after checking if all the pads and traces on the board are OK.


Found my multimeter and tested for continuity between the components on the PCB and the Controller board and all is a 100% as it was before. I'm now assuming somehow the EEPROM got corrupted and will try to re-flash it with a USB programmer. If that doesn't work I'll swap controller boards and if that still doesn't work I'll grab a new ATTiny24A. Maybe a slight surge on the console power-up corrupted the EEPROM?  :-\


Hey Micro, I know these have been out a long time now, but by chance is there any stock left?  I shot you a PM and e-mail to the address in the first post. Thanks!


Quote from: micro on March 13, 2015, 08:57:38 AM
- No need to ask for availability. As long as you can see the email address above, the PCB sets are available.

A part of me is still hoping there is some truth in this. I've send you two emails, the second one with my address reformatted, because I thought the previous format might have been the reason that I didn't get a response. It's been a while now and I would very much like to hear if there are still some of these available, because I would very much like one.

Please let me know.


I was thinking about the octagonal stick restrictor on the replacement stick, and how it differs from the original. The current solution is to scale the output so that either the x-/y-axis are correct, or so that the diagonals are correct. This is how it looks currently

The reason that the standard range works only on the x-/y-axis and extended range only on the diagonals is that Micro has used constant scaling over the whole range. If linear scaling is applied something like this could instead be achieved

Thus, with this scaling it is possible to almost perfectly map the endpoints of the octagonal gate of the replacement stick to the output from an original N64 stick. The scaling also works well for the inner region, i.e. when the stick is not fully tilted. The idea behind my suggested scaling is to use Micro's standard range when on the x-/y-axis, and the extended range when on the diagonals. If inbetween, a combination is used so that the closer you are to one of the diagonals, the more extra scaling is applied. The code for this algorithm can be implemented quite efficiently, so it should be possible to run on the attiny Micro uses with his PCB. I don't personally have enough experience to build the firmware though, and besides Micro hasn't posted the source code for his latest firmware version. Too bad that Micro doesn't seem to be active here anymore  :'(

Quote from: Link83 on July 15, 2015, 12:57:48 PM
Great work micro! :D I just had a few questions about the 'extended range mode' if you dont mind...

So I understand that the original N64 analog stick restrictor is more a square-ish octagon shape, rather than a true octagon like the GC style sticks (Not my pic):-

Heres a picture of a new original N64 analog sticks range taken with sanni's N64 controller test rom:-

The original N64 converter used 168 steps (Which I think was based on the up-down, left-right analog stick measurements?) which means if you use a replacement analog stick with an octagonal or circular restrictor you end up with these ranges:-

Red = Original N64 Restrictor
Blue = Octagonal Restrictor (GameCube/Wii Style)
Green = Circular Restrictor (PlayStation/Xbox Style)

This means you dont quite have the maximum range for the diagonals, which is the problem experienced by MockyLock with GoldenEye/Perfect Dark using v2:-

Does the 'extended range mode' try to modify the analog stick values into a more square-ish shape, or does it simply extend the range using the number of steps for the diagonal size, like this?:-

In which case the 'extended range mode' has the full range of an original N64 analog stick, but slightly more range in some directions than originally intended (Plus if you have a limited area of movement [Small restrictor] like some of the third party GC style analog sticks, then the stick could be too sensitive)

I'm also curious to know what the maximum number of steps is for the original diagonal ranges? I'm guessing around 190 steps? (13% increase) and would a value somewhere in between the two (Perhaps 180 steps) work for GoldenEye/Perfect Dark?

I just personally would prefer to have 'one mode' for all games - even if that means I have to compromise slightly with more range for some games than originally intended :)

Quote from: Informationator on July 17, 2015, 05:00:44 AM
Interesting question, Link.  I'm also curious as to whether the joystick would calibrate properly if I carefully modified the octogonal gate to match that of the N64's gate.  With some careful measurements and markings and a file I imagine you could get very close to perfect.

Or...  If, the angles would be too severe with a 18mm and 20mm measurements, you could leave the cardinal directions at 16mm and carefully file the diagionals out to ~17.8mm, and the ratio would be faithful to the .9 ratio of the N64 controller's gate points.

Quote from: sanni on July 30, 2015, 02:03:43 AM
Quote from: Link83 on July 15, 2015, 12:57:48 PM
I'm also curious to know what the maximum number of steps is for the original diagonal ranges? I'm guessing around 190 steps?

There are about ~83-85 steps for up/down/left/right and diagonally the x/y values are between ~67-70 on a new controller.

So the overall "traveling distance" between e.g. the lower left and the upper right corner would be the square root of ((2*68)²+(2*68)²) so about 192.


Can you please also release the files for pcb v2? I prefer to use the ps2 analog.


Hey everyone.  I'm trying to get the parts to build one of these.  Does anyone know of a good way to buy the joystick in the United States?

EDIT:  I found these - https://www.rapidonline.com/Catalogue/Product/51-7063
Do they look correct?  RapidOnline appears to ship to USA.  I also saw the E-Bay link on page 7.


Quote from: OcrainaOfTime on May 27, 2019, 08:57:13 PM
Hey everyone.  I'm trying to get the parts to build one of these.  Does anyone know of a good way to buy the joystick in the United States?

EDIT:  I found these - https://www.rapidonline.com/Catalogue/Product/51-7063
Do they look correct?  RapidOnline appears to ship to USA.  I also saw the E-Bay link on page 7.
I got mines from this ebay UK seller spiratronics
They also have a website http://spiratronics.com



Thanks @Daijoubu for that info.  I ordered all the parts, and I was able to build my own board. :)  However, the values for the diagonal upper left and diagonal lower right are very low.  In Mario 64, for example, Mario runs quickly in all directions besides those two (which are polar opposites by the way).  In those two directions, he just walks.  Does anyone have any ideas why this is?  I'm attaching a screenshot of my range results.  Also, as you can see, the point of center is slightly off from what it should be.  Also, if I move the controller, it affects the control stick (without actually moving the control stick).  Maybe my testing tool is just really sensitive, but it's worth mentioning.  Do you think it is my soldering, or perhaps the potentiometer is the culprit?  Thanks in advance.

EDIT:  I am not sure how to upload the screenshot of my results.  The site just gives me an error:  "Unable to create a new attachment directory. Your attachment or avatar cannot be saved."  But it basically looks like the octagon you would expect but with the upper left and lower right diagonals just flat.


Is the OP no longer providing this service? I sent a email including my purchase amount of 2, name, address, and country a few weeks ago but no response :/


It might be worth emailing them more than once, or pming them here.
Although it's extremely common for people that do cool projects like this to not support them years later.

It's not exactly a lucrative business making kits and stuff.  Usually people buy a set batch of parts and once those sell, they move on to something else.

OP was nice enough to make it open source, but good luck finding those potentiometers. Looks like the original links are dead
MY WEBSITE: https://segasonicfan.wixsite.com/retro
I design PCBs for retro game systems :)


I mentioned in another thread recently that the PMs on this forum do not automatically send out an email, unless you opt in to that.  It's a batshit stupid system and I'm terribly sorry, but the developers of this forum won't change it.

So your messages might not be sending the right signals to the right people.  Sorry about that.


I'm afraid to say micro hasn't been seen online in years :( His forum account here was last active in October 2017 and AFAIK the same applies to his circuit-board.de account. Maybe he has just been very busy with other things, I just really hope he is ok.


I discovered something that might be useful to others regarding an easier way to improve the GC-style joysticks.

I made some of these kits for myself and out of interest, I decided to see what would happen if I only replaced the analog stick of my overly-sensitive GC-style joysticks with the ones mentioned on page 1 in this thread. To my surprise it actually works MUCH better. It's not quite as good as doing the full conversion, but it is a LOT better than the stock GC-style joysticks - GoldenEye007 actually becomes playable again. It still has the same problem of over sensitivity but to a far, far less extent. This may be an attractive option to anyone wanting a less-involved mod.

In my GC-style joysticks the stock potentiometers were 10k just like the ones mentioned on page 1, but instead of having a '60' in the top left corner, they had '38'. This number refers to the angle at which you have to tilt before the resistance is at its boundary (something like this anyway).

Removing the analog is a bit fiddly, but it's possible to pry off the two 3-pin variable resistors and desolder them individually before tackling the 4 pins of the stick. Be careful not to accidentally desolder any of the surface-mounted resistors. To remove the stick, I held the thumbstick back (the metal casing it will get hot) to provide some lifting force while heating up the 2 far pins. Once the 2 pins lift off the board a bit, cut them and repeat for the other side. To remove the pins and solder from the holes I heated each one up and bashed it against a table to knock the solder out, then hold it up against a light source to check that it's all gone. Now it's time to install your replacement.

Also - unrelated, but did the source code for v3.5 firmware ever get released?



It seems that sellers nowadays deal with the most recent "V3" model, which doesn't have the outer screw anymore. Perhaps they can be used unmodded without too many issues? Has anyone here tried them?



Hi, I guess Micro left this project dead and no longer processing more buy requests for this converter.
Any suggestion where I could find a similar mod or a GC-styled stick replacement for the N64 that doesn't suck? Raphnet's GC to N64 converter won't be available until estimated end of 2022/start of 2023, and I don't have enough money to buy stuff like Steel Sticks.

I would appreciate any answer as the last response was more than one year ago.


8bitdo have released a wireless/BT N64 controller mod kit with a hall effect joystick for those interested, stick can be purchased separately.


Has anyone succesfully updated a v2.2 board with the newer 3.5 firmware? Looking at a v2.2 board I don't see the same six vias to connect the programmer to.

I think these points on the v2.2 board translate to the vias found on the v3 board, but the PCB doesn't seem to be getting any power.

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: error: program enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check

avrdude done. Thank you.

Using an up-to-date Windows 11 with the drivers installed as per the firmware update guide.