The hardware is composed of several stacking boards, each of which hosts a set of subcomponents. The subcomponents are each in a subsheet, exposing hierarchical pins and buses to the parent sheet.
One of these boards includes a microcontroller, which has an interface to the internet and runs its own firmware to take commands from the Sega ROM.
This is the firmware source code, built on the Arduino core for the
microcontroller.
The entry point and main loop are in firmware.ino
.
- To build from the command line, install
arduino-cli
as detailed in https://arduino.github.io/arduino-cli/0.35/installation/ - Install the earlephilhower rp2040 core:
arduino-cli config add board_manager.additional_urls https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json arduino-cli core update-index arduino-cli core install rp2040:rp2040
- Install the Ethernet library. Until a new release is out that solves
arduino-libraries/Ethernet#267, we install a
forked version with the fix:
arduino-cli config set library.enable_unsafe_install true arduino-cli lib install --git-url https://github.com/joeyparrish/Ethernet
- Set WiFi credentials (see WiFi configuration section below)
- Run
make
, which will show you a menu of actions.
Create a file called arduino_secrets.h
with two macros:
#define SECRET_WIFI_SSID "Put your WiFi SSID here"
#define SECRET_WIFI_PASS "Put your WiFi password here, or blank if none needed"
If you don't, the firmware will only be able to use a wired connection.
make build
With the microcontroller board removed from the cartridge and connected via USB:
make upload