A2600Nano

March 19, 2026 · View on GitHub

The A2600Nano is a port of the MiSTer FPGA core components of the Atari 2600 VCS with enhancements from the A7800 core such as cartridge type autodetect and the video stabilizer for the:

BoardFPGAsupportNote
Tang Nano 9kGW1NRHDMI / LCDmicro SD card HW modification needed
Tang Nano 20kGW2ARHDMI / LCDtwin Dualshock
MiSTeryShield20k spare header + Joy to DIP
Tang Primer 20K Dock ext BoardGW2AHDMI / LCDtwin Dualshock
Tang Primer 25KGW5A-25HDMIno Dualshock, no retro D9 Joystick
Tang Mega 60k NEOGW5AT-60HDMI / LCDtwin Dualshock
Tang Mega 138k ProGW5AST-138HDMI / LCDtwin Dualshock
Tang Console 60K NEOGW5AT-60HDMI / LCDtwin Dualshock, no Retro D9 Joystick
Tang Console 138K NEOGW5AST-138HDMI / LCDtwin Dualshock, no Retro D9 Joystick

This project relies on a µC being connected to the FPGA. --> MiSTle-Dev wiki <--

A2600 specific 3D Case for the MiSTeryShield20k

Original A2600 core by Retromaster
All HID, SDcard and µC firmware by Till Harbaum

Features:

image

A2600Nano on Tang Nano 9K

See Tang Nano 9K

A2600Nano on Tang Primer 20K (Dock ext board)

See Tang Primer 20K

A2600Nano on Tang Primer 25K

See Tang Primer 25K

A2600Nano on Tang Mega 60k NEO

See Tang Mega 60K NEO

A2600Nano on Tang Mega 138k Pro

See Tang Mega 138K Pro

A2600Nano on Tang Console 60k / 138K NEO

See Tang Console 60K / 138K NEO

A2600Nano with LCD and Speaker

See Tang Nano LCD

Installation

The installation of A2600Nano on the Tang Nano 20k board can be done using a Linux PC or a Windows PC Instruction.

Cartridge ROM Loader

ROM can be loaded via OSD file selection.

Supported mappers

  • Auto detected (F8 F6 FE E0 3F F4 P2 FA CV 2K UA E7 F0 32)

LED 1 to 5 are activated as hint in case an unsupported game (mapper) detected

single / dual Button Joystick

  • Button Trigger
  • 2nd Button Trigger 2

Gamepad

  • Gamepad Button Trigger A (DS2 circle) 1st Trigger Button

  • Gamepad Button Trigger B (DS2 cross) 2nd Trigger Button

  • Gamepad Button Trigger X (DS2 triangle) 1st Paddle Trigger and enable

  • Gamepad Button Trigger Y (DS2 square) 2nd Paddle Trigger and enable

  • Gamepad Button START as core function START

  • Gamepad Button SELECT as core function SELECT

Note

Gamepad button keymap optimized for legacy USB Logitech RumblePad 2 or Dual Action. Keymap might differ for other Gamepads.

Paddle

  • DualShock 2 (left Stick), USB Gamepad or USB Mouse.

