Close

Status update

A project log for CLONE BUINO DUAL

兩個控制台模擬器 Two console simulators

martin-cejpMartin Cejp 11/20/2021 at 18:350 Comments

The project was originally prompted by my disappointment over the Gamebuino META not being open hardware, like it's predecessor Gamebuino Classic had been. I set out to develop a board that would incorporate the respective consoles' MCUs (an ATSAMD21 and ATmega328, respectively), using an FPGA to emulate all peripherals such as the LCD, and provide a TV output for big-screen gaming. The "Chinese clone" branding was part of the flavor.

It was an ambitious project and now it is clear that it will never be finished in its original conception, but I would still like to present some of the technical design.

At the heart of the 2-layer board is the MAX10 FPGA (10M08SCE144C8G). However, the FPGA, being big and dumb, is at the mercy of a "system management controller" (SMC) represented by an ATSAMD21E15B-MU MCU. But it's not the only Atmel on the board; to emulate the Gambuino META, there is an ATSAMD21G18A-AU. For lack of better terminology, I will refer to it as the "application processor". There is no CPU on-board to emulate the Gamebuino classic, but there is a header that accepts an Arduino mini. Further we can find an CS4954 PAL/NTSC encoder, a 64kx16bit SRAM, and a bunch of I/O ports (PS/2, microSD) and programming headers.

The SMC has a number of responsibilties:

There were some compelling reasons to use a dedicated MCU rather than a soft CPU in the FPGA:

I got as far as running code on the SMC and displaying text on-screen, entered with an USB keyboard and rendered by the FPGA. However, it never got as far as the gaming part.

Recently I have been contemplating whether the board could be reused for a more interesting project: a lo-fi custom GPU. It would require swapping the RAM for a bigger one (128k is just enough for a single 320x200x16-bit framebuffer) and slapping on an FTDI USB<->FIFO interface in place of the application CPUs. The SMC would be probably preserved to handle the I2C.

Discussions