If you know C coding reasonably well it is possible to support any game controller supported by the Arduino USB Host Shield Library (https://github.com/felis/USB_Host_Shield_2.0)
If you really know C coding and USB specifications you can probably support any USB controller.
Here is a link to my github repo (https://github.com/Ryzee119/n360/tree/master/n360_USB_driver) with the USB driver source code. It includes compiling, programming and debugging instructions.
I you develop some code for a controller and are happy to share it, please email me at firstname.lastname@example.org (or put in a merge request at github) and I can add it to the website (full credit to you of course!)
Change Button Mapping
It is possible to modify the button mapping in the software and upload the code to the n360 to suit your preference. The below screenshot from the source code illustrates the main section of code handling the button presses and where you need to make modifications. Hopefully it is reasonably intuitive to change.
1. If for example you wanted to make ‘X’ on the 360 controller correspond to the N64′ C-right you would change:
2. You can make multiple Xbox buttons correspond to a single N64 button like this:
In this case, the left and right triggers both correspond to a ‘Z’ on a Nintendo 64 controller.
3. You can make a single Xbox button correspond to multiple N64 buttons like this:
In this case, pressing the right stick in will active all four of the C-buttons on a Nintendo 64 controller.