1st Paddle 1st Gamepad use Trigger X (DS2 #1 triangle) or left Mouse Button

2nd Paddle 1st Gamepad use Trigger Y (DS2 #1 square) or right Mouse Button

3rd Paddle 2nd Gamepad use Trigger X (DS2 #2 triangle)

4th Paddle 2nd Gamepad use Trigger Y (DS2 #2 square)

Keyboard

  • Key F1 toggle SELECT
  • Key F2 toggle START / RESET
  • Key F3 toggle B/W
  • Key F4 toggle Difficulty Left
  • Key F5 toggle Difficulty Right
  • Key F6 toggle PAUSE (Note: Video is blank or disturbed)
  • Key F12 OSD
NumpadNumpad
0 Trigger8 Up. Trigger 2
4 Left-6 Right
-2 Down-

Push Button utilization

  • S1 reserved
  • S2 open OSD

OSD

invoke by F12 keypress

  • Reset
  • Cold Reset
  • Audio Volume + / -
  • Scanlines effect %
  • Region switch Auto/NTSC/PAL
  • HID device selection for Joystick Port
  • Loader file selection
  • Difficulty A, B Core switch
  • Black & White Core video switch
  • Joystick port swap
  • Invert Paddle
  • De-comb
  • SuperChip Auto/off/on

Gamecontrol support

A 2nd Trigger Button (B) is supported for modified Games.

controller

legacy single D9 Digital Joystick. OSD: Retro D9
or
USB Joystick(s) or Gamepad(s). OSD: USB #1 Joy or USB #2 Joy
Also RII Mini Keyboard i8 left Multimedia Keys are active if USB #1 Joy selected.
Button A and B Buttons as Trigger:

or
Dualshock 2 Gamepad Stick or Dpad as Joystick. OSD: DS #1 Joy or DS #2 Joy
At the moment Dpad only for original Pad. Some clone devices support at the same time Dpad and left stick simultaniously.
circle and cross Buttons as Trigger:

Important

In a MiSTeryShield20k configuration Dualshock is supported via the internal spare J8 pinheader.
See MiSTeryShield20k DS2 Adapter / Cable for further information. Thx venice1200 !

Note

TN20k: You have to select OSD "DS2 #2 Joy" for a MiSTeryShield20k configuration.
TN20k: You have to select OSD "DS2 #1 Joy" if you use the Sipeed Joy to DIP adapter.
Both DS interface ports can be active at the same time meaning twin Dualshock support if the MiSTeryShield20k MIDI interface is not populated (Resistor R9 and IC U3 removed).

or
Keyboard Numpad. OSD: Numpad

or
Mouse. OSD: Mouse
left Mouse Button and right Mouse Button as Trigger for Paddle 1 or 2.

or
USB Gamepad as Paddle. OSD: USB #1 Padd or USB #2 Padd
Trigger X and Trigger Y

or
Dualshock2 Gamepad left stick as Paddle. OSD: DS #1 Paddle or DS #2 Paddle

Trigger triangle and Trigger square

LED UI

LEDfunctionTN9KTN20KTP20KTP25KTM60KTM138kConsole60k
0Cartridge selectedxxxxxx-
1Game unsupportedxxxxxxx
2Game unsupportedxxx--x-
3Game unsupportedxxx--x-
4Game unsupportedxxx--x-
5Game unsupportedxxx--x-

LED 1..5 are activated as hint in case an unsupported game (mapper) detected

Multicolor RGB LED

  • green      all fine and ready to go
  • red          something wrong with SDcard / default boot image
  • blue        µC firmware detected valid FPGA core
  • yellow      FPGA core can't detect valid firmware
  • white      -

Powering

Prototype circuit with Keyboard can be powered by Tang USB-C connector from PC or a Power Supply Adapter.

Synthesis

Source code can be synthesized, fitted and programmed with GOWIN IDE Windows or Linux.
Alternatively use the command line build script gw_sh.exe build_tn20k.tcl

HW circuit considerations

Pinmap TN20k Interfaces

Sipeed M0S Dock, digital Joystick D9 and DualShock Gamepad connection.
wiring

Pinmap D-SUB 9 Joystick Interface

Joystick interface is 3.3V tolerant. Joystick 5V supply pin has to be left floating !
pinmap

Joystick pinIOTang Nano pinFPGA pinJoystick Function
12J6 1025UP
21J6 928DOWN
34J6 1229LEFT
43J5 1126RIGHT
5---POT Y
60J5 827TRIGGER
7-n.cn.c5V
8-J5 20-GND
9---POT X

Pinmap Dualshock 2 Controller Interface

image
DS pinTang Nano pinFPGA pinDS Function
1J5 1871 MISOJOYDAT
2J5 1953 MOSIJOYCMD
3n.c.-7V5
4J5 15-GND
5J5 16-3V3
6J5 1772 CSJOYATN
7J5 2052 MCLKJOYCLK
8n.c.-JOYIRQ
9n.c.-JOYACK