Connomore64: Cycle-Exact C64 Emulation Using Multiple Microcontrollers

BigGo Editorial Team
Connomore64: Cycle-Exact C64 Emulation Using Multiple Microcontrollers

The Commodore 64 continues to inspire hardware enthusiasts decades after its release, with the latest innovation being a cycle-exact emulator that takes a unique approach to recreating the iconic 8-bit computer's experience.

Multiple Microcontrollers Working in Parallel

The Connomore64 project takes a novel approach to C64 emulation by using multiple RP2040/RP2350 microcontrollers working in parallel, each emulating specific components of the original system. Unlike traditional software emulators that run on a single processor, this distributed approach allows for microsecond-exact timing that matches the original hardware. The project interconnects these inexpensive microcontrollers (costing less than €1 each) using a multiplexed 8-bit bus running at approximately 8 MHz, creating a system that can interface with original C64 peripherals.

Connomore64 Technical Specifications

  • Microcontrollers: Multiple RP2040/RP2350 (ARM Cortex M0+ based)
  • Interconnection: Multiplexed 8-bit bus running at ~8 MHz
  • Video Output: DVI/HDMI
  • Audio Output: Based on SIDKick pico (using reSID emulation)
  • Compatible Ports: Userport, IEC (floppy), joystick ports
  • Fastloader Support: JiffyDOS, Transwarp
  • Hardware Form Factor: Custom PCB fitting original C64 case
  • Potential Cost: Below €20 for smaller custom implementations

Real Hardware Compatibility Sets It Apart

What makes Connomore64 particularly interesting to the retro computing community is its ability to interface with original C64 hardware. While PC-based emulators like VICE offer high emulation quality, they typically lack the precise real-time timing needed to work with physical peripherals. Connomore64 supports the C64's userport, IEC port for floppy drives, joystick ports, and is working toward expansion port compatibility.

I love this! The C64 introduced me to the world of computers as a kid. I still have that almost 40 year old machine in my collection, but I'm weary of failure every time I turn it on. This is somewhat better than the MiSTer as I can use physical peripherals with it.

This compatibility extends to fastloaders like JiffyDOS and Transwarp, which significantly speed up data loading from floppy drives. The project has been tested with various peripherals including the WiC64 userport hardware, demonstrating its practical application beyond mere emulation.

Balancing Accuracy and Performance

While the project aims for cycle-exact emulation, some community members noted an interesting design choice regarding graphics rendering. The developer rewrote the graphics rendering code to run 5-10 times faster than previous implementations, but at the cost of some compatibility. This decision sparked discussion about the balance between perfect accuracy and practical performance, especially given the limited processing power of the RP2040/RP2350 microcontrollers.

The project currently only emulates the CPU half of each C64 cycle, which limits potential compatibility with some expansion port cartridges. The developer notes that while there is code for the Phi low cycle, the microcontrollers aren't fast enough to handle it, highlighting the technical challenges of achieving perfect emulation on relatively modest hardware.

Current Limitations

  • Only emulates CPU half of each C64 cycle
  • Graphics rendering sacrifices some compatibility for speed
  • Expansion port support still in development
  • Not yet end-user ready (proof of concept stage)

Beyond Nostalgia: A Technical Achievement

Community discussions reveal that interest in C64 emulation goes beyond mere nostalgia. The unique combination of limitations and possibilities in the original C64 continues to inspire programmers and hardware enthusiasts. As one commenter noted, the 8-bit CPU with 16-bit address space, simple assembly language, and memory-mapped peripherals created an environment that pushed programmers to develop innovative techniques that produced results that seemed impossible on paper.

The Connomore64 project also serves as an example of running compute-intensive software on inexpensive, low-powered, interconnected microcontrollers, potentially offering insights for other distributed computing applications.

Current Status and Future Potential

Currently, Connomore64 runs most games without issues, including classics like Mayhem in Monsterland, R-Type, Bubble Bobble, and Turrican. It also handles a good portion of demos that push the original hardware to its limits. While the project is described as a proof of concept and not yet end-user ready, it demonstrates significant potential.

The developer has created a custom PCB that fits into an original C64 case, featuring the standard C64 ports plus modern HDMI and audio outputs. Future possibilities include smaller, more cost-effective custom PCBs that could potentially bring the total cost below €20, making this an accessible option for C64 enthusiasts looking to preserve their retro computing experience without risking their aging original hardware.

For those interested in the technical details, the project builds upon several existing open-source projects, including the rp2040js emulator, the chips emulation library, PicoDVI for video output, and a port of the SIDKick pico firmware for audio. This collaborative approach highlights the strength of the open-source community in preserving and extending computing history.

Reference: Connomore64