Giter Club home page Giter Club logo

extensionctrl-to-c64's Introduction

Nintendo Extension Controller to Atari/Commodore 64 Adapter

The Nintendo Extension Controller adapter sitting on top of an NES Classic Controller

This board will allow you to use a Nintendo Extension Controller with your original Atari or Commodore computers/consoles that use the Atari Joystick Port. Specifically, this adapter supports game controllers meant for the NES and SNES Classic Edition consoles.

Bill of Materials

There are two different versions of this board. One uses a Seeeduino Xiao, and the other uses an ATtiny1604. Both versions use surface-mount components, with the exception of the D-Sub connector and any optional headers. Both versions use the same software and output pin numbers.

Seeeduino Xiao Version

Label Quantity Description
U2 1 Seeeduino Xiao
JP1 1 D-Sub Recepticle (female), 9 position, right-angle, through-hole
R1-R5 5 47k Ohm Resistor, 1/4 watt, 0805 package, surface-mount
Q1-Q5 5 BC847 NPN Transistor, SOT23-3 package, surface-mount

ATtiny1604 Version

Label Quantity Description
U1 1 ATtiny1604, 14SOIC package, surface-mount
U3 1 MCP1825 3.3v 500mA Linear Regulator, SOT223-3 package, surface-mount
JP1 1 D-Sub Recepticle (female), 9 position, right-angle, through-hole
R1-R5 5 47k Ohm Resistor, 1/4 watt, 0805 package, surface-mount
Q1-Q5 5 BC847 NPN Transistor, SOT23-3 package, surface-mount

Why Surface Mount?

Bottom of the adapter

This project is designed to be the easiest way to get into surface-mount (smd) soldering. The Seeeduino Xiao version has parts on both sides of the board, meaning that manual or hot air soldering can be used. The ATtiny1604 version only has parts on a single side of the board, meaning you can use a reflow oven. So far, I have only built these boards by hand using a fine-tip soldering iron, magifying glasses, tweezers, and 0.3mm solder. Since I have not tried hot air soldering or using a reflow oven, I may be talking out of my butt. Please try them out and let me know!

In order to make this project as easy as possible to solder, large smd parts were selected, and the parts were given relatively generous spacing. That being said, you probably want to mount C1 and C2 before U1 and U3.

If you make an entirely through-hole version of this project, please let me know!

Libraries required

Compatible Controllers

  • NES Classic Controller
  • SNES Classic Controller
  • Wii Classic Controller
  • Wii Pro Controller

Controller layout

Keep in mind that only the D-pad, A, and B buttons are mapped by default. The rest of the buttons are detected by the microcontroller, but they are not sent to the Atari/Commodore because there is no hardware for those buttons. However, you can customize the firmware to turn those extra buttons into turbo buttons or switch layouts. By default, the layout is:

Controller Atari Joystick Port
Up Up
Down Down
Left Left
Right Right
B Fire
A Up

Programming the Arduino

  1. Open ExtensionCtrl_Adapter.ino in your Arduino IDE.
  2. Install the NintendoExtensionCtrl library.
  3. Plug the Seeeduino Xiao into your computer.
  4. Click Upload.

Reprogramming can be done in-circuit, so ther is no need to remove the Xiao from the board to change the firmware.

Notes specific to the ATtiny1604

The ATtiny1604 supports UPDI programming, which can be accomplished via a dedicated programmer, or building your own out of an Arduino Nano. The programming process is the same, except you will connect a single wire to the UDPI pin (pin 10). All of the pins on the ATtiny1604 have been broken out into 2.54mm headers for convenient programming and extension.

Additional Images

The adapter plugged into a Commodore 64

The adapter plugged into an Atari Flashback 2

extensionctrl-to-c64's People

Contributors

bagofarms avatar

Watchers

James Cloos avatar  avatar

extensionctrl-to-c64's Issues

Create README

Document

  • Function of the device
  • Special features (Select button)
  • Setting up development environment (installing Arduino and ExtensionCtrl lib)
  • Flashing firmware to device (include changing pin assignments as necessary)
  • Explain circuit diagram
  • Compatibility with controllers

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.