The NES64 is a replacement PCB for use in an existing controller for the Nintendo Entertainment System (NES). It brings one of the most popular and arguably best of the early game console controllers to the Commodore 64, Amiga, Atari and other retro home computers.
The NES64 can be installed in either an original Nintendo controller or in a currently produced clone controller. Either way, it may be installed in a way that keeps your working (and perhaps even antique) controller fully restorable to its original state.
It features an optional switch that lets you jump in most games using the A button (Nintendo style) instead of the up-arrow (Commodore joystick style). The switch can be installed for external or internal access. The former is destructive to the casing, whereas the latter is not.
Contrary to the Nintendo Entertainment System (NES) controller, there is no logic in a Commodore/Atari style controller/joystick itself, and hence no logic on the NES64 board. It is a simple series of buttons each of which is connected to its own pin and a common ground pin. All logic is handled inside of the computer.
A controller for the C64 etc. was typically a one-button joystick, whereas the NES controller had two action buttons, A and B. The NES64 assigns the joystick button to button B on the NES controller, because in NES games, button B is typically used for actions similar to what the joystick button would do in C64 games (e.g. shoot, open, interact, etc.).
The NES64 allows you to use a switch for toggling between which button works as the joystick's "up" direction: The actual up direction of the D-pad, or the otherwise unused button A. In some C64 games you jump by moving the joystick up, while on the NES you typically use button A to jump. This switch allows you to imitate the NES behaviour, even in C64 games that were made for the one-button C64 style joysticks. This works great in games like The Great Giana Sisters and even the recent C64 port of Super Mario Bros.
There are several options. The NES64 is open source hardware, so you can get the PCB files from GitLab and send them to your favourite PCB manufacturer. You can see a list of the necessary parts in the instructions.
Or you can buy the PCB as a kit directly from the author.