This project is an Atari 2600 cross platform emulator embedded in an Atari CX40 joystick with ESP32 and designed for the modern browsers like Chrome, Firefox, Safari and Edge.
The Atari 2600 (also known as Video Computer System or simply VCS) is a second-generation console released by Atari on September 11, 1977. It retailed for $199 and had a 6507 CPU at 1.19 MHz with 128 bytes of RAM.
As the Atari 2600 cross platform emulator was used the Javatari.js created by Paulo Peccin and together with the image ROMs that can be embedded in the ESP32 using SPIFFS file system.
Pitfall! is a video game designed by David Crane for the Atari 2600 and released by Activision in 1982.
You can launch the emulator and load ROMs with a single link. And now you can play Atari 2600 games with your CX40 joystick.
All the source code was documented, like as the steps required to set up your own Atari emulator in the ESP32.
- Atari CX40 joystick with Infrared and batteries (2x AAA 1.5v alkaline)
- ESP32 NodeMCU-32S WiFi / Bluetooth
- IR Receiver Sensor (Arduino Compatible)
- Micro USB to USB Cable used to program the ESP32
- Double-Sided Bonding Tape
- Screwdriver
- Soldering iron
- Soldering tin
- Utility knife
- Atom or Visual Studio Code, the two have supports for PlatformIO
- PlatformIO, An open source ecosystem for IoT development
Remove the four screws from the back of the Atari CX40 joystick, for this use a suitable screwdriver.
Use a utility knife to remove the plastic parts to accommodate an ESP32 board as indicated below:
Place a double-sided bonding tape on the indicated base to fix the ESP32 NodeMCU and drill a hole in the location indicated to connect the USB programming cable.
Remove the plastic base on the bottom of the ESP32 NodeMCU to better secure the base of the board.
Make the power and signal connections as shown below.
Note: Change the IR receiver pin from 15 to 34 (White Wire), I made this change later for better compatibility of IR library. If you do not want to change the connection, change the pinout from 34 to 15 in the main.cpp source code on line 5.
Solder the power wires to the battery as the picture below:
Let's close the joystick carefully and let the infrared sensors (transmitter and receiver) approximate.
Insert the USB cable into the joystick and into USB PC to upload program into the ESP32.
Clone this repository: https://github.com/arcostasi/esp32-javatari-embedded
Open this project and the main.cpp file in your favorite IDE editor that supports the PlatformIO and upload the program into ESP32:
Let's now store our favorite game images inside the roms directory in storage and send ROM files to ESP32 file system.
Use a SmartConfig or EspTouch application for your smartphone connected to your Wifi network to put ESP32 on your network.
If a successful message appeared on your SmartConfig or EspTouch application, access the IP address of your ESP32 and your emulator will be loaded.
Access the ROMs list route of your IP: http://esp32_ip/roms and put the path of your ROM to a URL of your emulator (F6 keyboard) or upload a ROM of your local storage (F5 keyboard).
I hope it worked out well and you can play your favorite games using your Atari emulador embedded.
-
Sends the Infrared (IR) commands from the Atari CX40 joystick to the emulator via IR Receiver connected to the ESP32 and decoded to the Javatari.js API. If you are using a USB joystick, you are probably already working with this emulator.
-
Replace the joystick batteries (2x AAA 1.5v alkaline) with a cell phone rechargeable battery, approximately 3.3 to 5 volts.
-
Paulo Peccino (@ppeccino) for his amazing cross platform Atari 2600 emulator Javatari.js.
-
David Crane (@PitfallCreator) for his adorable Pitfall game illustrated in the picture 1.
This code source is signed under GNU AGPLv3, see license.txt distributed with this file.