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:
Board | FPGA | support | Note |
---|---|---|---|
Tang Nano 9k | GW1NR | X | micro SD card HW modification needed |
Tang Nano 20k | GW2AR | X | twin Dualshock MiSTeryShield20k spare header + Joy to DIP |
Tang Primer 20K Dock ext Board | GW2A | X | twin Dualshock |
Tang Primer 25K | GW5A-25 | X | no Dualshock, no retro D9 Joystick |
Tang Mega 60k NEO | GW5AT-60 | X | twin Dualshock |
Tang Mega 138k Pro | GW5AST-138 | X | twin Dualshock |
This project relies on a M0S Dock BL616 µC being connected to the Tang Nano 20K.
Alternately you can use a Raspberry Pi Pico or esp32-s2/s3 and use the FPGA companion firmware. Basically a µC acts as USB host for USB devices and as an OSD controller using a SPI communication protocol.
There is a nice case available mounting the MiSTeryShield20k (TN20k + M0S).
Original A2600 core by Retromaster
All HID, SDcard and µC firmware by Till Harbaum
Features:
- PAL 768x576p or NTSC 768x480p HDMI Video and Audio Output
- Scanline length auto adjust
- Cartridge type autodetect
- NTSC / PAL region autodetct
- Superchip autodetct
- USB Keyboard USB Keyboard
- USB Joystick
- USB Gamepad Stick as paddle emulation
- USB Mouse as paddle emulation
- supports 2nd Trigger Button for modified Games
- legacy D9 Joystick (Atari / Commodore digital type) MiSTeryShield20k
- Joystick emulation on Keyboard Numpad
- Dualshock 2 Controller Gamepad for MiSTeryShield20k via spare pinheader
- Dualshock 2 Controller Gamepad Keys & Stick as Joystick
- Dualshock 2 Controller Gamepad Sticks as paddle emulation (analog mode)
- Cartridge ROM loader. Boot default is homebrew 'Hunchy' Chris Walton
See Tang Nano 9K
See Tang Primer 20K
See Tang Primer 25K
The installation of A2600Nano on the Tang Nano 20k board can be done using a Linux PC or a Windows PC
Instruction.
ROM can be loaded via OSD file selection.
- 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
- Button
Trigger
- 2nd Button
Trigger 2
-
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.
- 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)
- Key F11 as core function
START
- Key PAGE UP as core function
SELECT
Numpad | Numpad | |
---|---|---|
0 Trigger |
8 Up |
. Trigger 2 |
4 Left |
- | 6 Right |
- | 2 Down |
- |
-
S2 keep pressed during power-up to prevent FPGA bitstream load from FLASH.
-
S1 reserved
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
A 2nd Trigger Button (B) is supported for modified Games.
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 DS Adapter Cable for further information.
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 | function | TN9K | TN20K | TP20K | TP25K | TM60K | TM138k |
---|---|---|---|---|---|---|---|
0 | Cartridge selected | x | x | x | x | x | x |
1 | Game unsupported | x | x | x | x | x | x |
2 | Game unsupported | x | x | x | - | - | x |
3 | Game unsupported | x | x | x | - | - | x |
4 | Game unsupported | x | x | x | - | - | x |
5 | Game unsupported | x | x | x | - | - | 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 -
Prototype circuit with Keyboard can be powered by Tang USB-C connector from PC or a Power Supply Adapter.
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
Pinmap TN20k Interfaces
Sipeed M0S Dock, digital Joystick D9 and DualShock Gamepad connection.
Pinmap D-SUB 9 Joystick Interface
Joystick pin | IO | Tang Nano pin | FPGA pin | Joystick Function |
---|---|---|---|---|
1 | 2 | J6 10 | 25 | UP |
2 | 1 | J6 9 | 28 | DOWN |
3 | 4 | J6 12 | 29 | LEFT |
4 | 3 | J5 11 | 26 | RIGHT |
5 | - | - | - | POT Y |
6 | 0 | J5 8 | 27 | TRIGGER |
7 | - | n.c | n.c | 5V |
8 | - | J5 20 | - | GND |
9 | - | - | - | POT X |
Pinmap Dualshock 2 Controller Interface
DS pin | Tang Nano pin | FPGA pin | DS Function |
---|---|---|---|
1 | J5 18 | 71 MISO | JOYDAT |
2 | J5 19 | 53 MOSI | JOYCMD |
3 | n.c. | - | 7V5 |
4 | J5 15 | - | GND |
5 | J5 16 | - | 3V3 |
6 | J5 17 | 72 CS | JOYATN |
7 | J5 20 | 52 MCLK | JOYCLK |
8 | n.c. | - | JOYIRQ |
9 | n.c. | - | JOYACK |
In order to use this Design the following things are needed:
Sipeed M0S Dock or Raspberry Pi Pico RP2040 or ESP32-S2/S3
Tang Nano 20k
or Tang Primer 20K with Dock ext Board
and M0S PMOD adapter.
and PMOD DS2x2
or Tang Nano 9k
or Tang Primer 25k
and PMOD DVI
and PMOD TF-CARD V2
and PMOD SDRAM
and M0S PMOD adapter
or ad hoc wiring + soldering.
or Tang Mega 60K NEO
and PMOD DS2x2
and M0S PMOD adapter
or Tang Mega 138k Pro
and PMOD DS2x2
and M0S PMOD adapter
microSD or microSDHC card FAT/exFAT formatted
TFT Monitor with HDMI Input and Speaker
HID and Gamecontrol Hardware option | TN20k needs | alternative option | Primer 25K | Mega 60K | Mega 138K Pro |
---|---|---|---|---|---|
USB Keyboard | USB-C to USB-A adapter | 4 port mini USB hub HS8836A | x | x | x |
USB Joystick(s) | 4 port mini USB hub HS8836A | - | x | x | x |
USB Mouse | 4 port mini USB hub HS8836A | - | x | x | x |
USB Gamepad | 4 port mini USB hub HS8836A | - | x | x | x |
Commodore/Atari compatible retro D9 Joystick | MiSTeryNano shield | D-SUB 9 M connector, breadboard to wire everything up, some jumper wires | - | adhoc SDRAM1 Joy D9 | adhoc PMOD Joy D9 |
Dualshock 2 Controller Gamepad | Gamepad Adapter Board (Sipeed Joystick to DIP) respectively PMOD DS2x2 |
breadboard to wire everything up and some jumper wires | - | PMOD DS2x2 | PMOD DS2x2 |